1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290
|
/*
* Copyright 2007 - 2018 ETH Zuerich, CISD and SIS.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.hdf5;
import java.util.BitSet;
import java.util.Date;
import hdf.hdf5lib.exceptions.HDF5JavaException;
/**
* A HDF5 writer which contains only the basic methods. If you feel overwhelmed with all the methods
* of {@link IHDF5Writer}, then assign the writer to a {@link IHDF5SimpleWriter} variable and let
* the code completion of your IDE help you find the method you are looking for.
* <p>
* Usage:
*
* <pre>
* float[] f = new float[100];
* ...
* IHDF5SimpleWriter writer = HDF5FactoryProvider.get().open(new File("test.h5"));
* writer.writeFloatArray("/some/path/dataset", f);
* writer.close();
* </pre>
*
* @author Bernd Rinn
*/
public interface IHDF5SimpleWriter extends IHDF5SimpleReader
{
/**
* Removes an object from the file. If there is more than one link to the object, only the
* specified link will be removed.
*/
public void delete(String objectPath);
/**
* Writes out a <code>boolean</code> value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value of the data set.
*/
public void writeBoolean(final String objectPath, final boolean value);
/**
* Writes out a bit field ((which can be considered the equivalent to a boolean array of rank
* 1), provided as a Java {@link BitSet}.
* <p>
* Note that the storage form of the bit array is a <code>long[]</code>. However, it is marked
* in HDF5 to be interpreted bit-wise. Thus a data set written by this method cannot be read
* back by {@link #readLongArray(String)} but will throw a
* {@link hdf.hdf5lib.exceptions.HDF5DatatypeInterfaceException}.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeBitField(final String objectPath, final BitSet data);
/**
* Writes out a <code>byte</code> array (of rank 1). Uses a compact storage layout. Should only
* be used for small data sets.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeByteArray(final String objectPath, final byte[] data);
/**
* Writes out a <code>int</code> value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value to write.
*/
public void writeInt(final String objectPath, final int value);
/**
* Writes out a <code>int</code> array (of rank 1).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeIntArray(final String objectPath, final int[] data);
/**
* Writes out a <code>int</code> matrix (array of rank 2).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>. All columns need to have the
* same length.
*/
public void writeIntMatrix(final String objectPath, final int[][] data);
/**
* Writes out a <code>long</code> value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value to write.
*/
public void writeLong(final String objectPath, final long value);
/**
* Writes out a <code>long</code> array (of rank 1).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeLongArray(final String objectPath, final long[] data);
/**
* Writes out a <code>long</code> matrix (array of rank 2).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>. All columns need to have the
* same length.
*/
public void writeLongMatrix(final String objectPath, final long[][] data);
/**
* Writes out a <code>float</code> value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value to write.
*/
public void writeFloat(final String objectPath, final float value);
/**
* Writes out a <code>float</code> array (of rank 1).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeFloatArray(final String objectPath, final float[] data);
/**
* Writes out a <code>float</code> matrix (array of rank 2).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>. All columns need to have the
* same length.
*/
public void writeFloatMatrix(final String objectPath, final float[][] data);
/**
* Writes out a <code>double</code> value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value to write.
*/
public void writeDouble(final String objectPath, final double value);
/**
* Writes out a <code>double</code> array (of rank 1).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeDoubleArray(final String objectPath, final double[] data);
/**
* Writes out a <code>double</code> matrix (array of rank 2).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>. All columns need to have the
* same length.
*/
public void writeDoubleMatrix(final String objectPath, final double[][] data);
/**
* Writes out a time stamp value provided as a {@link Date}. The data set will be tagged as type
* variant {@link HDF5DataTypeVariant#TIMESTAMP_MILLISECONDS_SINCE_START_OF_THE_EPOCH}.
* <p>
* <em>Note: This is a convenience method for <code></code> </em>
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param date The date to write.
*/
public void writeDate(final String objectPath, final Date date);
/**
* Writes out a {@link Date} array (of rank 1).
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param dates The dates to write.
*/
public void writeDateArray(final String objectPath, final Date[] dates);
/**
* Writes out a time duration value.
* <p>
* <em>Note: Time durations are stored as <code>long[]</code> arrays and tagged as the according
* type variant.</em>
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param timeDuration The duration of time to write.
*/
public void writeTimeDuration(final String objectPath, final HDF5TimeDuration timeDuration);
/**
* Writes out a time duration array (of rank 1).
* <p>
* <em>Note: Time durations are stored as <code>long[]</code> arrays and tagged as the according
* type variant.</em>
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param timeDurations The time durations to write.
*/
public void writeTimeDurationArray(final String objectPath,
final HDF5TimeDurationArray timeDurations);
/**
* Writes out a <code>String</code> with a fixed maximal length.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeString(final String objectPath, final String data);
/**
* Writes out a <code>String</code> array (of rank 1). Each element of the array will have a
* fixed maximal length which is given by the longest element.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write. Must not be <code>null</code>.
*/
public void writeStringArray(final String objectPath, final String[] data);
/**
* Writes out a compound value. The type is inferred based on the values.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The value of the data set. May be a pojo (Data Transfer Object), a
* {@link HDF5CompoundDataMap}, {@link HDF5CompoundDataList} or <code>Object[]</code>
* .
* @see CompoundType
* @see CompoundElement
*/
public <T> void writeCompound(String objectPath, T data);
/**
* Writes out an array (of rank 1) of compound values. The type is inferred based on the values.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The value of the data set. May be a pojo (Data Transfer Object), a
* {@link HDF5CompoundDataMap}, {@link HDF5CompoundDataList} or <code>Object[]</code>
* .
* @see CompoundType
* @see CompoundElement
*/
public <T> void writeCompoundArray(final String objectPath, final T[] data);
/**
* Writes out an enum value.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param value The value of the data set.
* @throws HDF5JavaException If the enum type of <var>value</var> is not a type of this file.
*/
public <T extends Enum<T>> void writeEnum(final String objectPath, final Enum<T> value) throws HDF5JavaException;
/**
* Writes out an array of enum values.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param data The data to write.
*/
public <T extends Enum<T>> void writeEnumArray(String objectPath, Enum<T>[] data);
/**
* Writes out an array of enum values.
*
* @param objectPath The name (including path information) of the data set object in the file.
* @param options The allowed values of the enumeration type.
* @param data The data to write.
*/
public void writeEnumArray(String objectPath, String[] options, String[] data);
}
|