/*
* $Id: DerbyDatastoreInterface.java,v 1.2 2005/07/19 13:34:53 tryggvil Exp $
* Created on 12.4.2005 in project com.idega.core
*
* Copyright (C) 2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.data;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* <p>
* This class is for supporting the Apache Derby database in idegaWeb.
* </p>
* Last modified: $Date: 2005/07/19 13:34:53 $ by $Author: tryggvil $
*
* @author <a href="mailto:tryggvil@idega.com">tryggvil</a>
* @version $Revision: 1.2 $
*/
public class DerbyDatastoreInterface extends DatastoreInterface {
/**
*
*/
public DerbyDatastoreInterface() {
super();
// TODO Auto-generated constructor stub
}
/* (non-Javadoc)
* @see com.idega.data.DatastoreInterface#getSQLType(java.lang.String, int)
*/
public String getSQLType(String javaClassName, int maxlength)
{
String theReturn;
if (javaClassName.equals("java.lang.Integer"))
{
theReturn = "INTEGER";
}
else if (javaClassName.equals("java.lang.String"))
{
if (maxlength < 0)
{
theReturn = "VARCHAR(255)";
}
else if (maxlength <= 32000)
{
theReturn = "VARCHAR(" + maxlength + ")";
}
else
{
theReturn = "CLOB";
}
}
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 = "DOUBLE";
}
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;
}
/* (non-Javadoc)
* @see com.idega.data.DatastoreInterface#createTrigger(com.idega.data.GenericEntity)
*/
public void createTrigger(GenericEntity entity) throws Exception {
// TODO Auto-generated method stub
}
/**
* @param entity
* @param conn
*/
protected void updateNumberGeneratedValue(GenericEntity entity, Connection conn)
{
try
{
//if (((GenericEntity) entity).getPrimaryKeyClass().equals(Integer.class))
//{
boolean pkIsNull = entity.isNull(entity.getIDColumnName());
if (pkIsNull)
{
//Object value = this.executeQuery(entity, "select @@IDENTITY");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("values IDENTITY_VAL_LOCAL()");
rs.next();
int id = rs.getInt(1);
entity.setID(id);
rs.close();
stmt.close();
//String tableName = entity.getTableName();
//Statement stmt2 = conn.createStatement();
//stmt2.executeUpdate("set IDENTITY_INSERT " + tableName + " off");
//stmt2.close();
}
//}
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* @return boolean
*/
protected boolean updateNumberGeneratedValueAfterInsert()
{
return true;
}
public String getIDColumnType(GenericEntity entity)
{
if (entity.getIfAutoIncrement()) {
return "INTEGER GENERATED BY DEFAULT AS IDENTITY";
} else {
return "INTEGER";
}
}
}