private int addParents(StringBuilder buff, Variable s, List<Range> section, int start) { Structure parent = s.getParentStructure(); if (parent != null) { start = addParents(buff, parent, section, start); buff.append("."); } List<Range> subSection = section.subList(start, start + s.getRank()); buff.append(getDODSConstraintName(s)); if (!s.isVariableLength()) // have to get the whole thing for a sequence !! makeSelector(buff, subSection); return start + s.getRank(); }
private static List<Range> makeSpec(StringBuilder sb, Variable v, List<Range> orgRanges) throws InvalidRangeException { if (v.isMemberOfStructure()) { orgRanges = makeSpec(sb, v.getParentStructure(), orgRanges); sb.append('.'); } List<Range> ranges = (orgRanges == null) ? v.getRanges() : orgRanges; sb.append(v.isMemberOfStructure() ? NetcdfFile.makeValidSectionSpecName(v.getShortName()) : NetcdfFile.makeFullNameSectionSpec(v)); if (!v.isVariableLength() && !v.isScalar()) { // sequences cant be sectioned sb.append('('); for (int count=0; count<v.getRank(); count++) { Range r = ranges.get(count); if (r == null) r = new Range( 0, v.getDimension(count).getLength()); if (count>0) sb.append(", "); sb.append(r.first()); sb.append(':'); sb.append(r.last()); sb.append(':'); sb.append(r.stride()); } sb.append(')'); } return (orgRanges == null) ? null : ranges.subList(v.getRank(), ranges.size()); }
private static List<Range> makeSpec(StringBuilder sb, Variable v, List<Range> orgRanges) throws InvalidRangeException { if (v.isMemberOfStructure()) { orgRanges = makeSpec(sb, v.getParentStructure(), orgRanges); sb.append('.'); } List<Range> ranges = (orgRanges == null) ? v.getRanges() : orgRanges; sb.append(v.isMemberOfStructure() ? NetcdfFile.makeValidSectionSpecName(v.getShortName()) : NetcdfFile.makeFullNameSectionSpec(v)); if (!v.isVariableLength() && !v.isScalar()) { // sequences cant be sectioned sb.append('('); for (int count=0; count<v.getRank(); count++) { Range r = ranges.get(count); if (r == null) r = new Range( v.getDimension(count).getLength()); if (count>0) sb.append(", "); sb.append(r); } sb.append(')'); } return (orgRanges == null) ? null : ranges.subList(v.getRank(), ranges.size()); }
private static List<Range> makeSpec(StringBuilder sb, Variable v, List<Range> orgRanges) throws InvalidRangeException { if (v.isMemberOfStructure()) { orgRanges = makeSpec(sb, v.getParentStructure(), orgRanges); sb.append('.'); } List<Range> ranges = (orgRanges == null) ? v.getRanges() : orgRanges; sb.append(v.isMemberOfStructure() ? NetcdfFile.makeValidSectionSpecName(v.getShortName()) : NetcdfFile.makeFullNameSectionSpec(v)); if (!v.isVariableLength() && !v.isScalar()) { // sequences cant be sectioned sb.append('('); for (int count=0; count<v.getRank(); count++) { Range r = ranges.get(count); if (r == null) r = new Range( 0, v.getDimension(count).getLength()); if (count>0) sb.append(", "); sb.append(r.first()); sb.append(':'); sb.append(r.last()); sb.append(':'); sb.append(r.stride()); } sb.append(')'); } return (orgRanges == null) ? null : ranges.subList(v.getRank(), ranges.size()); }
/** * Instances which have same content are equal. */ public boolean equals(Object oo) { if (this == oo) return true; if (!(oo instanceof Variable)) return false; Variable o = (Variable) oo; if (!getShortName().equals(o.getShortName())) return false; if (isScalar() != o.isScalar()) return false; if (getDataType() != o.getDataType()) return false; if (!getParentGroup().equals(o.getParentGroup())) return false; if ((getParentStructure() != null) && !getParentStructure().equals(o.getParentStructure())) return false; if (isVariableLength() != o.isVariableLength()) return false; if (dimensions.size() != o.getDimensions().size()) return false; for (int i=0; i<dimensions.size(); i++) if (!getDimension(i).equals(o.getDimension(i))) return false; return true; }
/** * Instances which have same content are equal. */ public boolean equals(Object oo) { if (this == oo) return true; if (!(oo instanceof Variable)) return false; Variable o = (Variable) oo; if (!getShortName().equals(o.getShortName())) return false; if (isScalar() != o.isScalar()) return false; if (getDataType() != o.getDataType()) return false; if (!getParentGroup().equals(o.getParentGroup())) return false; if ((getParentStructure() != null) && !getParentStructure().equals(o.getParentStructure())) return false; if (isVariableLength() != o.isVariableLength()) return false; if (dimensions.size() != o.getDimensions().size()) return false; for (int i = 0; i < dimensions.size(); i++) if (!getDimension(i).equals(o.getDimension(i))) return false; return true; }
if (!v.isVariableLength()) { List<Range> dodsSection = section.getRanges(); if ((v.getDataType() == DataType.CHAR)) { // CHAR is mapped to DString
/** * Instances which have same content are equal. */ public boolean equals(Object oo) { if (this == oo) return true; if (!(oo instanceof Variable)) return false; Variable o = (Variable) oo; if (!getShortName().equals(o.getShortName())) return false; if (isScalar() != o.isScalar()) return false; if (getDataType() != o.getDataType()) return false; if (!getParentGroup().equals(o.getParentGroup())) return false; if ((getParentStructure() != null) && !getParentStructure().equals(o.getParentStructure())) return false; if (isVariableLength() != o.isVariableLength()) return false; if (dimensions.size() != o.getDimensions().size()) return false; for (int i = 0; i < dimensions.size(); i++) if (!getDimension(i).equals(o.getDimension(i))) return false; return true; }
public long sendData2(Variable v, Section section, OutputStream out, NcStreamCompression compress) throws IOException, InvalidRangeException { if (show) System.out.printf(" %s section=%s%n", v.getFullName(), section); boolean isVlen = v.isVariableLength(); // && v.getRank() > 1; if (isVlen) v.read(section); NcStreamDataCol encoder = new NcStreamDataCol(); NcStreamProto.DataCol dataProto = encoder.encodeData2(v.getFullName(), isVlen, section, v.read(section)); // LOOK trap error, write error message ?? // dataProto.writeDelimitedTo(out); long size = 0; size += writeBytes(out, NcStream.MAGIC_DATA2); // data version 3 byte[] datab = dataProto.toByteArray(); size += NcStream.writeVInt(out, datab.length); // dataProto len size += writeBytes(out, datab); // dataProto return size; }
if ((v.getDataType() != DataType.STRING) && (v.getDataType() != DataType.OPAQUE) && !v.isVariableLength())
if ((v.getDataType() != DataType.STRING) && (v.getDataType() != DataType.OPAQUE) && !v.isVariableLength())
if ((v.getDataType() != DataType.STRING) && (v.getDataType() != DataType.OPAQUE) && !v.isVariableLength())
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
static NcStreamProto.Data encodeDataProto(Variable var, Section section, boolean deflate, int uncompressedLength) { NcStreamProto.Data.Builder builder = NcStreamProto.Data.newBuilder(); builder.setVarName(var.getFullNameEscaped()); builder.setDataType(encodeDataType(var.getDataType())); builder.setSection(encodeSection(section)); if (deflate) { builder.setCompress(NcStreamProto.Compress.DEFLATE); builder.setUncompressedSize(uncompressedLength); } if (var.isVariableLength()) builder.setVdata(true); builder.setVersion(2); return builder.build(); }
static NcStreamProto.Data encodeDataProto(Variable var, Section section, boolean deflate, int uncompressedLength) { NcStreamProto.Data.Builder builder = NcStreamProto.Data.newBuilder(); builder.setVarName(var.getFullNameEscaped()); builder.setDataType(encodeDataType(var.getDataType())); builder.setSection(encodeSection(section)); if (deflate) { builder.setCompress(NcStreamProto.Compress.DEFLATE); builder.setUncompressedSize(uncompressedLength); } if (var.isVariableLength()) builder.setVdata(true); builder.setVersion(2); return builder.build(); }
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
static NcStreamProto.Data encodeDataProto(Variable var, Section section, NcStreamProto.Compress compressionType, ByteOrder bo, int uncompressedLength) { NcStreamProto.Data.Builder builder = NcStreamProto.Data.newBuilder(); builder.setVarName(var.getFullNameEscaped()); builder.setDataType(convertDataType(var.getDataType())); builder.setSection(encodeSection(section)); builder.setCompress(compressionType); if (compressionType != NcStreamProto.Compress.NONE) { builder.setUncompressedSize(uncompressedLength); } builder.setVdata(var.isVariableLength()); builder.setBigend(bo == ByteOrder.BIG_ENDIAN); builder.setVersion(ncstream_data_version); return builder.build(); }
assert v instanceof DODSStructure; assert v.getRank() == 1; assert v.isVariableLength();
@org.junit.Test public void testNestedSequenceParent() throws IOException { DODSNetcdfFile dodsfile = TestDODSRead.open("NestedSeq"); Variable v = dodsfile.findVariable("person1"); assert null != v; assert v instanceof Structure; assert v instanceof DODSStructure; assert v.getRank() == 1; assert v.isVariableLength(); Array a = v.read(); // DODSNetcdfFile.readFromServer = <person1> assert a.getRank() == 1; assert a.getSize() == 5 : a.getSize(); //NCdump.printArray(a, "person",System.out,null); int count = 0; int fib = 1, prev = 1; IndexIterator iter = a.getIndexIterator(); while (iter.hasNext()) { StructureData data = (StructureData) iter.next(); StructureMembers.Member stuff = data.findMember("stuff"); assert stuff != null; assert data.findMember("age") != null; int agev = data.getScalarInt("age"); assert agev == fib : fib +"!="+agev; count++; int hold = fib; fib += prev; prev = hold; } }