package thredds.crawlabledataset.mock;
import thredds.crawlabledataset.CrawlableDatasetUtils;
/**
* _MORE_
*
* @author edavis
*/
public class MockCrawlableDatasetTreeBuilderUtils {
public static MockCrawlableDataset buildCrDsTree( String basePath, String[] descendantPaths) {
MockCrawlableDatasetTreeBuilder builder
= new MockCrawlableDatasetTreeBuilder( basePath, true );
for ( String curDescendantPath : descendantPaths ) {
String[] pathSegments = CrawlableDatasetUtils.getPathSegments( curDescendantPath);
if ( ! CrawlableDatasetUtils.isValidRelativePath( pathSegments))
throw new IllegalArgumentException( String.format( "Current descendant path [%s] not valid relative path.", curDescendantPath));
addDescendant( builder, pathSegments);
}
return builder.build();
}
private static void addDescendant( MockCrawlableDatasetTreeBuilder builder,
String[] descendantPathSegments ) {
if ( ! CrawlableDatasetUtils.isValidRelativePath( descendantPathSegments)) {
throw new IllegalArgumentException( String.format( "Not a valid relative path [%s].", (Object []) descendantPathSegments));
}
for ( String curPathSegment : descendantPathSegments ) {
String curFullPath = builder.moveDown( curPathSegment );
if ( curFullPath != null )
continue;
else {
builder.addChild( curPathSegment, curPathSegment.startsWith( "C" ) );
builder.moveDown( curPathSegment);
}
}
for ( int i = 0; i < descendantPathSegments.length; i++ )
builder.moveUp();
}
// private static void addDescendantsForEachPathSegment( String[] pathSegments, int curIndex ) {
//
// }
}