diff options
Diffstat (limited to 'java/examples/datatypes/H5Ex_T_Compound.java')
-rw-r--r-- | java/examples/datatypes/H5Ex_T_Compound.java | 152 |
1 files changed, 79 insertions, 73 deletions
diff --git a/java/examples/datatypes/H5Ex_T_Compound.java b/java/examples/datatypes/H5Ex_T_Compound.java index 8c83ebb..a78d0e3 100644 --- a/java/examples/datatypes/H5Ex_T_Compound.java +++ b/java/examples/datatypes/H5Ex_T_Compound.java @@ -20,49 +20,52 @@ package examples.datatypes; -import hdf.hdf5lib.H5; -import hdf.hdf5lib.HDF5Constants; - import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.Charset; +import hdf.hdf5lib.H5; +import hdf.hdf5lib.HDF5Constants; + public class H5Ex_T_Compound { - private static String FILENAME = "H5Ex_T_Compound.h5"; - private static String DATASETNAME = "DS1"; - private static final int DIM0 = 4; - private static final int RANK = 1; - protected static final int INTEGERSIZE = 4; - protected static final int DOUBLESIZE = 8; + private static String FILENAME = "H5Ex_T_Compound.h5"; + private static String DATASETNAME = "DS1"; + private static final int DIM0 = 4; + private static final int RANK = 1; + protected static final int INTEGERSIZE = 4; + protected static final int DOUBLESIZE = 8; protected final static int MAXSTRINGSIZE = 80; static class Sensor_Datatype { static int numberMembers = 4; - static int[] memberDims = { 1, 1, 1, 1 }; + static int[] memberDims = {1, 1, 1, 1}; - static String[] memberNames = { "Serial number", "Location", "Temperature (F)", "Pressure (inHg)" }; - static long[] memberMemTypes = { HDF5Constants.H5T_NATIVE_INT, HDF5Constants.H5T_C_S1, - HDF5Constants.H5T_NATIVE_DOUBLE, HDF5Constants.H5T_NATIVE_DOUBLE }; - static long[] memberFileTypes = { HDF5Constants.H5T_STD_I32BE, HDF5Constants.H5T_C_S1, - HDF5Constants.H5T_IEEE_F64BE, HDF5Constants.H5T_IEEE_F64BE }; - static int[] memberStorage = { INTEGERSIZE, MAXSTRINGSIZE, DOUBLESIZE, DOUBLESIZE }; + static String[] memberNames = {"Serial number", "Location", "Temperature (F)", "Pressure (inHg)"}; + static long[] memberMemTypes = {HDF5Constants.H5T_NATIVE_INT, HDF5Constants.H5T_C_S1, + HDF5Constants.H5T_NATIVE_DOUBLE, HDF5Constants.H5T_NATIVE_DOUBLE}; + static long[] memberFileTypes = {HDF5Constants.H5T_STD_I32BE, HDF5Constants.H5T_C_S1, + HDF5Constants.H5T_IEEE_F64BE, HDF5Constants.H5T_IEEE_F64BE}; + static int[] memberStorage = {INTEGERSIZE, MAXSTRINGSIZE, DOUBLESIZE, DOUBLESIZE}; // Data size is the storage size for the members. - static long getTotalDataSize() { + static long getTotalDataSize() + { long data_size = 0; for (int indx = 0; indx < numberMembers; indx++) data_size += memberStorage[indx] * memberDims[indx]; return DIM0 * data_size; } - static long getDataSize() { + static long getDataSize() + { long data_size = 0; for (int indx = 0; indx < numberMembers; indx++) data_size += memberStorage[indx] * memberDims[indx]; return data_size; } - static int getOffset(int memberItem) { + static int getOffset(int memberItem) + { int data_offset = 0; for (int indx = 0; indx < memberItem; indx++) data_offset += memberStorage[indx]; @@ -76,60 +79,63 @@ public class H5Ex_T_Compound { public double temperature; public double pressure; - Sensor(int serial_no, String location, double temperature, double pressure) { - this.serial_no = serial_no; - this.location = location; + Sensor(int serial_no, String location, double temperature, double pressure) + { + this.serial_no = serial_no; + this.location = location; this.temperature = temperature; - this.pressure = pressure; + this.pressure = pressure; } - Sensor(ByteBuffer databuf, int dbposition) { - readBuffer(databuf, dbposition); - } + Sensor(ByteBuffer databuf, int dbposition) { readBuffer(databuf, dbposition); } - void writeBuffer(ByteBuffer databuf, int dbposition) { + void writeBuffer(ByteBuffer databuf, int dbposition) + { databuf.putInt(dbposition + Sensor_Datatype.getOffset(0), serial_no); byte[] temp_str = location.getBytes(Charset.forName("UTF-8")); - int arraylen = (temp_str.length > MAXSTRINGSIZE) ? MAXSTRINGSIZE : temp_str.length; + int arraylen = (temp_str.length > MAXSTRINGSIZE) ? MAXSTRINGSIZE : temp_str.length; for (int ndx = 0; ndx < arraylen; ndx++) databuf.put(dbposition + Sensor_Datatype.getOffset(1) + ndx, temp_str[ndx]); for (int ndx = arraylen; ndx < MAXSTRINGSIZE; ndx++) - databuf.put(dbposition + Sensor_Datatype.getOffset(1) + arraylen, (byte) 0); + databuf.put(dbposition + Sensor_Datatype.getOffset(1) + arraylen, (byte)0); databuf.putDouble(dbposition + Sensor_Datatype.getOffset(2), temperature); databuf.putDouble(dbposition + Sensor_Datatype.getOffset(3), pressure); } - void readBuffer(ByteBuffer databuf, int dbposition) { - this.serial_no = databuf.getInt(dbposition + Sensor_Datatype.getOffset(0)); + void readBuffer(ByteBuffer databuf, int dbposition) + { + this.serial_no = databuf.getInt(dbposition + Sensor_Datatype.getOffset(0)); ByteBuffer stringbuf = databuf.duplicate(); stringbuf.position(dbposition + Sensor_Datatype.getOffset(1)); stringbuf.limit(dbposition + Sensor_Datatype.getOffset(1) + MAXSTRINGSIZE); byte[] bytearr = new byte[stringbuf.remaining()]; stringbuf.get(bytearr); - this.location = new String(bytearr, Charset.forName("UTF-8")).trim(); + this.location = new String(bytearr, Charset.forName("UTF-8")).trim(); this.temperature = databuf.getDouble(dbposition + Sensor_Datatype.getOffset(2)); - this.pressure = databuf.getDouble(dbposition + Sensor_Datatype.getOffset(3)); + this.pressure = databuf.getDouble(dbposition + Sensor_Datatype.getOffset(3)); } @Override - public String toString() { - return String.format("Serial number : " + serial_no + "%n" + - "Location : " + location + "%n" + - "Temperature (F) : " + temperature + "%n" + - "Pressure (inHg) : " + pressure + "%n"); + public String toString() + { + return String.format("Serial number : " + serial_no + "%n" + + "Location : " + location + "%n" + + "Temperature (F) : " + temperature + "%n" + + "Pressure (inHg) : " + pressure + "%n"); } } - private static void CreateDataset() { - long file_id = HDF5Constants.H5I_INVALID_HID; - long strtype_id = HDF5Constants.H5I_INVALID_HID; - long memtype_id = HDF5Constants.H5I_INVALID_HID; - long filetype_id = HDF5Constants.H5I_INVALID_HID; - long dataspace_id = HDF5Constants.H5I_INVALID_HID; - long dataset_id = HDF5Constants.H5I_INVALID_HID; - long[] dims = { DIM0 }; + private static void CreateDataset() + { + long file_id = HDF5Constants.H5I_INVALID_HID; + long strtype_id = HDF5Constants.H5I_INVALID_HID; + long memtype_id = HDF5Constants.H5I_INVALID_HID; + long filetype_id = HDF5Constants.H5I_INVALID_HID; + long dataspace_id = HDF5Constants.H5I_INVALID_HID; + long dataset_id = HDF5Constants.H5I_INVALID_HID; + long[] dims = {DIM0}; Sensor[] object_data = new Sensor[DIM0]; - byte[] dset_data = null; + byte[] dset_data = null; // Initialize data. object_data[0] = new Sensor(1153, new String("Exterior (static)"), 53.23, 24.57); @@ -140,7 +146,7 @@ public class H5Ex_T_Compound { // Create a new file using default properties. try { file_id = H5.H5Fcreate(FILENAME, HDF5Constants.H5F_ACC_TRUNC, HDF5Constants.H5P_DEFAULT, - HDF5Constants.H5P_DEFAULT); + HDF5Constants.H5P_DEFAULT); } catch (Exception e) { e.printStackTrace(); @@ -164,8 +170,8 @@ public class H5Ex_T_Compound { long type_id = Sensor_Datatype.memberMemTypes[indx]; if (type_id == HDF5Constants.H5T_C_S1) type_id = strtype_id; - H5.H5Tinsert(memtype_id, Sensor_Datatype.memberNames[indx], Sensor_Datatype.getOffset(indx), - type_id); + H5.H5Tinsert(memtype_id, Sensor_Datatype.memberNames[indx], + Sensor_Datatype.getOffset(indx), type_id); } } } @@ -184,8 +190,8 @@ public class H5Ex_T_Compound { long type_id = Sensor_Datatype.memberFileTypes[indx]; if (type_id == HDF5Constants.H5T_C_S1) type_id = strtype_id; - H5.H5Tinsert(filetype_id, Sensor_Datatype.memberNames[indx], Sensor_Datatype.getOffset(indx), - type_id); + H5.H5Tinsert(filetype_id, Sensor_Datatype.memberNames[indx], + Sensor_Datatype.getOffset(indx), type_id); } } } @@ -205,8 +211,9 @@ public class H5Ex_T_Compound { // Create the dataset. try { if ((file_id >= 0) && (dataspace_id >= 0) && (filetype_id >= 0)) - dataset_id = H5.H5Dcreate(file_id, DATASETNAME, filetype_id, dataspace_id, HDF5Constants.H5P_DEFAULT, - HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT); + dataset_id = + H5.H5Dcreate(file_id, DATASETNAME, filetype_id, dataspace_id, HDF5Constants.H5P_DEFAULT, + HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT); } catch (Exception e) { e.printStackTrace(); @@ -214,16 +221,16 @@ public class H5Ex_T_Compound { // Write the compound data to the dataset. // allocate memory for read buffer. - dset_data = new byte[(int)dims[0] * (int)Sensor_Datatype.getDataSize()]; + dset_data = new byte[(int)dims[0] * (int)Sensor_Datatype.getDataSize()]; ByteBuffer outBuf = ByteBuffer.wrap(dset_data); outBuf.order(ByteOrder.nativeOrder()); - for (int indx = 0; indx < (int) dims[0]; indx++) { + for (int indx = 0; indx < (int)dims[0]; indx++) { object_data[indx].writeBuffer(outBuf, indx * (int)Sensor_Datatype.getDataSize()); } try { if ((dataset_id >= 0) && (memtype_id >= 0)) H5.H5Dwrite(dataset_id, memtype_id, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, - HDF5Constants.H5P_DEFAULT, dset_data); + HDF5Constants.H5P_DEFAULT, dset_data); } catch (Exception e) { e.printStackTrace(); @@ -281,16 +288,16 @@ public class H5Ex_T_Compound { catch (Exception e) { e.printStackTrace(); } - } - private static void ReadDataset() { - long file_id = HDF5Constants.H5I_INVALID_HID; - long strtype_id = HDF5Constants.H5I_INVALID_HID; - long memtype_id = HDF5Constants.H5I_INVALID_HID; + private static void ReadDataset() + { + long file_id = HDF5Constants.H5I_INVALID_HID; + long strtype_id = HDF5Constants.H5I_INVALID_HID; + long memtype_id = HDF5Constants.H5I_INVALID_HID; long dataspace_id = HDF5Constants.H5I_INVALID_HID; - long dataset_id = HDF5Constants.H5I_INVALID_HID; - long[] dims = { DIM0 }; + long dataset_id = HDF5Constants.H5I_INVALID_HID; + long[] dims = {DIM0}; Sensor[] object_data2; byte[] dset_data; @@ -346,8 +353,8 @@ public class H5Ex_T_Compound { long type_id = Sensor_Datatype.memberMemTypes[indx]; if (type_id == HDF5Constants.H5T_C_S1) type_id = strtype_id; - H5.H5Tinsert(memtype_id, Sensor_Datatype.memberNames[indx], Sensor_Datatype.getOffset(indx), - type_id); + H5.H5Tinsert(memtype_id, Sensor_Datatype.memberNames[indx], + Sensor_Datatype.getOffset(indx), type_id); } } } @@ -356,19 +363,19 @@ public class H5Ex_T_Compound { } // allocate memory for read buffer. - dset_data = new byte[(int) dims[0] * (int)Sensor_Datatype.getDataSize()]; + dset_data = new byte[(int)dims[0] * (int)Sensor_Datatype.getDataSize()]; - object_data2 = new Sensor[(int) dims[0]]; + object_data2 = new Sensor[(int)dims[0]]; // Read data. try { if ((dataset_id >= 0) && (memtype_id >= 0)) H5.H5Dread(dataset_id, memtype_id, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, - HDF5Constants.H5P_DEFAULT, dset_data); + HDF5Constants.H5P_DEFAULT, dset_data); ByteBuffer inBuf = ByteBuffer.wrap(dset_data); inBuf.order(ByteOrder.nativeOrder()); - for (int indx = 0; indx < (int) dims[0]; indx++) { + for (int indx = 0; indx < (int)dims[0]; indx++) { object_data2[indx] = new Sensor(inBuf, indx * (int)Sensor_Datatype.getDataSize()); } } @@ -425,10 +432,10 @@ public class H5Ex_T_Compound { catch (Exception e) { e.printStackTrace(); } - } - public static void main(String[] args) { + public static void main(String[] args) + { H5Ex_T_Compound.CreateDataset(); // Now we begin the read section of this example. Here we assume // the dataset and array have the same name and rank, but can have @@ -436,5 +443,4 @@ public class H5Ex_T_Compound { // data using malloc(). H5Ex_T_Compound.ReadDataset(); } - } |