package com.idega.util.dbschema;
import com.idega.data.EntityAttribute;
/**
*
*
* Last modified: $Date: 2006/05/26 16:51:49 $ by $Author: thomas $
*
* @author <a href="mailto:aron@idega.com">aron</a>
* @version $Revision: 1.2 $
*/
public class DB2SchemaAdapter extends SQLSchemaAdapter {
public String getSQLType(String javaClassName, int maxlength) {
if (javaClassName.equals("java.lang.Integer")) {
return "NUMBER";
}
if (javaClassName.equals("java.lang.String")) {
if (maxlength == EntityAttribute.UNLIMITED_LENGTH) {
return "LONG VARCHAR";
}
if (maxlength < 0) {
return "VARCHAR(255)";
}
if (maxlength <= 30000) {
return "VARCHAR(" + maxlength + ")";
}
return "LONG VARCHAR";
}
if (javaClassName.equals("java.lang.Boolean")) {
return "CHAR(1)";
}
if (javaClassName.equals("java.lang.Float")) {
return "FLOAT";
}
if (javaClassName.equals("java.lang.Double")) {
return "FLOAT(15)";
}
if (javaClassName.equals("java.sql.Timestamp")) {
return "TIMESTAMP";
}
if (javaClassName.equals("java.sql.Date")
|| javaClassName.equals("java.util.Date")) {
return "DATE";
}
if (javaClassName.equals("java.sql.Blob")) {
return "BLOB";
}
if (javaClassName.equals("java.sql.Time")) {
return "TIME";
}
if (javaClassName.equals("com.idega.util.Gender")) {
return "VARCHAR(1)";
}
if (javaClassName.equals("com.idega.data.BlobWrapper")) {
return "BLOB";
}
return "";
}
/**
*
* 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";
}
}