static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(convertDataType(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.Variable.Builder encodeVar(Variable var, int sizeToCache) throws IOException { NcStreamProto.Variable.Builder builder = NcStreamProto.Variable.newBuilder(); builder.setName(var.getShortName()); builder.setDataType(convertDataType(var.getDataType())); 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.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 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 NcStreamProto.Group.Builder encodeGroup(Group g, int sizeToCache) throws IOException { NcStreamProto.Group.Builder groupBuilder = NcStreamProto.Group.newBuilder(); groupBuilder.setName(g.getShortName()); for (Dimension dim : g.getDimensions()) groupBuilder.addDims(NcStream.encodeDim(dim)); for (Attribute att : g.getAttributes()) groupBuilder.addAtts(NcStream.encodeAtt(att)); for (EnumTypedef enumType : g.getEnumTypedefs()) groupBuilder.addEnumTypes(NcStream.encodeEnumTypedef(enumType)); for (Variable var : g.getVariables()) { if (var instanceof Structure) groupBuilder.addStructs(NcStream.encodeStructure((Structure) var)); else groupBuilder.addVars(NcStream.encodeVar(var, sizeToCache)); } for (Group ng : g.getGroups()) groupBuilder.addGroups(encodeGroup(ng, sizeToCache)); return groupBuilder; }
static NcStreamProto.Group.Builder encodeGroup(Group g, int sizeToCache) throws IOException { NcStreamProto.Group.Builder groupBuilder = NcStreamProto.Group.newBuilder(); groupBuilder.setName(g.getShortName()); for (Dimension dim : g.getDimensions()) groupBuilder.addDims(NcStream.encodeDim(dim)); for (Attribute att : g.getAttributes()) groupBuilder.addAtts(NcStream.encodeAtt(att)); for (EnumTypedef enumType : g.getEnumTypedefs()) groupBuilder.addEnumTypes(NcStream.encodeEnumTypedef(enumType)); for (Variable var : g.getVariables()) { if (var instanceof Structure) groupBuilder.addStructs(NcStream.encodeStructure((Structure) var)); else groupBuilder.addVars(NcStream.encodeVar(var, sizeToCache)); } for (Group ng : g.getGroups()) groupBuilder.addGroups(encodeGroup(ng, sizeToCache)); return groupBuilder; }
static NcStreamProto.Group.Builder encodeGroup(Group g, int sizeToCache) throws IOException { NcStreamProto.Group.Builder groupBuilder = NcStreamProto.Group.newBuilder(); groupBuilder.setName(g.getShortName()); for (Dimension dim : g.getDimensions()) groupBuilder.addDims(NcStream.encodeDim(dim)); for (Attribute att : g.getAttributes()) groupBuilder.addAtts(NcStream.encodeAtt(att)); for (EnumTypedef enumType : g.getEnumTypedefs()) groupBuilder.addEnumTypes(NcStream.encodeEnumTypedef(enumType)); for (Variable var : g.getVariables()) { if (var instanceof Structure) groupBuilder.addStructs(NcStream.encodeStructure((Structure) var)); else groupBuilder.addVars(NcStream.encodeVar(var, sizeToCache)); } for (Group ng : g.getGroups()) groupBuilder.addGroups(encodeGroup(ng, sizeToCache)); return groupBuilder; }