Class NcmlWriter

java.lang.Object
ucar.nc2.write.NcmlWriter

public class NcmlWriter extends Object
Helper class to write NcML.
See Also:
  • Field Details

    • writeNoVariablesPredicate

      public static final Predicate<? super Variable> writeNoVariablesPredicate
      Predicate that always returns false.
    • writeMetadataVariablesPredicate

      public static final Predicate<? super Variable> writeMetadataVariablesPredicate
      Predicate that returns true for variables that are metadata variables. For such variables, the data is not actually present in the file, so we must include it in the NcML. It could be synthesized (i.e. generated by an IOSP) or specified in a element of the input NcML.
    • writeCoordinateVariablesPredicate

      public static final Predicate<? super Variable> writeCoordinateVariablesPredicate
      Predicate that returns true for variables that are coordinate variables.
    • writeAllVariablesPredicate

      public static final Predicate<? super Variable> writeAllVariablesPredicate
      Predicate that always returns true.
  • Constructor Details

    • NcmlWriter

      public NcmlWriter(@Nullable org.jdom2.Namespace namespace, @Nullable org.jdom2.output.Format xmlFormat, @Nullable Predicate<? super Variable> writeValuesPredicate)
      Constructor allows you to set parameters. Any parameters may be null for default.
      Parameters:
      namespace - if null use ncmlDefaultNamespace.
      xmlFormat - if null, use Format.getPrettyFormat().setLineSeparator(LineSeparator.UNIX).
      writeValuesPredicate - if null, write a Variable's values if Variable.isMetadata(). This determines whether values should be written or not. The values will be contained within a <values> element. By default, the predicate will be writeMetadataVariablesPredicate. There could be data loss if the values of metadata variables aren't included in the NcML, so we recommend that you always use it, possibly as part of a compound predicate. For example, suppose you wanted to print the values of metadata and coordinate variables:
              Predicate compoundPred =
              Predicates.or(writeMetadataVariablesPredicate, writeCoordinateVariablesPredicate);
              ncmlWriter.setWriteVariablesPredicate(compoundPred);
              
    • NcmlWriter

      public NcmlWriter()
      Constructor with default values
  • Method Details

    • getNamespace

      public org.jdom2.Namespace getNamespace()
      Gets the XML namespace for the elements in the NcML. By default, it is ncmlDefaultNamespace.
      Returns:
      the XML namespace.
    • getXmlFormat

      public org.jdom2.output.Format getXmlFormat()
      Gets the object that encapsulates XML formatting options. By default, the format is pretty with UNIX line separators.
      Returns:
      the XML formatting options.
    • getWriteValuesPredicate

      public Predicate<? super Variable> getWriteValuesPredicate()
      Gets the predicate that will be applied to variables to determine wither their values should be written in addition to their metadata. The values will be contained within a <values> element.
      Returns:
      the predicate.
    • writeToString

      public String writeToString(org.jdom2.Element elem)
      Writes an NcML element to a string.
      Parameters:
      elem - an NcML element.
      Returns:
      the string that represents the NcML document.
    • writeToFile

      public void writeToFile(org.jdom2.Element elem, File outFile) throws IOException
      Writes an NcML element to an output file.
      Parameters:
      elem - an NcML element.
      outFile - the file to write the NcML document to.
      Throws:
      IOException - if there's any problem writing.
    • writeToStream

      public void writeToStream(org.jdom2.Element elem, OutputStream outStream) throws IOException
      Writes an NcML element to an output stream.
      Parameters:
      elem - an NcML element.
      outStream - the stream to write the NcML document to. Will be closed at end of the method.
      Throws:
      IOException - if there's any problem writing.
    • writeToWriter

      public void writeToWriter(org.jdom2.Element elem, Writer writer) throws IOException
      Writes an NcML element to a Writer.
      Parameters:
      elem - an NcML element.
      writer - the Writer to write the NcML document to. Will be closed at end of the method.
      Throws:
      IOException - if there's any problem writing.
    • makeExplicitNetcdfElement

      public org.jdom2.Element makeExplicitNetcdfElement(NetcdfFile ncFile, @Nullable String location)
    • makeNetcdfElement

      public org.jdom2.Element makeNetcdfElement(NetcdfFile ncFile, @Nullable String location)
    • makeGroupElement

      public org.jdom2.Element makeGroupElement(Group group)
    • makeEnumTypedefElement

      public org.jdom2.Element makeEnumTypedefElement(EnumTypedef etd)
    • makeDimensionElement

      public org.jdom2.Element makeDimensionElement(Dimension dim) throws IllegalArgumentException
      Throws:
      IllegalArgumentException
    • makeVariableElement

      public org.jdom2.Element makeVariableElement(Variable var, boolean showValues)
    • makeAttributeElement

      public org.jdom2.Element makeAttributeElement(Attribute attribute)
    • makeValuesElement

      public org.jdom2.Element makeValuesElement(Variable variable, boolean allowRegular) throws IOException
      Creates a <values> element from the variable's data.
      Parameters:
      variable - the variable to read values from
      allowRegular - true if regular values should be represented with start, increment, and npts attributes instead of space-separated Element text. Has no effect if the data isn't regular.
      Returns:
      the <values> element.
      Throws:
      IOException - if there was an I/O error when reading the variable's data.