cdm/src/main/java/ucar/nc2/ft/fmrc/GridDatasetInv.java
public static GridDatasetInv open(MCollection cm, MFile mfile, Element ncml) throws IOException {
    // do we already have it ?
    byte[] xmlBytes = ((CollectionManagerAbstract)cm).getMetadata(mfile, "fmrInv.xml");  // LOOK should we keep this functionality ??
    if (xmlBytes != null) {
      if (logger.isDebugEnabled()) logger.debug(" got xmlFile in cache ="+ mfile.getPath()+ " size = "+xmlBytes.length);
      if (xmlBytes.length < 300) {
        logger.warn(" xmlFile in cache only has nbytes ="+ xmlBytes.length+"; will reread");
        // drop through and regenerate
      } else {
        GridDatasetInv inv = readXML(xmlBytes);

        // check if version required regen
        if (inv.version >= REQ_VERSION) {
          // check if file has changed
          long fileModifiedSecs = mfile.getLastModified() / 1000; // ignore msecs
          long xmlModifiedSecs = inv.getLastModified() / 1000; // ignore msecs
          if (xmlModifiedSecs >= fileModifiedSecs) { // LOOK if fileDate is -1, will always succeed
            if (logger.isDebugEnabled()) logger.debug(" cache ok "+new Date(inv.getLastModified())+" >= "+new Date(mfile.getLastModified())+" for " + mfile.getName());
            return inv; // ok, use it
          } else {
            if (logger.isInfoEnabled()) logger.info(" cache out of date "+new Date(inv.getLastModified())+" < "+new Date(mfile.getLastModified())+" for " + mfile.getName());
          }
        } else {
          if (logger.isInfoEnabled()) logger.info(" version needs upgrade "+inv.version+" < "+REQ_VERSION +" for " + mfile.getName());
        }
      }
    }

    // generate it and save it
    GridDataset gds = null;
    try {
      if (ncml == null) {
        gds = GridDataset.open( mfile.getPath());

      } else {
        NetcdfFile nc = NetcdfDataset.acquireFile(new DatasetUrl(null, mfile.getPath()), null);
        NetcdfDataset ncd = NcMLReader.mergeNcML(nc, ncml); // create new dataset
        ncd.enhance(); // now that the ncml is added, enhance "in place", ie modify the NetcdfDataset
        gds = new GridDataset(ncd);
      }

      // System.out.println("gds dataset= "+ gds.getNetcdfDataset());

      GridDatasetInv inv = new GridDatasetInv(gds, cm.extractDate(mfile));
      String xmlString = inv.writeXML( new Date(mfile.getLastModified()));
      ((CollectionManagerAbstract)cm).putMetadata(mfile, "fmrInv.xml", xmlString.getBytes(CDM.utf8Charset));
      if (logger.isDebugEnabled()) logger.debug(" added xmlFile "+ mfile.getPath()+".fmrInv.xml to cache");
      if (debug) System.out.printf(" added xmlFile %s.fmrInv.xml to cache%n", mfile.getPath());
      // System.out.println("new xmlBytes= "+ xmlString);
      return inv;
    } finally {
      if (gds != null) gds.close();
    }
  }
public static GridDatasetInv open(MCollection cm, MFile mfile, Element ncml) throws IOException {
    // do we already have it ?
    byte[] xmlBytes = ((CollectionManagerAbstract)cm).getMetadata(mfile, "fmrInv.xml");  // LOOK should we keep this functionality ??
    if (xmlBytes != null) {
      if (logger.isDebugEnabled()) logger.debug(" got xmlFile in cache ="+ mfile.getPath()+ " size = "+xmlBytes.length);
      if (xmlBytes.length < 300) {
        logger.warn(" xmlFile in cache only has nbytes ="+ xmlBytes.length+"; will reread");
        // drop through and regenerate
      } else {
        GridDatasetInv inv = readXML(xmlBytes);

        // check if version required regen
        if (inv.version >= REQ_VERSION) {
          // check if file has changed
          long fileModifiedSecs = mfile.getLastModified() / 1000; // ignore msecs
          long xmlModifiedSecs = inv.getLastModified() / 1000; // ignore msecs
          if (xmlModifiedSecs >= fileModifiedSecs) { // LOOK if fileDate is -1, will always succeed
            if (logger.isDebugEnabled()) logger.debug(" cache ok "+new Date(inv.getLastModified())+" >= "+new Date(mfile.getLastModified())+" for " + mfile.getName());
            return inv; // ok, use it
          } else {
            if (logger.isInfoEnabled()) logger.info(" cache out of date "+new Date(inv.getLastModified())+" < "+new Date(mfile.getLastModified())+" for " + mfile.getName());
          }
        } else {
          if (logger.isInfoEnabled()) logger.info(" version needs upgrade "+inv.version+" < "+REQ_VERSION +" for " + mfile.getName());
        }
      }
    }

    // generate it and save it
    GridDataset gds = null;
    try {
      if (ncml == null) {
        gds = GridDataset.open( mfile.getPath());

      } else {
        NetcdfFile nc = NetcdfDataset.acquireFile(new DatasetUrl(null, mfile.getPath()), null);
        NetcdfDataset ncd = NcMLReader.mergeNcML(nc, ncml); // create new dataset
        ncd.enhance(); // now that the ncml is added, enhance "in place", ie modify the NetcdfDataset
        gds = new GridDataset(ncd);
      }

      // System.out.println("gds dataset= "+ gds.getNetcdfDataset());

      GridDatasetInv inv = new GridDatasetInv(gds, cm.extractDate(mfile));
      String xmlString = inv.writeXML( new Date(mfile.getLastModified()));
      ((CollectionManagerAbstract)cm).putMetadata(mfile, "fmrInv.xml", xmlString.getBytes(CDM.utf8Charset));
      if (logger.isDebugEnabled()) logger.debug(" added xmlFile "+ mfile.getPath()+".fmrInv.xml to cache");
      if (debug) System.out.printf(" added xmlFile %s.fmrInv.xml to cache%n", mfile.getPath());
      // System.out.println("new xmlBytes= "+ xmlString);
      return inv;
    } finally {
      if (gds != null) gds.close();
    }
  }
