com.dieselpoint.norm.sqlmakers.PostgresMaker Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of norm Show documentation
Show all versions of norm Show documentation
An extremely lightweight data access layer over JDBC
package com.dieselpoint.norm.sqlmakers;
import javax.persistence.Column;
public class PostgresMaker extends StandardSqlMaker {
@Override
public String getCreateTableSql(Class> clazz) {
StringBuilder buf = new StringBuilder();
StandardPojoInfo pojoInfo = getPojoInfo(clazz);
buf.append("create table ");
buf.append(pojoInfo.table);
buf.append(" (");
boolean needsComma = false;
for (Property prop : pojoInfo.propertyMap.values()) {
if (needsComma) {
buf.append(',');
}
needsComma = true;
Column columnAnnot = prop.columnAnnotation;
if (columnAnnot == null) {
buf.append(prop.name);
buf.append(" ");
if (prop.isGenerated) {
buf.append(" serial");
} else {
buf.append(getColType(prop.dataType, 255, 10, 2));
}
} else {
if (columnAnnot.columnDefinition() == null) {
// let the column def override everything
buf.append(columnAnnot.columnDefinition());
} else {
buf.append(prop.name);
buf.append(" ");
if (prop.isGenerated) {
buf.append(" serial");
} else {
buf.append(getColType(prop.dataType, columnAnnot.length(), columnAnnot.precision(), columnAnnot.scale()));
}
if (columnAnnot.unique()) {
buf.append(" unique");
}
if (!columnAnnot.nullable()) {
buf.append(" not null");
}
}
}
}
if (pojoInfo.primaryKeyName != null) {
buf.append(", primary key (");
buf.append(pojoInfo.primaryKeyName);
buf.append(")");
}
buf.append(")");
return buf.toString();
}
}