blob: eeea57ebbe98356b688610ceb7e7d210508398bd [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// 04/02/2008-1.0M6 Guy Pelletier
// - 224155: embeddable-attributes should be extended in the EclipseLink ORM.XML schema
// 08/27/2008-1.1 Guy Pelletier
// - 211329: Add sequencing on non-id attribute(s) support to the EclipseLink-ORM.XML Schema
// 08/28/2008-1.1 Guy Pelletier
// - 245120: unidir one-to-many within embeddable fails to deploy for missing primary key field
// 02/08/2010-2.1 Michael O'Brien
// - 260271: for the "NUMERIC" ID field - increase from 15 to 18 to match XML_OWNERSHIP_GROUP.ID as it is the default precision size
package org.eclipse.persistence.testing.models.jpa.xml.complexaggregate;
import java.util.Iterator;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.tools.schemaframework.*;
public class ComplexAggregateTableCreator extends org.eclipse.persistence.tools.schemaframework.TableCreator {
public ComplexAggregateTableCreator() {
setName("ComplexAggregateProject");
addTableDefinition(buildCITYSLICKERTable());
addTableDefinition(buildCOUNTRYDWELLERTable());
addTableDefinition(buildWORLDTable());
addTableDefinition(buildHOCKEYPLAYERTable());
addTableDefinition(buildHOCKEYTEAMTable());
addTableDefinition(buildOWNERSHIPGROUPTable());
addTableDefinition(buildPRIVILEGESTable());
addTableDefinition(buildROLETable());
addTableDefinition(buildPLAYERROLESTable());
}
public TableDefinition buildCITYSLICKERTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_CITYSLICKER");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(true);
fieldID.setUnique(true);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldFNAME = new FieldDefinition();
fieldFNAME.setName("FNAME");
fieldFNAME.setTypeName("VARCHAR2");
fieldFNAME.setSize(20);
fieldFNAME.setSubSize(0);
fieldFNAME.setIsPrimaryKey(true);
fieldFNAME.setIsIdentity(false);
fieldFNAME.setUnique(true);
fieldFNAME.setShouldAllowNull(false);
table.addField(fieldFNAME);
FieldDefinition fieldLNAME = new FieldDefinition();
fieldLNAME.setName("LNAME");
fieldLNAME.setTypeName("VARCHAR2");
fieldLNAME.setSize(20);
fieldLNAME.setSubSize(0);
fieldLNAME.setIsPrimaryKey(true);
fieldLNAME.setIsIdentity(false);
fieldLNAME.setUnique(true);
fieldLNAME.setShouldAllowNull(false);
table.addField(fieldLNAME);
FieldDefinition fieldAGE = new FieldDefinition();
fieldAGE.setName("AGE");
fieldAGE.setTypeName("NUMBER");
fieldAGE.setSize(15);
fieldAGE.setSubSize(0);
fieldAGE.setIsPrimaryKey(false);
fieldAGE.setIsIdentity(false);
fieldAGE.setUnique(false);
fieldAGE.setShouldAllowNull(false);
table.addField(fieldAGE);
FieldDefinition fieldGENDER = new FieldDefinition();
fieldGENDER.setName("GENDER");
fieldGENDER.setTypeName("VARCHAR2");
fieldGENDER.setSize(6);
fieldGENDER.setSubSize(0);
fieldGENDER.setIsPrimaryKey(false);
fieldGENDER.setIsIdentity(false);
fieldGENDER.setUnique(false);
fieldGENDER.setShouldAllowNull(true);
table.addField(fieldGENDER);
FieldDefinition fieldWORLDID = new FieldDefinition();
fieldWORLDID.setName("WORLD_ID");
fieldWORLDID.setTypeName("NUMBER");
fieldWORLDID.setSize(18);
fieldWORLDID.setSubSize(0);
fieldWORLDID.setIsPrimaryKey(false);
fieldWORLDID.setIsIdentity(false);
fieldWORLDID.setUnique(false);
fieldWORLDID.setShouldAllowNull(true);
fieldWORLDID.setForeignKeyFieldName("XML_WORLD.ID");
table.addField(fieldWORLDID);
return table;
}
public TableDefinition buildCOUNTRYDWELLERTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_COUNTRY_DWELLER");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(true);
fieldID.setUnique(true);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldFNAME = new FieldDefinition();
fieldFNAME.setName("FNAME");
fieldFNAME.setTypeName("VARCHAR2");
fieldFNAME.setSize(20);
fieldFNAME.setSubSize(0);
fieldFNAME.setIsPrimaryKey(true);
fieldFNAME.setIsIdentity(false);
fieldFNAME.setUnique(true);
fieldFNAME.setShouldAllowNull(false);
table.addField(fieldFNAME);
FieldDefinition fieldLNAME = new FieldDefinition();
fieldLNAME.setName("LNAME");
fieldLNAME.setTypeName("VARCHAR2");
fieldLNAME.setSize(20);
fieldLNAME.setSubSize(0);
fieldLNAME.setIsPrimaryKey(true);
fieldLNAME.setIsIdentity(false);
fieldLNAME.setUnique(true);
fieldLNAME.setShouldAllowNull(false);
table.addField(fieldLNAME);
FieldDefinition fieldAGE = new FieldDefinition();
fieldAGE.setName("AGE");
fieldAGE.setTypeName("NUMBER");
fieldAGE.setSize(15);
fieldAGE.setSubSize(0);
fieldAGE.setIsPrimaryKey(false);
fieldAGE.setIsIdentity(false);
fieldAGE.setUnique(false);
fieldAGE.setShouldAllowNull(false);
table.addField(fieldAGE);
FieldDefinition fieldGENDER = new FieldDefinition();
fieldGENDER.setName("GENDER");
fieldGENDER.setTypeName("VARCHAR2");
fieldGENDER.setSize(6);
fieldGENDER.setSubSize(0);
fieldGENDER.setIsPrimaryKey(false);
fieldGENDER.setIsIdentity(false);
fieldGENDER.setUnique(false);
fieldGENDER.setShouldAllowNull(true);
table.addField(fieldGENDER);
FieldDefinition fieldWORLDID = new FieldDefinition();
fieldWORLDID.setName("WORLD_ID");
fieldWORLDID.setTypeName("NUMBER");
fieldWORLDID.setSize(18);
fieldWORLDID.setSubSize(0);
fieldWORLDID.setIsPrimaryKey(false);
fieldWORLDID.setIsIdentity(false);
fieldWORLDID.setUnique(false);
fieldWORLDID.setShouldAllowNull(true);
fieldWORLDID.setForeignKeyFieldName("XML_WORLD.ID");
table.addField(fieldWORLDID);
return table;
}
public TableDefinition buildHOCKEYPLAYERTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_HOCKEY_PLAYER");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("PLAYERID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(false);
fieldID.setUnique(false);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldFNAME = new FieldDefinition();
fieldFNAME.setName("FNAME");
fieldFNAME.setTypeName("VARCHAR2");
fieldFNAME.setSize(20);
fieldFNAME.setSubSize(0);
fieldFNAME.setIsPrimaryKey(false);
fieldFNAME.setIsIdentity(false);
fieldFNAME.setUnique(false);
fieldFNAME.setShouldAllowNull(false);
table.addField(fieldFNAME);
FieldDefinition fieldLNAME = new FieldDefinition();
fieldLNAME.setName("LNAME");
fieldLNAME.setTypeName("VARCHAR2");
fieldLNAME.setSize(20);
fieldLNAME.setSubSize(0);
fieldLNAME.setIsPrimaryKey(false);
fieldLNAME.setIsIdentity(false);
fieldLNAME.setUnique(false);
fieldLNAME.setShouldAllowNull(false);
table.addField(fieldLNAME);
FieldDefinition fieldAGE = new FieldDefinition();
fieldAGE.setName("AGE");
fieldAGE.setTypeName("NUMBER");
fieldAGE.setSize(15);
fieldAGE.setSubSize(0);
fieldAGE.setIsPrimaryKey(false);
fieldAGE.setIsIdentity(false);
fieldAGE.setUnique(false);
fieldAGE.setShouldAllowNull(true);
table.addField(fieldAGE);
FieldDefinition fieldHEIGHT = new FieldDefinition();
fieldHEIGHT.setName("HEIGHT");
fieldHEIGHT.setTypeName("DOUBLE PRECIS");
fieldHEIGHT.setSize(15);
fieldHEIGHT.setSubSize(0);
fieldHEIGHT.setIsPrimaryKey(false);
fieldHEIGHT.setIsIdentity(false);
fieldHEIGHT.setUnique(false);
fieldHEIGHT.setShouldAllowNull(true);
table.addField(fieldHEIGHT);
FieldDefinition fieldWEIGHT = new FieldDefinition();
fieldWEIGHT.setName("WEIGHT");
fieldWEIGHT.setTypeName("DOUBLE PRECIS");
fieldWEIGHT.setSize(15);
fieldWEIGHT.setSubSize(0);
fieldWEIGHT.setIsPrimaryKey(false);
fieldWEIGHT.setIsIdentity(false);
fieldWEIGHT.setUnique(false);
fieldWEIGHT.setShouldAllowNull(true);
table.addField(fieldWEIGHT);
FieldDefinition fieldJERSEYNUMBER = new FieldDefinition();
fieldJERSEYNUMBER.setName("JERSEY_NUMBER");
fieldJERSEYNUMBER.setTypeName("NUMBER");
fieldJERSEYNUMBER.setSize(15);
fieldJERSEYNUMBER.setSubSize(0);
fieldJERSEYNUMBER.setIsPrimaryKey(false);
fieldJERSEYNUMBER.setIsIdentity(false);
fieldJERSEYNUMBER.setUnique(false);
fieldJERSEYNUMBER.setShouldAllowNull(true);
table.addField(fieldJERSEYNUMBER);
FieldDefinition fieldPOSITION = new FieldDefinition();
fieldPOSITION.setName("POS");
fieldPOSITION.setTypeName("VARCHAR2");
fieldPOSITION.setSize(20);
fieldPOSITION.setSubSize(0);
fieldPOSITION.setIsPrimaryKey(false);
fieldPOSITION.setIsIdentity(false);
fieldPOSITION.setUnique(false);
fieldPOSITION.setShouldAllowNull(true);
table.addField(fieldPOSITION);
FieldDefinition fieldTEAMID = new FieldDefinition();
fieldTEAMID.setName("TEAM_ID");
fieldTEAMID.setTypeName("NUMBER");
fieldTEAMID.setSize(18);
fieldTEAMID.setSubSize(0);
fieldTEAMID.setIsPrimaryKey(false);
fieldTEAMID.setIsIdentity(false);
fieldTEAMID.setUnique(false);
fieldTEAMID.setShouldAllowNull(true);
table.addField(fieldTEAMID);
FieldDefinition fieldTEAMIDDESCRIPTION = new FieldDefinition();
fieldTEAMIDDESCRIPTION.setName("TEAM_ID_DESC");
fieldTEAMIDDESCRIPTION.setTypeName("VARCHAR2");
fieldTEAMIDDESCRIPTION.setSize(50);
fieldTEAMIDDESCRIPTION.setSubSize(0);
fieldTEAMIDDESCRIPTION.setIsPrimaryKey(false);
fieldTEAMIDDESCRIPTION.setIsIdentity(false);
fieldTEAMIDDESCRIPTION.setUnique(false);
fieldTEAMIDDESCRIPTION.setShouldAllowNull(true);
table.addField(fieldTEAMIDDESCRIPTION);
return table;
}
public TableDefinition buildHOCKEYTEAMTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_HOCKEY_TEAM");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(false);
fieldID.setUnique(false);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldIDDESCRIPTION = new FieldDefinition();
fieldIDDESCRIPTION.setName("ID_DESC");
fieldIDDESCRIPTION.setTypeName("VARCHAR2");
fieldIDDESCRIPTION.setSize(50);
fieldIDDESCRIPTION.setSubSize(0);
fieldIDDESCRIPTION.setIsPrimaryKey(true);
fieldIDDESCRIPTION.setIsIdentity(false);
fieldIDDESCRIPTION.setUnique(false);
fieldIDDESCRIPTION.setShouldAllowNull(false);
table.addField(fieldIDDESCRIPTION);
FieldDefinition fieldNAME = new FieldDefinition();
fieldNAME.setName("NAME");
fieldNAME.setTypeName("VARCHAR2");
fieldNAME.setSize(20);
fieldNAME.setSubSize(0);
fieldNAME.setIsPrimaryKey(false);
fieldNAME.setIsIdentity(false);
fieldNAME.setUnique(false);
fieldNAME.setShouldAllowNull(false);
table.addField(fieldNAME);
FieldDefinition fieldLEVEL = new FieldDefinition();
fieldLEVEL.setName("TEAM_LEVEL");
fieldLEVEL.setTypeName("VARCHAR2");
fieldLEVEL.setSize(20);
fieldLEVEL.setSubSize(0);
fieldLEVEL.setIsPrimaryKey(false);
fieldLEVEL.setIsIdentity(false);
fieldLEVEL.setUnique(false);
fieldLEVEL.setShouldAllowNull(false);
table.addField(fieldLEVEL);
FieldDefinition fieldHOMECOLOR = new FieldDefinition();
fieldHOMECOLOR.setName("HOME_COLOR");
fieldHOMECOLOR.setTypeName("VARCHAR2");
fieldHOMECOLOR.setSize(20);
fieldHOMECOLOR.setSubSize(0);
fieldHOMECOLOR.setIsPrimaryKey(false);
fieldHOMECOLOR.setIsIdentity(false);
fieldHOMECOLOR.setUnique(false);
fieldHOMECOLOR.setShouldAllowNull(true);
table.addField(fieldHOMECOLOR);
FieldDefinition fieldAWAYCOLOR = new FieldDefinition();
fieldAWAYCOLOR.setName("AWAY_COLOR");
fieldAWAYCOLOR.setTypeName("VARCHAR2");
fieldAWAYCOLOR.setSize(20);
fieldAWAYCOLOR.setSubSize(0);
fieldAWAYCOLOR.setIsPrimaryKey(false);
fieldAWAYCOLOR.setIsIdentity(false);
fieldAWAYCOLOR.setUnique(false);
fieldAWAYCOLOR.setShouldAllowNull(true);
table.addField(fieldAWAYCOLOR);
FieldDefinition fieldOWNERID = new FieldDefinition();
fieldOWNERID.setName("OWNER_ID");
fieldOWNERID.setTypeName("NUMBER");
fieldOWNERID.setSize(18);
fieldOWNERID.setSubSize(0);
fieldOWNERID.setIsPrimaryKey(false);
fieldOWNERID.setIsIdentity(false);
fieldOWNERID.setUnique(false);
fieldOWNERID.setShouldAllowNull(true);
fieldOWNERID.setForeignKeyFieldName("XML_OWNERSHIP_GROUP.ID");
table.addField(fieldOWNERID);
return table;
}
public TableDefinition buildOWNERSHIPGROUPTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_OWNERSHIP_GROUP");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(false);
fieldID.setUnique(false);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldNAME = new FieldDefinition();
fieldNAME.setName("NAME");
fieldNAME.setTypeName("VARCHAR2");
fieldNAME.setSize(20);
fieldNAME.setSubSize(0);
fieldNAME.setIsPrimaryKey(false);
fieldNAME.setIsIdentity(false);
fieldNAME.setUnique(false);
fieldNAME.setShouldAllowNull(false);
table.addField(fieldNAME);
FieldDefinition fieldVERSION = new FieldDefinition();
fieldVERSION.setName("VERSION");
fieldVERSION.setTypeName("NUMERIC");
fieldVERSION.setSize(15);
fieldVERSION.setShouldAllowNull(true );
fieldVERSION.setIsPrimaryKey(false );
fieldVERSION.setUnique(false );
fieldVERSION.setIsIdentity(false );
table.addField(fieldVERSION);
return table;
}
public TableDefinition buildPLAYERROLESTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_PLAYER_ROLES");
FieldDefinition fieldPLAYERID = new FieldDefinition();
fieldPLAYERID.setName("PLAYER_ID");
fieldPLAYERID.setTypeName("NUMBER");
fieldPLAYERID.setSize(18);
fieldPLAYERID.setSubSize(0);
fieldPLAYERID.setIsPrimaryKey(false);
fieldPLAYERID.setIsIdentity(false);
fieldPLAYERID.setUnique(false);
fieldPLAYERID.setShouldAllowNull(false);
fieldPLAYERID.setForeignKeyFieldName("XML_HOCKEY_PLAYER.PLAYERID");
table.addField(fieldPLAYERID);
FieldDefinition fieldROLEID = new FieldDefinition();
fieldROLEID.setName("ROLE_ID");
fieldROLEID.setTypeName("NUMBER");
fieldROLEID.setSize(18);
fieldROLEID.setSubSize(0);
fieldROLEID.setIsPrimaryKey(false);
fieldROLEID.setIsIdentity(false);
fieldROLEID.setUnique(false);
fieldROLEID.setShouldAllowNull(false);
fieldROLEID.setForeignKeyFieldName("XML_ROLE.ID");
table.addField(fieldROLEID);
return table;
}
public TableDefinition buildROLETable() {
TableDefinition table = new TableDefinition();
table.setName("XML_ROLE");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(false);
fieldID.setUnique(false);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
FieldDefinition fieldDESCRIPTION = new FieldDefinition();
fieldDESCRIPTION.setName("DESCRIP");
fieldDESCRIPTION.setTypeName("VARCHAR2");
fieldDESCRIPTION.setSize(50);
fieldDESCRIPTION.setSubSize(0);
fieldDESCRIPTION.setIsPrimaryKey(false);
fieldDESCRIPTION.setIsIdentity(false);
fieldDESCRIPTION.setUnique(false);
fieldDESCRIPTION.setShouldAllowNull(false);
table.addField(fieldDESCRIPTION);
return table;
}
public static TableDefinition buildPRIVILEGESTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_OWNER_PRIVILEGES");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("OWNER_ID");
fieldID.setTypeName("NUMERIC");
fieldID.setSize(18); // 260271: increase from 15 to 18 to match XML_OWNERSHIP_GROUP.ID as it is the default precision for "NUMERIC" fields
fieldID.setShouldAllowNull(false);
fieldID.setIsPrimaryKey(false);
fieldID.setUnique(false);
fieldID.setIsIdentity(false);
fieldID.setForeignKeyFieldName("XML_OWNERSHIP_GROUP.ID");
table.addField(fieldID);
FieldDefinition fieldPRIVILEGES = new FieldDefinition();
fieldPRIVILEGES.setName("PRIVILEGE");
fieldPRIVILEGES.setTypeName("VARCHAR");
fieldPRIVILEGES.setSize(200);
fieldPRIVILEGES.setShouldAllowNull(false);
fieldPRIVILEGES.setIsPrimaryKey(false);
fieldPRIVILEGES.setUnique(false);
fieldPRIVILEGES.setIsIdentity(false);
table.addField(fieldPRIVILEGES);
return table;
}
public TableDefinition buildWORLDTable() {
TableDefinition table = new TableDefinition();
table.setName("XML_WORLD");
FieldDefinition fieldID = new FieldDefinition();
fieldID.setName("ID");
fieldID.setTypeName("NUMBER");
fieldID.setSize(18);
fieldID.setSubSize(0);
fieldID.setIsPrimaryKey(true);
fieldID.setIsIdentity(false);
fieldID.setUnique(false);
fieldID.setShouldAllowNull(false);
table.addField(fieldID);
return table;
}
/**
* Remove pk constraint as there is a identity field, and H2, HSQL do not allow this.
*/
@Override
public void replaceTables(DatabaseSession session, SchemaManager schemaManager) {
if (session.getPlatform().isH2() || session.getPlatform().isHSQL()) {
for (Iterator<TableDefinition> iterator = getTableDefinitions().iterator(); iterator.hasNext(); ) {
TableDefinition table = iterator.next();
if (table.getName().equals("XML_CITYSLICKER") || table.getName().equals("XML_COUNTRY_DWELLER")) {
for (Iterator<FieldDefinition> fields = table.getFields().iterator(); fields.hasNext(); ) {
fields.next().setIsPrimaryKey(false);
}
}
}
}
super.replaceTables(session, schemaManager);
}
}