public static GridDatasetInv open ( MCollection cm , MFile mfile , Element ncml ) throws IOException { // do we already have it ?
 byte [ ] xmlBytes = ( ( CollectionManagerAbstract ) cm ) . getMetadata ( mfile , "fmrInv.xml" ) ; // LOOK should we keep this functionality ??
 if ( xmlBytes != null ) { if ( logger . isDebugEnabled ( ) ) logger . debug ( " got xmlFile in cache =" + mfile . getPath ( ) + " size = " + xmlBytes . length ) ; if ( xmlBytes . length < 300 ) { logger . warn ( " xmlFile in cache only has nbytes =" + xmlBytes . length + "; will reread" ) ; // drop through and regenerate
 } else { GridDatasetInv inv = readXML ( xmlBytes ) ; // check if version required regen
 if ( inv . version >= REQ_VERSION ) { // check if file has changed
 long fileModifiedSecs = mfile . getLastModified ( ) / 1000 ; // ignore msecs
 long xmlModifiedSecs = inv . getLastModified ( ) / 1000 ; // ignore msecs
 if ( xmlModifiedSecs >= fileModifiedSecs ) { // LOOK if fileDate is -1, will always succeed
 if ( logger . isDebugEnabled ( ) ) logger . debug ( " cache ok " + new Date ( inv . getLastModified ( ) ) + " >= " + new Date ( mfile . getLastModified ( ) ) + " for " + mfile . getName ( ) ) ; return inv ; // ok, use it
 } else { if ( logger . isInfoEnabled ( ) ) logger . info ( " cache out of date " + new Date ( inv . getLastModified ( ) ) + " < " + new Date ( mfile . getLastModified ( ) ) + " for " + mfile . getName ( ) ) ; } } else { if ( logger . isInfoEnabled ( ) ) logger . info ( " version needs upgrade " + inv . version + " < " + REQ_VERSION + " for " + mfile . getName ( ) ) ; } } } // generate it and save it
 GridDataset gds = null ; try { if ( ncml == null ) { gds = GridDataset . open ( mfile . getPath ( ) ) ; } else { NetcdfFile nc = NetcdfDataset . acquireFile ( new DatasetUrl ( null , mfile . getPath ( ) ) , null ) ; NetcdfDataset ncd = NcMLReader . mergeNcML ( nc , ncml ) ; // create new dataset
 ncd . enhance ( ) ; // now that the ncml is added, enhance "in place", ie modify the NetcdfDataset
 gds = new GridDataset ( ncd ) ; } // System.out.println("gds dataset= "+ gds.getNetcdfDataset());
 GridDatasetInv inv = new GridDatasetInv ( gds , cm . extractDate ( mfile ) ) ; String xmlString = inv . writeXML ( new Date ( mfile . getLastModified ( ) ) ) ; ( ( CollectionManagerAbstract ) cm ) . putMetadata ( mfile , "fmrInv.xml" , xmlString . getBytes ( CDM . utf8Charset ) ) ; if ( logger . isDebugEnabled ( ) ) logger . debug ( " added xmlFile " + mfile . getPath ( ) + ".fmrInv.xml to cache" ) ; if ( debug ) System . out . printf ( " added xmlFile %s.fmrInv.xml to cache%n" , mfile . getPath ( ) ) ; // System.out.println("new xmlBytes= "+ xmlString);
 return inv ; } finally { if ( gds != null ) gds . close ( ) ; } }
current version
current version