cdm/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java
private void readCatalog(Element catalogElem) {

    String name = catalogElem.getAttributeValue("name");
    String catSpecifiedBaseURL = catalogElem.getAttributeValue("base");   // LOOK what is this ??
    String expiresS = catalogElem.getAttributeValue("expires");
    String version = catalogElem.getAttributeValue("version");

    CalendarDate expires = null;
    if (expiresS != null) {
      try {
        expires = CalendarDateFormatter.isoStringToCalendarDate(null, expiresS);
      }
      catch (Exception e) {
        errlog.format("bad expires date '%s' err='%s'%n", expiresS, e.getMessage());
        logger.debug("bad expires date '{}' err='{}'%n", expiresS, e.getMessage());
      }
    }

    if (catSpecifiedBaseURL != null) {
      try {
        URI userSpecifiedBaseUri = new URI(catSpecifiedBaseURL);
        this.baseURI = userSpecifiedBaseUri;
      }
      catch (URISyntaxException e) {
        errlog.format("readCatalog(): bad catalog specified base URI='%s' %n", catSpecifiedBaseURL);
        logger.debug("bad catalog specified base URI='{}'");
      }
    }

    setName(name);
    setExpires(expires);
    setVersion(version);

    // read top-level services
    java.util.List<Element> sList = catalogElem.getChildren("service", Catalog.defNS);
    for (Element e : sList) {
      addService(readService(e));
    }

    // read top-level properties
    java.util.List<Element> pList = catalogElem.getChildren("property", Catalog.defNS);
    for (Element e : pList) {
      addProperty(readProperty(e));
    }

    // look for top-level dataset and catalogRefs elements (keep them in order)
    java.util.List<Element> allChildren = catalogElem.getChildren();
    for (Element e : allChildren) {
      if (e.getName().equals("dataset")) {
        addDataset(readDataset(null, e));
      }
      else if (e.getName().equals("catalogRef")) {
        addDataset(readCatalogRef(null, e));
      }
      else {
        addDataset(buildOtherDataset(null, e));
      }
    }
  }
private void readCatalog(Element catalogElem) {

    String name = catalogElem.getAttributeValue("name");
    String catSpecifiedBaseURL = catalogElem.getAttributeValue("base");   // LOOK what is this ??
    String expiresS = catalogElem.getAttributeValue("expires");
    String version = catalogElem.getAttributeValue("version");

    CalendarDate expires = null;
    if (expiresS != null) {
      try {
        expires = CalendarDateFormatter.isoStringToCalendarDate(null, expiresS);
      }
      catch (Exception e) {
        errlog.format("bad expires date '%s' err='%s'%n", expiresS, e.getMessage());
        logger.debug("bad expires date '{}' err='{}'%n", expiresS, e.getMessage());
      }
    }

    if (catSpecifiedBaseURL != null) {
      try {
        URI userSpecifiedBaseUri = new URI(catSpecifiedBaseURL);
        this.baseURI = userSpecifiedBaseUri;
      }
      catch (URISyntaxException e) {
        errlog.format("readCatalog(): bad catalog specified base URI='%s' %n", catSpecifiedBaseURL);
        logger.debug("bad catalog specified base URI='{}'");
      }
    }

    setName(name);
    setExpires(expires);
    setVersion(version);

    // read top-level services
    java.util.List<Element> sList = catalogElem.getChildren("service", Catalog.defNS);
    for (Element e : sList) {
      addService(readService(e));
    }

    // read top-level properties
    java.util.List<Element> pList = catalogElem.getChildren("property", Catalog.defNS);
    for (Element e : pList) {
      addProperty(readProperty(e));
    }

    // look for top-level dataset and catalogRefs elements (keep them in order)
    java.util.List<Element> allChildren = catalogElem.getChildren();
    for (Element e : allChildren) {
      if (e.getName().equals("dataset")) {
        addDataset(readDataset(null, e));
      }
      else if (e.getName().equals("catalogRef")) {
        addDataset(readCatalogRef(null, e));
      }
      else {
        addDataset(buildOtherDataset(null, e));
      }
    }
  }
private void readCatalog ( Element catalogElem ) { String name = catalogElem . getAttributeValue ( "name" ) ; String catSpecifiedBaseURL = catalogElem . getAttributeValue ( "base" ) ; // LOOK what is this ?? String expiresS = catalogElem . getAttributeValue ( "expires" ) ; String version = catalogElem . getAttributeValue ( "version" ) ; CalendarDate expires = null ; if ( expiresS != null ) { try { expires = CalendarDateFormatter . isoStringToCalendarDate ( null , expiresS ) ; } catch ( Exception e ) { errlog . format ( "bad expires date '%s' err='%s'%n" , expiresS , e . getMessage ( ) ) ; logger . debug ( "bad expires date '{}' err='{}'%n" , expiresS , e . getMessage ( ) ) ; } } if ( catSpecifiedBaseURL != null ) { try { URI userSpecifiedBaseUri = new URI ( catSpecifiedBaseURL ) ; this . baseURI = userSpecifiedBaseUri ; } catch ( URISyntaxException e ) { errlog . format ( "readCatalog(): bad catalog specified base URI='%s' %n" , catSpecifiedBaseURL ) ; logger . debug ( "bad catalog specified base URI='{}'" ) ; } } setName ( name ) ; setExpires ( expires ) ; setVersion ( version ) ; // read top-level services java . util . List < Element > sList = catalogElem . getChildren ( "service" , Catalog . defNS ) ; for ( Element e : sList ) { addService ( readService ( e ) ) ; } // read top-level properties java . util . List < Element > pList = catalogElem . getChildren ( "property" , Catalog . defNS ) ; for ( Element e : pList ) { addProperty ( readProperty ( e ) ) ; } // look for top-level dataset and catalogRefs elements (keep them in order) java . util . List < Element > allChildren = catalogElem . getChildren ( ) ; for ( Element e : allChildren ) { if ( e . getName ( ) . equals ( "dataset" ) ) { addDataset ( readDataset ( null , e ) ) ; } else if ( e . getName ( ) . equals ( "catalogRef" ) ) { addDataset ( readCatalogRef ( null , e ) ) ; } else { addDataset ( buildOtherDataset ( null , e ) ) ; } } }
/* <xsd:element name="catalog">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="service" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="property" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="dataset" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>

<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="expires" type="dateType"/>
<xsd:attribute name="version" type="xsd:token" default="1.0.2" />
</xsd:complexType>
</xsd:element>
/ * <xsd : element name = catalog > <xsd : complexType > <xsd : sequence > <xsd : element ref = service minOccurs = 0 maxOccurs = unbounded / > <xsd : element ref = property minOccurs = 0 maxOccurs = unbounded / > <xsd : element ref = dataset minOccurs = 1 maxOccurs = unbounded / > < / xsd : sequence >