javaclassgenerator.java

来自「OR Mapping工具」· Java 代码 · 共 515 行 · 第 1/2 页

JAVA
515
字号
      else { // an array        // TODO: figure out the correct code here        outFile.write ("\t\t /* this does not work */\n\t}\n\n");      }		}		// now rip code		if (jf.isCollection ()) {			if (jf instanceof JCompositeField) {				String viewFormat = fieldView.getViewFormat ();				String cast = "";				JCompositeField jcf = (JCompositeField)jf;				if (viewFormat != null && !viewFormat.equals ("")){					viewFormat = viewFormat.substring (0,1).toUpperCase () + viewFormat.substring (1);					if (fieldView.getAsView ())						viewFormat = ".create" + viewFormat + "View (_viewContext)";					else						viewFormat = ".get" + viewFormat + " ()";				}				else {					viewFormat = "";					cast = "(" + jcf.getObjectType () + ")"; 				}									classFile.write ("\t\tfor (int i=0; i< this.get"+ jcf.getGetSet () + "().size(); i++) {\n");				if (jcf.getJClass() != null) {					// Figure out the cast that must be made here, in case the View has parent views					JClass fieldClass = ((JCompositeField)jf).getJClass ();					JView view = fieldClass.getView (fieldView.getViewFormat ());					if (view != null)						cast = "(" + view.getViewName() + ")";					classFile.write ("\t\t\t"+ varName+ ".addTo" + jcf.getGetSet () + " (" + cast + "((" 									 + jcf.getJClass().getPackageName () + "." 									 + jcf.getJClass ().getClassName ()									 + ")this.get" + jf.getGetSet () + "().elementAt (i))");					classFile.write (viewFormat + ");\n");				}				else {					classFile.write ("\t\t\t" + varName + ".addTo" + jcf.getGetSet() + "(" + cast + "this.get" + jcf.getGetSet()									 + "().elementAt (i));\n");				}				classFile.write ("\t\t}\n");							}			else {				classFile.write ("\t\t" + varName + ".set" + jf.getGetSet () + " (this.get" + jf.getGetSet () + "());\n");			}		}		else if (jf instanceof JCompositeField) {			String viewFormat = fieldView.getViewFormat ();			if (viewFormat == null || viewFormat.equals ("")) {				Debugger.trace ("Format not specified for composite field " + jf.getJavaName (), Debugger.SHORT);				String cast = "(" +jf.getObjectType () + ")"; 				classFile.write ("\t\t" + varName + ".set" + jf.getGetSet () + " (" + cast + "this.get" + jf.getGetSet () 								 + "());\n");			}			else {				// Figure out the cast that must be made here, in case the View has parent views				JClass fieldClass = ((JCompositeField)jf).getJClass ();				JView view = fieldClass.getView (fieldView.getViewFormat ());				String cast = "";				if (view != null)					cast = "(" + view.getViewName() + ")";				viewFormat = viewFormat.substring (0,1).toUpperCase () + viewFormat.substring (1);				String vv = "this.get" + jf.getGetSet () + "()";								classFile.write ("\t\t" + varName + ".set" + jf.getGetSet () + " (");				classFile.write (vv + " == null ? ");				if (fieldView.getAsView ()) { 					classFile.write ("null : ");					classFile.write (cast + vv + ".create" + viewFormat + "View (_viewContext));\n");				}				else {					String jDefault = getDefaultValue (fieldClass.getFieldByName (fieldView.getViewFormat()));					classFile.write (jDefault + " : ");					classFile.write (cast + vv + ".get" + viewFormat + " ());\n");				}			}		}		else			classFile.write ("\t\t" + varName +".set" + jf.getGetSet () + " (this.get" + jf.getGetSet () + "());\n");    }	private String getDefaultValue (JField jf) {		if (jf.isVector ())			return "new Vector ()";    else if (jf.isArrayList ())      return "new ArrayList ()";		else return jf.getObjectDefaultValue ();    // TODO: what about Array?	}		private void writeClassTrailer (FileWriter outFile, JClass currentClass, String constructorString) throws IOException, SchemaException {		outFile.write ("\n\t/** the Default constructor for "+ currentClass.getClassName () + "\n");		outFile.write ("\t* use set... methods to fill in fields\n\t*/\n");		outFile.write ("\tpublic " + currentClass.getClassName () + " () {\n\t\tsuper ();\n");		outFile.write (constructorString);		outFile.write ("\t}\n\n} // end of " + currentClass.getClassName () + "\n");	}	private void writeFieldCode (FileWriter outFile, JField jf) throws IOException, SchemaException {        String fieldName = jf.getJavaName();        String fieldType = jf.getObjectType();    if (jf.isVector()) fieldType = "java.util.Vector";    else if (jf.isArrayList()) fieldType = "java.util.ArrayList";		else if (jf.isArray ())			fieldType += " []";		String get_set_name = fieldName.substring (0,1).toUpperCase () + fieldName.substring (1);		outFile.write ("\tprivate " + fieldType + " _" + fieldName + ";\n\n");		outFile.write ("\tpublic " + fieldType + " get" + get_set_name + " () { return this._"					   + fieldName + "; }\n\n");		outFile.write ("\tpublic void set" + get_set_name + " (" + fieldType + " foo) {\n");		outFile.write ("\t\tthis._"+ fieldName + " = foo;\n");		if (jf instanceof JCompositeField && ((JCompositeField)jf).getJClass () != null &&			!(((JCompositeField)jf).getJClass ().getTableName ().equals ("")) && 			!jf.isCollection () &&!jf.isTransient ()) {			String tmp = ((JCompositeField)jf).getJClass ().getPrimaryKeyJava ();      if (tmp != null && !tmp.equals("")) {  		   String get_set = tmp.substring (0,1).toUpperCase () + tmp.substring (1);			   outFile.write ("\t\tthis._"+ fieldName + "Oid = foo != null ? foo.get" + get_set + " () : 0; // set the oid to zero if object == null\n");      }			outFile.write ("\t}\n\n");			outFile.write ("\tprivate int _" + fieldName + "Oid = 0;\n\n");			outFile.write ("\tpublic int get" + get_set_name + "Oid () { return this._"					   + fieldName + "Oid; }\n\n");			outFile.write ("\tpublic void set" + get_set_name + "Oid (int foo) {\n");			outFile.write ("\t\tthis._"+ fieldName + "Oid = foo;\n\t}\n\n");		} else			outFile.write ("\t}\n\n");		// code for vectors		if (jf.isCollection()) {            //int i = jf.getObjectType().lastIndexOf (".");			//String add_name = i == -1 ? get_set_name.substring(0, get_set_name.length() - 1)                      //: jf.getObjectType().substring(i + 1);			outFile.write ("\tpublic void addTo" + get_set_name						   + " (" + jf.getObjectType ()+ " foo) {\n");      if (jf.isVector()) {			  outFile.write ("\t\t_" + fieldName + ".addElement (foo);\n\t}\n\n");      }      else if (jf.isArrayList ()) {         outFile.write ("\t\t_" + fieldName + ".add (foo);\n\t}\n\n");      }      else { // an array        outFile.write ("\t\t /* This does not work */ \n\t}\n\n");        // TODO: write proper code here      }		}	}	private void writeClassHeader (FileWriter outFile, JClass jc, boolean isDatabaseClass)		throws IOException, SchemaException {		String packageName = jc.getPackageName ();		JClass parentClass = jc.getParentClass ();		String extendsClass = "";		if (parentClass == null) {			extendsClass = jc.getParentClassName();        } else {			// Check if the package of the parent is the same			if (!jc.getPackageName ().equals (parentClass.getPackageName ()))				if (parentClass.getPackageName () != null)					extendsClass = parentClass.getPackageName () + ".";			extendsClass  += parentClass.getClassName ();		}        String extra = "";        String extendString = "";        if (!extendsClass.equals("")) {            extendString = "extends " + extendsClass + " ";            if (parentClass == null && isDatabaseClass) { // implement Versionable                 //extra =            }        } else if (isDatabaseClass) // none try Versioned..            if (jc.isVersioned())			    extendString = "extends org.ephman.abra.utils.Versioned ";            else                extendString = "extends org.ephman.abra.utils.Identified ";        String impString = "";		String jcImp = jc.getImplements ().replace (';', ',');        if (!this.toImplement.equals ("")) {            if (jc.getImplements ().equals (""))                impString = "implements " + toImplement + " ";            else                impString = "implements " + toImplement + ", " + jcImp + " ";        }        else if (!jc.getImplements ().equals (""))            impString = "implements " + jcImp + " ";		String abst = (jc.hasDescendant  () || jc.isAbstract ()) ? "abstract " : "";		outFile.write ("package " + packageName + ";\n\n");		outFile.write ("import java.sql.*;\nimport java.util.*;\n\n");		outFile.write ("// Do not edit!! generated classes\n");		outFile.write ("/** " + jc.getClassName () + " " + jc.getClassDescription () + "<p>\n");		outFile.write (" * XMLSource: " + jc.getSchemaFileName () + "\n");		outFile.write (" * @version " + (new Date ()).toString () + "\n");		outFile.write (" * @author generated by Dave Knull\n */\n\n");		outFile.write ("public " + abst + "class " + jc.getClassName() + " " + extendString + impString + "{ \n\n");		if (jc.hasDescendant ()) {			String [] methods = new String [] {"prepareToStore", "makeTransient" };			for (int i=0; i<methods.length; i++)				outFile.write ("\tpublic abstract void " + methods[i]							   + " ();\n\n");		}	}	// implementation of class-generator call 	public Map getTypeMap () {		return typeMap;	}	private static HashMap typeMap = new HashMap ();		static {		//		TypeMap tm = null;		TypeMap tm = new TypeMap (INTEGER, "int", "0", null);		typeMap.put (INTEGER, tm);		typeMap.put (STRING, new TypeMap (STRING, "String", "\"\"", null, true));		typeMap.put (LONG, new TypeMap (LONG, "long", "0", null));		typeMap.put (DOUBLE, new TypeMap (DOUBLE, "double", "0.0", null));		typeMap.put (FLOAT, new TypeMap (FLOAT, "float", "0.0", null));		typeMap.put (CLOB, new TypeMap (CLOB, "String", "\"\"", null));		typeMap.put (BLOB, new TypeMap (BLOB, "byte []", "null", null));		typeMap.put (TIMESTAMP, new TypeMap (TIMESTAMP, "Timestamp", "null",											 null));		typeMap.put (BOOLEAN, new TypeMap (BOOLEAN, "boolean", "false", null));		typeMap.put (CHARACTER, new TypeMap (CHARACTER, "char", "' '", null));				typeMap.put (INTEGER_OBJ, new TypeMap (INTEGER_OBJ, "Integer", "null",											   null));		typeMap.put (DOUBLE_OBJ, new TypeMap (DOUBLE_OBJ, "Double", "null",											  null));		typeMap.put (BOOLEAN_OBJ, new TypeMap (BOOLEAN_OBJ, "Boolean", 											   "null", null));		typeMap.put (BIG_DECIMAL, new TypeMap (BIG_DECIMAL, "java.math.BigDecimal", 											   "null", null, true)); //needs length arg		typeMap.put (BIG_INTEGER, new TypeMap (BIG_INTEGER, "java.math.BigInteger", 											   "null", null));	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?