// // Copyright (c)1998-2011 Pearson Education, Inc. or its affiliate(s). // All rights reserved. // package openadk.generator; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; public abstract class Generator { /** The merged DB used to generate classes */ protected DB fDB; /** Output directory */ protected String fDir; protected String fSrcDir; protected Generator( String srcDir, String destDir ) { fSrcDir = srcDir; if( destDir.endsWith( File.separator ) ) fDir = destDir; else fDir = destDir + File.separator; } public abstract void generate( DB[] dbs )throws IOException, GeneratorException, MergeException; public void sortAndGenerateObjects( DB[] dbs )throws IOException, GeneratorException, MergeException { // Sort the DBs in ascending order. Arrays.sort( dbs, new Comparator<DB>() { public int compare( DB o1, DB o2 ) { return o1.getVersion().toString().compareTo( o2.getVersion().toString() ); } } ); // Merge the DBs into one, beginning with the earliest version and // working to the latest. As versions are merged, we only keep // those differences that result in a unique function prototype. Thus, // later versions overwrite earlier versions unless an earlier version // has unique functionality. fDB = dbs[0]; System.out.println("\r\nMerging metadata..."); for( int i = 1; i < dbs.length; i++ ) dbs[i].mergeInto( fDB ); // System.exit(-1); // Now generate Java class files for each Object type defined in the // merged DB. System.out.println("\r\nGenerating object classes..."); ObjectDef[] objects = fDB.getObjects(); for( int i = 0; i < objects.length; i++ ) { generateObject(objects[i]); } } protected void generateObject(ObjectDef o) throws IOException, GeneratorException {} }