members.add(createPrivateField(int[].class, properties, false));
Set<BasicTypeKind> kinds = collectTypeKinds();
if (kinds.contains(BasicTypeKind.DATE)) {
members.add(f.newFieldDeclaration(
null,
new AttributeBuilder(f)
.Private()
.Final()
.toAttributes(),
context.resolve(java.sql.Date.class),
f.newSimpleName(NAME_DATE),
new TypeBuilder(f, context.resolve(java.sql.Date.class))
.newObject(Models.toLiteral(f, 0L))
.toExpression()));
}
if (kinds.contains(BasicTypeKind.DATETIME)) {
members.add(f.newFieldDeclaration(
null,
new AttributeBuilder(f)
.Private()
.Final()
.toAttributes(),
context.resolve(java.sql.Timestamp.class),
f.newSimpleName(NAME_DATETIME),
new TypeBuilder(f, context.resolve(java.sql.Timestamp.class))
.newObject(Models.toLiteral(f, 0L))
.toExpression()));
}
if (kinds.contains(BasicTypeKind.DATE) || kinds.contains(BasicTypeKind.DATETIME)) {
members.add(createCalendarBuffer());
}
members.add(f.newConstructorDeclaration(
null,
new AttributeBuilder(f).toAttributes(),
f.newSimpleName(NAME_PREPARED_STATEMENT_SUPPORT),
Arrays.asList(
f.newFormalParameterDeclaration(
context.resolve(PreparedStatement.class), preparedStatement),
f.newFormalParameterDeclaration(
context.resolve(int[].class), properties)),
Arrays.asList(mapField(preparedStatement), mapField(properties))));
SimpleName object = f.newSimpleName("object");
List<Statement> statements = Lists.create();
List<PropertyDeclaration> declared = getProperties();
for (int i = 0, n = declared.size(); i < n; i++) {
statements.add(createPreparedStatementSupportStatement(
object,
preparedStatement,
f.newArrayAccessExpression(properties, Models.toLiteral(f, i)),
declared.get(i)));
}
members.add(f.newMethodDeclaration(
null,
new AttributeBuilder(f)
.annotation(context.resolve(Override.class))
.Public()
.toAttributes(),
Collections.<TypeParameterDeclaration>emptyList(),
context.resolve(void.class),
f.newSimpleName("setParameters"),
Arrays.asList(f.newFormalParameterDeclaration(context.resolve(model.getSymbol()), object)),
0,
Arrays.asList(context.resolve(SQLException.class)),
f.newBlock(statements)));
return f.newClassDeclaration(
null,
new AttributeBuilder(f)
.Private()
.Static()
.Final()
.toAttributes(),
f.newSimpleName(NAME_PREPARED_STATEMENT_SUPPORT),