package com.idega.util.dbschema;
/**
*
*
* Last modified: $Date: 2004/11/01 10:05:31 $ by $Author: aron $
*
* @author <a href="mailto:aron@idega.com">aron</a>
* @version $Revision: 1.1 $
*/
public class DB2SchemaAdapter extends SQLSchemaAdapter {
public String getSQLType(String javaClassName, int maxlength) {
String theReturn;
if (javaClassName.equals("java.lang.Integer")) {
theReturn = "NUMBER";
}
else if (javaClassName.equals("java.lang.String")) {
if (maxlength < 0) {
theReturn = "VARCHAR(255)";
}
else if (maxlength <= 30000) {
theReturn = "VARCHAR(" + maxlength + ")";
}
else {
theReturn = "LONG VARCHAR";
}
}
else if (javaClassName.equals("java.lang.Boolean")) {
theReturn = "CHAR(1)";
}
else if (javaClassName.equals("java.lang.Float")) {
theReturn = "FLOAT";
}
else if (javaClassName.equals("java.lang.Double")) {
theReturn = "FLOAT(15)";
}
else if (javaClassName.equals("java.sql.Timestamp")) {
theReturn = "TIMESTAMP";
}
else if (javaClassName.equals("java.sql.Date")
|| javaClassName.equals("java.util.Date")) {
theReturn = "DATE";
}
else if (javaClassName.equals("java.sql.Blob")) {
theReturn = "BLOB";
}
else if (javaClassName.equals("java.sql.Time")) {
theReturn = "TIME";
}
else if (javaClassName.equals("com.idega.util.Gender")) {
theReturn = "VARCHAR(1)";
}
else if (javaClassName.equals("com.idega.data.BlobWrapper")) {
theReturn = "BLOB";
}
else {
theReturn = "";
}
return theReturn;
}
/**
*
* Only creates the sequence, not the trigger
*
* @todo implement trigger creation
*
*/
public void createTrigger( Schema entity)throws Exception {
createSequence( entity);
}
public void createSequence(Schema entity)throws Exception {
String s = "create sequence "+ entity.getSQLName()+ "_seq INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER";
executeUpdate(s);
}
public void removeSchema( Schema entity)
throws Exception {
super.removeSchema( entity);
/**
*
* @todo change
*
*/
//deleteTrigger(entity);
deleteSequence( entity);
}
protected void deleteTrigger( Schema entity)throws Exception {
executeUpdate("drop trigger " + entity.getSQLName()+ "_trig");
}
protected void deleteSequence( Schema entity)throws Exception {
executeUpdate("drop sequence " + entity.getSQLName()+ "_seq");
}
protected String getCreateUniqueIDQuery(Schema entity) {
return "SELECT " + getSequenceName(entity) + ".nextval FROM dual";
}
private static String getSequenceName(Schema entity) {
String entityName = entity.getSQLName();
return entityName + "_seq";
}
}