I was able to create a working ddl for the sample helloworld-web for Apache
Derby by folowing the developers guide http://fornax-platform.org/cp/x/dAQ.
My changes are far from complete and correct - they are rather quick and
dirty - but may be a starting point to support Apache Derby.

My sculptor-generator.properties:

db.product=custom
db.custom.maxNameLength=27
db.custom.hibernate.dialect=org.hibernate.dialect.DerbyDialects
db.custom.onDeleteCascade=true
db.custom.type.Boolean=CHAR(1)
db.custom.type.byte=CHAR
db.custom.type.Byte=CHAR
db.custom.type.short=SMALLINT
db.custom.type.Short=SMALLINT
db.custom.type.Integer=INTEGER
db.custom.type.int=INTEGER
db.custom.type.Long=BIGINT
db.custom.type.long=BIGINT
db.custom.type.Date=DATE
db.custom.type.java.util.Date=DATE
db.custom.type.DateTime=DATE
db.custom.type.Timestamp=DATE
db.custom.type.BigDecimal=DECIMAL
db.custom.type.Double=DOUBLE
db.custom.type.double=DOUBLE
db.custom.type.String=VARCHAR
db.custom.length.String=100
db.custom.length.Enum=40

My helloworld\src\main\resources\templates\CustomDDL.xpt

«DEFINE ddl FOR Application»
    «FILE "dbschema/" + name + "_derby_ddl.sql" TO_GEN_RESOURCES»
    «REM»Drop in reverse order«ENDREM»
    «EXPAND dropIndex FOREACH getDomainObjectsInCreateOrder(false)»
    
    «EXPAND dropTable FOREACH resolveManyToManyRelations(false)»
    «EXPAND dropTable FOREACH getDomainObjectsInCreateOrder(false)»
    «REM»
    «EXPAND dropSequence»
    «EXPAND createSequence»
    «EXPAND idPrimaryKey FOREACH
getDomainObjectsInCreateOrder(true).select(d | d.attributes.exists(a|a.name
== "id"))»
    «ENDREM»
    
    «EXPAND createTable FOREACH getDomainObjectsInCreateOrder(true)»
    «EXPAND createTable FOREACH resolveManyToManyRelations(true)»
    
    «EXPAND manyToManyPrimaryKey FOREACH resolveManyToManyRelations(true)»
    
    «EXPAND naturalKeyConstraint FOREACH
getDomainObjectsInCreateOrder(true).select(d | d.hasNaturalKey()) »
    «REM»
    «EXPAND uuidConstraint FOREACH
getDomainObjectsInCreateOrder(true).select(d | d.attributes.exists(a |
a.name == "uuid")) »
    «ENDREM»
    
    «EXPAND extendsForeignKeyConstraint FOREACH
getDomainObjectsInCreateOrder(true).select(d | d.extends != null)»
    
    «EXPAND foreignKeyConstraint FOREACH
getDomainObjectsInCreateOrder(true)»
    «EXPAND foreignKeyConstraint FOREACH resolveManyToManyRelations(true)»
    
    «EXPAND index FOREACH getDomainObjectsInCreateOrder(true)»

    «ENDFILE »
«ENDDEFINE »

«DEFINE dropSequence FOR Application»
drop sequence hibernate_sequence;
«ENDDEFINE »

«DEFINE createSequence FOR Application»
create sequence hibernate_sequence;
«ENDDEFINE »

«DEFINE dropTable FOR DomainObject»
DROP TABLE «getDatabaseName()»;
«ENDDEFINE »


«DEFINE createTable FOR DomainObject»
  «LET references.select(r | !r.many &&
(r.to.hasOwnDatabaseRepresentation())).size != 0 AS hasOneReferences -»
  «LET getBasicTypeReferences().size != 0 AS hasContainedColumns -»
CREATE TABLE «getDatabaseName()» (
  «EXPAND column("") FOREACH attributes SEPARATOR ",
  "-»
  «IF (attributes.size > 0) && (hasOneReferences) -»,
  «ENDIF-»
  «EXPAND foreignKeyColumn FOREACH references.select(r | !r.many &&
(r.to.hasOwnDatabaseRepresentation())) SEPARATOR ",
  "-»
  «IF ((attributes.size > 0) || hasOneReferences) && (hasContainedColumns)
-»,
  «ENDIF-»
  «EXPAND containedColumns FOREACH getBasicTypeReferences()-»
  «IF extends != null-»,
  «EXPAND extendsForeignKeyColumn -»
  «ENDIF-»

);
    «ENDLET -»
    «ENDLET -»
«ENDDEFINE»

«DEFINE column(String prefix) FOR Attribute-»
  «prefix»«getDatabaseName()»
«getDatabaseType()»«getDatabaseTypeNullability()-»
  «IF name == "id"» PRIMARY KEY GENERATED ALWAYS AS IDENTITY «ENDIF-»
«ENDDEFINE»

«DEFINE containedColumns FOR Reference-»
  «EXPAND column(getDatabaseName() + "_") FOREACH to.attributes SEPARATOR ",
  "-»
«ENDDEFINE»

