static private void transferGroup ( NetcdfFile ds , NetcdfDataset targetDs , Group src , Group targetGroup , ReplaceVariableCheck replaceCheck ) { boolean unlimitedOK = true ; // LOOK why not allowed? // group attributes transferGroupAttributes ( src , targetGroup ) ; // dimensions for ( Dimension d : src . getDimensions ( ) ) { if ( null == targetGroup . findDimensionLocal ( d . getShortName ( ) ) ) { Dimension newd = new Dimension ( d . getShortName ( ) , d . getLength ( ) , d . isShared ( ) , unlimitedOK && d . isUnlimited ( ) , d . isVariableLength ( ) ) ; targetGroup . addDimension ( newd ) ; } } // variables for ( Variable v : src . getVariables ( ) ) { Variable targetV = targetGroup . findVariable ( v . getShortName ( ) ) ; VariableEnhanced targetVe = ( VariableEnhanced ) targetV ; boolean replace = ( replaceCheck != null ) && replaceCheck . replace ( v ) ; // replaceCheck not currently used if ( replace || ( null == targetV ) ) { // replace it if ( ( v instanceof Structure ) && ! ( v instanceof StructureDS ) ) { v = new StructureDS ( targetGroup , ( Structure ) v ) ; // else if (!(v instanceof VariableDS) && !(v instanceof StructureDS)) Doug Lindolm } else if ( ! ( v instanceof VariableDS ) ) { v = new VariableDS ( targetGroup , v , false ) ; // enhancement done by original variable, this is just to reparent to target dataset. } if ( null != targetV ) targetGroup . remove ( targetV ) ; targetGroup . addVariable ( v ) ; // reparent group v . resetDimensions ( ) ; // dimensions will be different } else if ( ! targetV . hasCachedData ( ) && ( targetVe . getOriginalVariable ( ) == null ) ) { // this is the case where we defined the variable, but didnt set its data. we now set it with the first nested // dataset that has a variable with the same name targetVe . setOriginalVariable ( v ) ; } } // nested groups - check if target already has it for ( Group srcNested : src . getGroups ( ) ) { Group nested = targetGroup . findGroup ( srcNested . getShortName ( ) ) ; if ( null == nested ) { nested = new Group ( ds , targetGroup , srcNested . getShortName ( ) ) ; targetGroup . addGroup ( nested ) ; } transferGroup ( ds , targetDs , srcNested , nested , replaceCheck ) ; } }
transfer the objects in src group to the target group