package com.idega.slide.schema;
import com.idega.util.dbschema.IndexImpl;
/**
*
*
* Last modified: $Date: 2007/02/04 20:42:22 $ by $Author: valdas $
*
* @author <a href="mailto:aron@idega.com">aron</a>
* @version $Revision: 1.5 $
*/
public class PropertiesSchema extends SlideSchema {
/*
CREATE TABLE "PROPERTIES" (
"VERSION_ID" NUMBER(10) NOT NULL,
"PROPERTY_NAMESPACE" VARCHAR2(50) NOT NULL,
"PROPERTY_NAME" VARCHAR2(255) NOT NULL,
"PROPERTY_VALUE" VARCHAR2(4000),
"PROPERTY_TYPE" VARCHAR2(255),
"IS_PROTECTED" NUMBER(1) NOT NULL,
UNIQUE("VERSION_ID", "PROPERTY_NAMESPACE", "PROPERTY_NAME"),
FOREIGN KEY("VERSION_ID") REFERENCES "VERSION_HISTORY"("VERSION_ID")
) CACHE NOLOGGING;
*/
public PropertiesSchema(){
super();
SlideSchemaColumn versionID = new SlideSchemaColumn(this);
versionID.setDataTypeClass(Integer.class);
versionID.setMaxLength(10);
versionID.setSQLFieldName("VERSION_ID");
versionID.setNullAllowed(false);
versionID.setPartOfPrimaryKey(true);
versionID.setOneToManyEntity(new VersionHistorySchema());
SlideSchemaColumn nameSpace = new SlideSchemaColumn(this);
nameSpace.setDataTypeClass(String.class);
nameSpace.setMaxLength(255);
nameSpace.setSQLFieldName("PROPERTY_NAMESPACE");
nameSpace.setNullAllowed(false);
SlideSchemaColumn name = new SlideSchemaColumn(this);
name.setDataTypeClass(String.class);
name.setMaxLength(255);
name.setSQLFieldName("PROPERTY_NAME");
name.setNullAllowed(false);
SlideSchemaColumn value = new SlideSchemaColumn(this);
value.setDataTypeClass(String.class);
value.setUnlimitedLength();
value.setSQLFieldName("PROPERTY_VALUE");
value.setNullAllowed(true);
SlideSchemaColumn type = new SlideSchemaColumn(this);
type.setDataTypeClass(String.class);
type.setMaxLength(255);
type.setSQLFieldName("PROPERTY_TYPE");
type.setNullAllowed(true);
SlideSchemaColumn isProtected = new SlideSchemaColumn(this);
isProtected.setDataTypeClass(Integer.class);
isProtected.setMaxLength(1);
isProtected.setSQLFieldName("IS_PROTECTED");
isProtected.setNullAllowed(false);
SlideUniqueKey uniqueKey = new SlideUniqueKey();
uniqueKey.addField(versionID);
uniqueKey.addField(nameSpace);
uniqueKey.addField(name);
addColumn(versionID);
addColumn(nameSpace);
addColumn(name);
addColumn(value);
addColumn(type);
addColumn(isProtected);
addUniqueKey(uniqueKey);
// CREATE INDEX properties_idx1 ON properties(version_id,property_name);
// CREATE INDEX properties_idx2 ON properties(version_id,property_namespace,property_name);
IndexImpl index1 = new IndexImpl("properties_idx1",getSQLName());
index1.addField("VERSION_ID");
index1.addField("PROPERTY_NAME");
addIndex(index1);
IndexImpl index2 = new IndexImpl("properties_idx2", getSQLName());
index2.addField("VERSION_ID");
index2.addField("PROPERTY_NAMESPACE");
index2.addField("PROPERTY_NAME");
addIndex(index2);
}
/* (non-Javadoc)
* @see com.idega.slide.entity.SlideEntity#getSQLTableName()
*/
public String getSQLName() {
return "PROPERTIES";
}
}