legacy/src/main/java/thredds/catalog/InvDatasetImpl.java
private void transfer2PublicMetadata(ThreddsMetadata tmd, boolean inheritAll) {
    if (tmd == null) return;

    logger.debug("  transferMetadata " + tmd);

    if (authorityName == null)
      authorityName = tmd.getAuthority();
    if (dataType == null || (dataType == FeatureType.ANY))
      dataType = tmd.getDataType();
    if (dataFormatType == null || dataFormatType == DataFormatType.NONE)
      dataFormatType = tmd.getDataFormatType();

    if (defaultService == null)
      defaultService = findService(tmd.getServiceName());

    if (gc == null) {
      ThreddsMetadata.GeospatialCoverage tgc = tmd.getGeospatialCoverage();
      if ((tgc != null) && !tgc.isEmpty())
        gc = tgc;
    }

    if (tc == null) {
      DateRange ttc = tmd.getTimeCoverage();
      if (ttc != null) {
        tc = ttc;
      }
    }

    if (tc == null)
      tc = tmd.getTimeCoverage();

    for (InvProperty item : tmd.getProperties()) {
      logger.debug("  add Property " + item + " to " + getID());
      properties.add(item);
    }

    creators.addAll(tmd.getCreators());
    contributors.addAll(tmd.getContributors());
    dates.addAll(tmd.getDates());
    docs.addAll(tmd.getDocumentation());
    keywords.addAll(tmd.getKeywords());
    projects.addAll(tmd.getProjects());
    publishers.addAll(tmd.getPublishers());
    variables.addAll(tmd.getVariables());
    if (variableMapLink == null)
      variableMapLink = tmd.variableMapLink;

    for (InvMetadata meta : tmd.getMetadata()) {
      if (meta.isInherited() || inheritAll) {
        if (!meta.isThreddsMetadata()) {
          metadata.add(meta);
        } else {
          logger.debug("  add metadata Element " + tmd.isInherited() + " " + meta);
          meta.finish(); // make sure XLink is read in.
          transfer2PublicMetadata(meta.getThreddsMetadata(), inheritAll);
          metadata.add(meta);
        }
      }
    }

  }
private void transfer2PublicMetadata(ThreddsMetadata tmd, boolean inheritAll) {
    if (tmd == null) return;

    logger.debug("  transferMetadata " + tmd);

    if (authorityName == null)
      authorityName = tmd.getAuthority();
    if (dataType == null || (dataType == FeatureType.ANY))
      dataType = tmd.getDataType();
    if (dataFormatType == null || dataFormatType == DataFormatType.NONE)
      dataFormatType = tmd.getDataFormatType();

    if (defaultService == null)
      defaultService = findService(tmd.getServiceName());

    if (gc == null) {
      ThreddsMetadata.GeospatialCoverage tgc = tmd.getGeospatialCoverage();
      if ((tgc != null) && !tgc.isEmpty())
        gc = tgc;
    }

    if (tc == null) {
      DateRange ttc = tmd.getTimeCoverage();
      if (ttc != null) {
        tc = ttc;
      }
    }

    if (tc == null)
      tc = tmd.getTimeCoverage();

    for (InvProperty item : tmd.getProperties()) {
      logger.debug("  add Property " + item + " to " + getID());
      properties.add(item);
    }

    creators.addAll(tmd.getCreators());
    contributors.addAll(tmd.getContributors());
    dates.addAll(tmd.getDates());
    docs.addAll(tmd.getDocumentation());
    keywords.addAll(tmd.getKeywords());
    projects.addAll(tmd.getProjects());
    publishers.addAll(tmd.getPublishers());
    variables.addAll(tmd.getVariables());
    if (variableMapLink == null)
      variableMapLink = tmd.variableMapLink;

    for (InvMetadata meta : tmd.getMetadata()) {
      if (meta.isInherited() || inheritAll) {
        if (!meta.isThreddsMetadata()) {
          metadata.add(meta);
        } else {
          logger.debug("  add metadata Element " + tmd.isInherited() + " " + meta);
          meta.finish(); // make sure XLink is read in.
          transfer2PublicMetadata(meta.getThreddsMetadata(), inheritAll);
          metadata.add(meta);
        }
      }
    }

  }
private void transfer2PublicMetadata ( ThreddsMetadata tmd , boolean inheritAll ) { if ( tmd == null ) return ; logger . debug ( "  transferMetadata " + tmd ) ; if ( authorityName == null ) authorityName = tmd . getAuthority ( ) ; if ( dataType == null || ( dataType == FeatureType . ANY ) ) dataType = tmd . getDataType ( ) ; if ( dataFormatType == null || dataFormatType == DataFormatType . NONE ) dataFormatType = tmd . getDataFormatType ( ) ; if ( defaultService == null ) defaultService = findService ( tmd . getServiceName ( ) ) ; if ( gc == null ) { ThreddsMetadata . GeospatialCoverage tgc = tmd . getGeospatialCoverage ( ) ; if ( ( tgc != null ) && ! tgc . isEmpty ( ) ) gc = tgc ; } if ( tc == null ) { DateRange ttc = tmd . getTimeCoverage ( ) ; if ( ttc != null ) { tc = ttc ; } } if ( tc == null ) tc = tmd . getTimeCoverage ( ) ; for ( InvProperty item : tmd . getProperties ( ) ) { logger . debug ( "  add Property " + item + " to " + getID ( ) ) ; properties . add ( item ) ; } creators . addAll ( tmd . getCreators ( ) ) ; contributors . addAll ( tmd . getContributors ( ) ) ; dates . addAll ( tmd . getDates ( ) ) ; docs . addAll ( tmd . getDocumentation ( ) ) ; keywords . addAll ( tmd . getKeywords ( ) ) ; projects . addAll ( tmd . getProjects ( ) ) ; publishers . addAll ( tmd . getPublishers ( ) ) ; variables . addAll ( tmd . getVariables ( ) ) ; if ( variableMapLink == null ) variableMapLink = tmd . variableMapLink ; for ( InvMetadata meta : tmd . getMetadata ( ) ) { if ( meta . isInherited ( ) || inheritAll ) { if ( ! meta . isThreddsMetadata ( ) ) { metadata . add ( meta ) ; } else { logger . debug ( "  add metadata Element " + tmd . isInherited ( ) + " " + meta ) ; meta . finish ( ) ; // make sure XLink is read in. transfer2PublicMetadata ( meta . getThreddsMetadata ( ) , inheritAll ) ; metadata . add ( meta ) ; } } } }
take all elements from tmd and add to the public metadata of this dataset.
for InvMetadata elements, only add if inheritAll || InvMetadata.isInherited().

@param tmd        tahe metadata from here
@param inheritAll true if all should be inherited, else only those which are specifically mareked
take all elements from tmd and add to the public metadata of this dataset . for InvMetadata elements only add if inheritAll || InvMetadata . isInherited () .