«DEFINE idPrimaryKey FOR DomainObject»
ALTER TABLE «getDatabaseName()» ADD CONSTRAINT PK_«getDatabaseName()» 
        PRIMARY KEY («attributes.select(a | a.name ==
"id").first().getDatabaseName()»)
;
«ENDDEFINE»

«DEFINE manyToManyPrimaryKey FOR DomainObject»
ALTER TABLE «getDatabaseName()» ADD CONSTRAINT PK_«getDatabaseName()» 
        PRIMARY KEY («FOREACH references AS r SEPARATOR ",
"»«r.getForeignKeyName()»«ENDFOREACH»)
;
«ENDDEFINE»

«DEFINE foreignKeyColumn FOR Reference-»
  «IF "list" == collectionType-»
  «getDatabaseName()»_INDEX INTEGER(10),
  «ENDIF-»
  «getForeignKeyName()» «getForeignKeyType() -»
«ENDDEFINE»

«DEFINE extendsForeignKeyColumn FOR DomainObject-»
  «extends.getForeignKeyName()» «extends.getForeignKeyType()»,
«ENDDEFINE»

«DEFINE foreignKeyConstraint FOR DomainObject-»
  «EXPAND foreignKeyConstraint FOREACH references.select(r | !r.many &&
(r.to.hasOwnDatabaseRepresentation()))»
«ENDDEFINE»

«DEFINE foreignKeyConstraint FOR Reference-»
ALTER TABLE «from.getDatabaseName()» ADD CONSTRAINT
FK_«truncateLongDatabaseName(from.getDatabaseName() + "_" +
getDatabaseName())» 
        FOREIGN KEY («getForeignKeyName()») REFERENCES
«to.getRootExtends().getDatabaseName()» (ID)«IF isDbOnDeleteCascade()» ON
DELETE CASCADE«ENDIF»
;
«ENDDEFINE»

«DEFINE extendsForeignKeyConstraint FOR DomainObject-»
ALTER TABLE «getDatabaseName()» ADD CONSTRAINT
FK_«truncateLongDatabaseName(getDatabaseName() + "_" +
extends.getDatabaseName())» 
        FOREIGN KEY («extends.getForeignKeyName()») REFERENCES
«extends.getRootExtends().getDatabaseName()» (ID)
;
«ENDDEFINE»

«DEFINE naturalKeyConstraint FOR DomainObject-»
ALTER TABLE «getDatabaseName()»
    «IF getNaturalKeyReference() != null -»
        ADD CONSTRAINT UQ_«getDatabaseName()»_KEY UNIQUE («FOREACH 
          getNaturalKeyReference().to.attributes.select(a | a.naturalKey) AS a
SEPARATOR ",
"»«getNaturalKeyReference().getDatabaseName()»_«a.getDatabaseName()»«ENDFOREACH»)
    
    «ELSE -»
        ADD CONSTRAINT UQ_«getDatabaseName()»_KEY UNIQUE («FOREACH 
          attributes.select(a | a.naturalKey) AS a SEPARATOR ",
"»«a.getDatabaseName()»«ENDFOREACH»)
        «ENDIF»
;
«ENDDEFINE»

«DEFINE uuidConstraint FOR DomainObject-»
ALTER TABLE «getDatabaseName()»
        ADD CONSTRAINT UQ_«getDatabaseName()»_UUID UNIQUE (UUID)
;
«ENDDEFINE»

«DEFINE index FOR DomainObject-»
«EXPAND index("", this) FOREACH attributes.select(a | a.index == true)-»
«EXPAND containedColumnIndex FOREACH getBasicTypeReferences()-»
«ENDDEFINE»

«DEFINE containedColumnIndex FOR Reference-»
  «EXPAND index(getDatabaseName() + "_", from) FOREACH
to.attributes.select(a | a.index == true)»
«ENDDEFINE»

«DEFINE index(String prefix, DomainObject domainObject) FOR Attribute-»
CREATE INDEX IDX_«truncateLongDatabaseName(domainObject.getDatabaseName() +
"_" + prefix + getDatabaseName())»
    ON «domainObject.getDatabaseName()» («prefix»«getDatabaseName()» ASC)
;
«ENDDEFINE»

«DEFINE dropIndex FOR DomainObject-»
«EXPAND dropIndex("", this) FOREACH attributes.select(a | a.index == true)-»
«EXPAND dropContainedColumnIndex FOREACH getBasicTypeReferences()-»
«ENDDEFINE»

«DEFINE dropContainedColumnIndex FOR Reference-»
  «EXPAND dropIndex(getDatabaseName() + "_", from) FOREACH
to.attributes.select(a | a.index == true)»
«ENDDEFINE»

«DEFINE dropIndex(String prefix, DomainObject domainObject) FOR Attribute-»
DROP INDEX IDX_«truncateLongDatabaseName(domainObject.getDatabaseName() +
"_" + prefix + getDatabaseName())»;
«ENDDEFINE»

Kind Regards,
René

-- 
View this message in context: 
http://www.nabble.com/Starting-Support-for-Apache-Derby-tp14804464s17564p14804464.html
Sent from the Fornax-Platform mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Fornax-developer mailing list
Fornax-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fornax-developer

Reply via email to