private Array readStructureData(Structure v, Section section, DataStorage dataStorage) throws IOException, InvalidRangeException { ByteBuffer bb = dataStorage.sdata.getData().asReadOnlyByteBuffer(); bb.order(dataStorage.bo); StructureMembers sm = v.makeStructureMembers(); ArrayStructureBB.setOffsets(sm); // StructureMembers members, int[] shape, ByteBuffer bbuffer, int offset ArrayStructureBB all = new ArrayStructureBB(sm, v.getShape(), bb, 0); return ArrayStructureBBsection.factory(all, section); }
/** * Read nested graphic symbolic structure data * * @param name Variable name, * @param m Structure mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedGraphicSymbolData(String name, StructureMembers.Member m, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested graphic symbolic structure data * * @param name Variable name, * @param m Structure mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedGraphicSymbolData(String name, StructureMembers.Member m, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested graphic symbolic structure data * * @param name Variable name, * @param m Structure mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedGraphicSymbolData(String name, StructureMembers.Member m, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested structure data * * @param name Variable name, * @param memberName mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedLinkedVectorData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readLinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedWindBarbData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readWindBarbData(name, bos, vinfo, null); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); //return asbb; }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedDataUnlinkVector(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws java.io.IOException, ucar.ma2.InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readUnlinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedDataUnlinkVector(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws java.io.IOException, ucar.ma2.InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readUnlinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedVectorArrowData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readVectorArrowData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested structure data * * @param name Variable name, * @param memberName mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedLinkedVectorData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readLinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedWindBarbData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readWindBarbData(name, bos, vinfo, null); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); //return asbb; }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedWindBarbData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readWindBarbData(name, bos, vinfo, null); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); //return asbb; }
/** * Read nested structure data * * @param name Variable name, * @param memberName mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedLinkedVectorData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readLinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedCircleStructData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedCircleStructData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedCircleStructData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedVectorArrowData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readVectorArrowData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedVectorArrowData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readVectorArrowData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedDataUnlinkVector(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws java.io.IOException, ucar.ma2.InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readUnlinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
@Ignore("Resolve issue before we enable this.") @Test public void writeStringMember() throws IOException, InvalidRangeException { File outFile = File.createTempFile("writeStringMember", ".nc4"); try { try (NetcdfFileWriter ncFileWriter = NetcdfFileWriter.createNew( NetcdfFileWriter.Version.netcdf4, outFile.getAbsolutePath())) { Structure struct = (Structure) ncFileWriter.addVariable(null, "struct", DataType.STRUCTURE, ""); ncFileWriter.addStructureMember(struct, "foo", DataType.STRING, null); ncFileWriter.create(); // Write data ArrayString.D2 fooArray = new ArrayString.D2(1, 1); fooArray.set(0, 0, "bar"); ArrayStructureMA arrayStruct = new ArrayStructureMA(struct.makeStructureMembers(), struct.getShape()); arrayStruct.setMemberArray("foo", fooArray); ncFileWriter.write(struct, arrayStruct); } // Read the file back in and make sure that what we wrote is what we're getting back. try (NetcdfFile ncFileIn = NetcdfFile.open(outFile.getAbsolutePath())) { Structure struct = (Structure) ncFileIn.findVariable(null, "struct"); Assert.assertEquals("bar", struct.readScalarString()); } } finally { outFile.delete(); } }