FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
progressCallback.startTask(getString("Progress.6", table.toString())); //$NON-NLS-1$
CommentGenerator commentGenerator = context.getCommentGenerator();
FullyQualifiedJavaType type = new FullyQualifiedJavaType(introspectedTable.getExampleType());
TopLevelClass topLevelClass = new TopLevelClass(type);
topLevelClass.setVisibility(JavaVisibility.PUBLIC);
commentGenerator.addJavaFileComment(topLevelClass);
// add default constructor
Method method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setConstructor(true);
method.setName(type.getShortName());
if (generateForJava5) {
method.addBodyLine("oredCriteria = new ArrayList<Criteria>();"); //$NON-NLS-1$
} else {
method.addBodyLine("oredCriteria = new ArrayList();"); //$NON-NLS-1$
}
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
// add shallow copy constructor if the update by
// example methods are enabled - because the parameter
// class for update by example methods will subclass this class
Rules rules = introspectedTable.getRules();
if (rules.generateUpdateByExampleSelective() || rules.generateUpdateByExampleWithBLOBs()
|| rules.generateUpdateByExampleWithoutBLOBs()) {
method = new Method();
method.setVisibility(JavaVisibility.PROTECTED);
method.setConstructor(true);
method.setName(type.getShortName());
method.addParameter(new Parameter(type, "example")); //$NON-NLS-1$
method.addBodyLine("this.orderByClause = example.orderByClause;"); //$NON-NLS-1$
method.addBodyLine("this.oredCriteria = example.oredCriteria;"); //$NON-NLS-1$
method.addBodyLine("this.distinct = example.distinct;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
}
// add field, getter, setter for orderby clause
Field field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(FullyQualifiedJavaType.getStringInstance());
field.setName("orderByClause"); //$NON-NLS-1$
commentGenerator.addFieldComment(field, introspectedTable);
topLevelClass.addField(field);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("setOrderByClause"); //$NON-NLS-1$
method.addParameter(new Parameter(FullyQualifiedJavaType.getStringInstance(), "orderByClause")); //$NON-NLS-1$
method.addBodyLine("this.orderByClause = orderByClause;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(FullyQualifiedJavaType.getStringInstance());
method.setName("getOrderByClause"); //$NON-NLS-1$
method.addBodyLine("return orderByClause;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
// add field, getter, setter for distinct
field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(FullyQualifiedJavaType.getBooleanPrimitiveInstance());
field.setName("distinct"); //$NON-NLS-1$
commentGenerator.addFieldComment(field, introspectedTable);
topLevelClass.addField(field);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("setDistinct"); //$NON-NLS-1$
method.addParameter(new Parameter(FullyQualifiedJavaType.getBooleanPrimitiveInstance(), "distinct")); //$NON-NLS-1$
method.addBodyLine("this.distinct = distinct;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(FullyQualifiedJavaType.getBooleanPrimitiveInstance());
method.setName("isDistinct"); //$NON-NLS-1$
method.addBodyLine("return distinct;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
// add field and methods for the list of ored criteria
field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
FullyQualifiedJavaType fqjt;
if (generateForJava5) {
fqjt = new FullyQualifiedJavaType("java.util.List<Criteria>"); //$NON-NLS-1$
} else {
fqjt = new FullyQualifiedJavaType("java.util.List"); //$NON-NLS-1$
}
field.setType(fqjt);
field.setName("oredCriteria"); //$NON-NLS-1$
commentGenerator.addFieldComment(field, introspectedTable);
topLevelClass.addField(field);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(fqjt);
method.setName("getOredCriteria"); //$NON-NLS-1$
method.addBodyLine("return oredCriteria;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("or"); //$NON-NLS-1$
method.addParameter(new Parameter(FullyQualifiedJavaType.getCriteriaInstance(), "criteria")); //$NON-NLS-1$
method.addBodyLine("oredCriteria.add(criteria);"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("or"); //$NON-NLS-1$
method.setReturnType(FullyQualifiedJavaType.getCriteriaInstance());
method.addBodyLine("Criteria criteria = createCriteriaInternal();"); //$NON-NLS-1$
method.addBodyLine("oredCriteria.add(criteria);"); //$NON-NLS-1$
method.addBodyLine("return criteria;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("createCriteria"); //$NON-NLS-1$
method.setReturnType(FullyQualifiedJavaType.getCriteriaInstance());
method.addBodyLine("Criteria criteria = createCriteriaInternal();"); //$NON-NLS-1$
method.addBodyLine("if (oredCriteria.size() == 0) {"); //$NON-NLS-1$
method.addBodyLine("oredCriteria.add(criteria);"); //$NON-NLS-1$
method.addBodyLine("}"); //$NON-NLS-1$
method.addBodyLine("return criteria;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PROTECTED);
method.setName("createCriteriaInternal"); //$NON-NLS-1$
method.setReturnType(FullyQualifiedJavaType.getCriteriaInstance());
method.addBodyLine("Criteria criteria = new Criteria();"); //$NON-NLS-1$
method.addBodyLine("return criteria;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("clear"); //$NON-NLS-1$
method.addBodyLine("oredCriteria.clear();"); //$NON-NLS-1$
method.addBodyLine("orderByClause = null;"); //$NON-NLS-1$
method.addBodyLine("distinct = false;"); //$NON-NLS-1$
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
// now generate the inner class that holds the AND conditions
topLevelClass.addInnerClass(getGeneratedCriteriaInnerClass(topLevelClass));
topLevelClass.addInnerClass(getCriteriaInnerClass(topLevelClass));
List<CompilationUnit> answer = new ArrayList<CompilationUnit>();
if (context.getPlugins().modelExampleClassGenerated(topLevelClass, introspectedTable)) {
answer.add(topLevelClass);
}