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(); }
static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(encodeDataType(s.getDataType())); for (Dimension dim : s.getDimensions()) builder.addShape(encodeDim(dim)); for (Attribute att : s.getAttributes()) builder.addAtts(encodeAtt(att)); for (Variable v : s.getVariables()) { if (v instanceof Structure) builder.addStructs(NcStream.encodeStructure((Structure) v)); else builder.addVars(NcStream.encodeVar(v, -1)); } return builder; }
static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(encodeDataType(s.getDataType())); for (Dimension dim : s.getDimensions()) builder.addShape(encodeDim(dim)); for (Attribute att : s.getAttributes()) builder.addAtts(encodeAtt(att)); for (Variable v : s.getVariables()) { if (v instanceof Structure) builder.addStructs(NcStream.encodeStructure((Structure) v)); else builder.addVars(NcStream.encodeVar(v, -1)); } return builder; }
static public PointStreamProto.PointFeatureCollection encodePointFeatureCollection(String name, String timeUnitString, PointFeature pf) throws IOException { PointStreamProto.PointFeatureCollection.Builder builder = PointStreamProto.PointFeatureCollection.newBuilder(); if (name == null) System.out.printf("HEY null pointstream name%n"); builder.setName(name); builder.setTimeUnit(timeUnitString); StructureData sdata = pf.getData(); StructureMembers sm = sdata.getStructureMembers(); for (StructureMembers.Member m : sm.getMembers()) { PointStreamProto.Member.Builder mbuilder = PointStreamProto.Member.newBuilder(); mbuilder.setName(m.getName()); if (null != m.getDescription()) mbuilder.setDesc(m.getDescription()); if (null != m.getUnitsString()) mbuilder.setUnits(m.getUnitsString()); mbuilder.setDataType(NcStream.encodeDataType(m.getDataType())); mbuilder.setSection(NcStream.encodeSection(new ucar.ma2.Section(m.getShape()))); builder.addMembers(mbuilder); } return builder.build(); }
static NcStreamProto.Variable.Builder encodeVar(Variable var, int sizeToCache) throws IOException { NcStreamProto.Variable.Builder builder = NcStreamProto.Variable.newBuilder(); builder.setName(var.getShortName()); builder.setDataType(encodeDataType(var.getDataType())); if (var.isUnsigned()) builder.setUnsigned(true); if (var.getDataType().isEnum()) { EnumTypedef enumType = var.getEnumTypedef(); if (enumType != null) builder.setEnumType(enumType.getShortName()); } for (Dimension dim : var.getDimensions()) { builder.addShape(encodeDim(dim)); } for (Attribute att : var.getAttributes()) { builder.addAtts(encodeAtt(att)); } // put small amounts of data in header "immediate mode" if (var.isCaching() && var.getDataType().isNumeric()) { if (var.isCoordinateVariable() || var.getSize() * var.getElementSize() < sizeToCache) { Array data = var.read(); ByteBuffer bb = data.getDataAsByteBuffer(); builder.setData(ByteString.copyFrom(bb.array())); } } return builder; }
static NcStreamProto.Variable.Builder encodeVar(Variable var, int sizeToCache) throws IOException { NcStreamProto.Variable.Builder builder = NcStreamProto.Variable.newBuilder(); builder.setName(var.getShortName()); builder.setDataType(encodeDataType(var.getDataType())); if (var.isUnsigned()) builder.setUnsigned(true); if (var.getDataType().isEnum()) { EnumTypedef enumType = var.getEnumTypedef(); if (enumType != null) builder.setEnumType(enumType.getShortName()); } for (Dimension dim : var.getDimensions()) { builder.addShape(encodeDim(dim)); } for (Attribute att : var.getAttributes()) { builder.addAtts(encodeAtt(att)); } // put small amounts of data in header "immediate mode" if (var.isCaching() && var.getDataType().isNumeric()) { if (var.isCoordinateVariable() || var.getSize() * var.getElementSize() < sizeToCache) { Array data = var.read(); ByteBuffer bb = data.getDataAsByteBuffer(); builder.setData(ByteString.copyFrom(bb.array())); } } return builder; }
static public PointStreamProto.PointFeatureCollection encodePointFeatureCollection(String name, PointFeature pf) throws IOException { PointStreamProto.PointFeatureCollection.Builder builder = PointStreamProto.PointFeatureCollection.newBuilder(); if (name == null) System.out.printf("HEY null pointstream name%n"); builder.setName(name); builder.setTimeUnit(pf.getTimeUnit().getUnitsString()); StructureData sdata = pf.getData(); StructureMembers sm = sdata.getStructureMembers(); for (StructureMembers.Member m : sm.getMembers()) { PointStreamProto.Member.Builder mbuilder = PointStreamProto.Member.newBuilder(); mbuilder.setName(m.getName()); if (null != m.getDescription()) mbuilder.setDesc(m.getDescription()); if (null != m.getUnitsString()) mbuilder.setUnits(m.getUnitsString()); mbuilder.setDataType(NcStream.encodeDataType(m.getDataType())); mbuilder.setSection(NcStream.encodeSection(new ucar.ma2.Section(m.getShape()))); builder.addMembers(mbuilder); } return builder.build(); }