blob: 48b032fc31f99819302e18eeb65cd45160f2d464 [file] [log] [blame]
/*
* Copyright (c) 2011, 2020 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:
// Praba Vijayaratnam - 2.3 - inital implementation
package org.eclipse.persistence.testing.jaxrs.utils;
import org.eclipse.persistence.queries.SQLCall;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.sessions.Session;
import org.eclipse.persistence.testing.framework.TogglingFastTableCreator;
import org.eclipse.persistence.tools.schemaframework.FieldDefinition;
import org.eclipse.persistence.tools.schemaframework.TableDefinition;
public class JAXRSTableCreator extends TogglingFastTableCreator {
public JAXRSTableCreator() {
setName("JAXRSProject");
// dropTableConstraints(JUnitTestCase.getServerSession());
addTableDefinition(buildADDRESSTable());
addTableDefinition(buildPHONENUMBERTable());
addTableDefinition(buildCUSTOMERTable());
}
// CREATE TABLE "CUSTOMER" ( "ID" NUMBER NOT NULL ENABLE, "FIRST_NAME"
// VARCHAR2(50), "LAST_NAME" VARCHAR2(50), CONSTRAINT "CUSTOMER_PK" PRIMARY
// KEY ("ID") ENABLE ) /
// CREATE TABLE "ADDRESS" ( "ID" NUMBER NOT NULL ENABLE, "STREET"
// VARCHAR2(50), "CITY" VARCHAR2(50), CONSTRAINT "ADDRESS_PK" PRIMARY KEY
// ("ID") ENABLE, CONSTRAINT "ADDRESS_FK" FOREIGN KEY ("ID") REFERENCES
// "CUSTOMER" ("ID") ENABLE ) /
// CREATE TABLE "PHONENUMBER" ( "ID" NUMBER NOT NULL ENABLE, "TYPE"
// VARCHAR2(50), "NUM" VARCHAR2(50), "ID_CUSTOMER" NUMBER, CONSTRAINT
// "PHONE_NUMBER_PK" PRIMARY KEY ("ID") ENABLE, CONSTRAINT "PHONE_NUMBER_FK"
// FOREIGN KEY ("ID_CUSTOMER") REFERENCES "CUSTOMER" ("ID") ENABLE ) /
/**
* Dropping old tables/foreign keys from schema change.
*/
public void replaceTables(DatabaseSession session) {
super.replaceTables(session);
}
/**
* Drop table constraints
*/
public void dropTableConstraints(Session session) {
if (session.getLogin().getPlatform().isOracle()) {
try {
session.executeNonSelectingCall(new SQLCall("drop table CUSTOMER CASCADE CONSTRAINTS"));
} catch (Exception e) {
}
try {
session.executeNonSelectingCall(new SQLCall("drop table ADDRESS CASCADE CONSTRAINTS"));
} catch (Exception e) {
}
try {
session.executeNonSelectingCall(new SQLCall("drop table PHONENUMBER CASCADE CONSTRAINTS"));
} catch (Exception e) {
}
} else {
try {
session.executeNonSelectingCall(new SQLCall("drop table CUSTOMER"));
} catch (Exception e) {
}
try {
session.executeNonSelectingCall(new SQLCall("drop table ADDRESS"));
} catch (Exception e) {
}
try {
session.executeNonSelectingCall(new SQLCall("drop table PHONENUMBER"));
} catch (Exception e) {
}
}
}
public TableDefinition buildCUSTOMERTable() {
TableDefinition table = new TableDefinition();
table.setName("CUSTOMER");
FieldDefinition field = new FieldDefinition();
field.setName("ID");
field.setTypeName("NUMERIC");
field.setSize(15);
field.setShouldAllowNull(false);
field.setIsPrimaryKey(true);
field.setUnique(false);
field.setIsIdentity(true);
table.addField(field);
FieldDefinition field1 = new FieldDefinition();
field1.setName("FIRST_NAME");
field1.setTypeName("VARCHAR2");
field1.setSize(50);
field1.setShouldAllowNull(true);
field1.setIsPrimaryKey(false);
field1.setUnique(false);
field1.setIsIdentity(false);
table.addField(field1);
FieldDefinition field2 = new FieldDefinition();
field2.setName("LAST_NAME");
field2.setTypeName("VARCHAR2");
field2.setSize(50);
field2.setShouldAllowNull(true);
field2.setIsPrimaryKey(false);
field2.setUnique(false);
field2.setIsIdentity(false);
table.addField(field2);
return table;
}
public TableDefinition buildADDRESSTable() {
TableDefinition table = new TableDefinition();
table.setName("ADDRESS");
FieldDefinition field = new FieldDefinition();
field.setName("ID");
field.setTypeName("NUMERIC");
field.setSize(15);
field.setShouldAllowNull(false);
field.setIsPrimaryKey(true);
field.setUnique(false);
field.setIsIdentity(true);
field.setForeignKeyFieldName("CUSTOMER.ID");
table.addField(field);
FieldDefinition fieldSTREET = new FieldDefinition();
fieldSTREET.setName("STREET");
fieldSTREET.setTypeName("VARCHAR2");
fieldSTREET.setSize(50);
fieldSTREET.setSubSize(0);
fieldSTREET.setIsPrimaryKey(false);
fieldSTREET.setIsIdentity(false);
fieldSTREET.setUnique(false);
fieldSTREET.setShouldAllowNull(true);
table.addField(fieldSTREET);
FieldDefinition fieldCITY = new FieldDefinition();
fieldCITY.setName("CITY");
fieldCITY.setTypeName("VARCHAR2");
fieldCITY.setSize(50);
fieldCITY.setSubSize(0);
fieldCITY.setIsPrimaryKey(false);
fieldCITY.setIsIdentity(false);
fieldCITY.setUnique(false);
fieldCITY.setShouldAllowNull(true);
table.addField(fieldCITY);
return table;
}
public TableDefinition buildPHONENUMBERTable() {
TableDefinition table = new TableDefinition();
table.setName("PHONENUMBER");
FieldDefinition field = new FieldDefinition();
field.setName("ID");
field.setTypeName("NUMERIC");
field.setSize(15);
field.setShouldAllowNull(false);
field.setIsPrimaryKey(true);
field.setUnique(false);
field.setIsIdentity(false);
table.addField(field);
FieldDefinition field1 = new FieldDefinition();
field1.setName("TYPE");
field1.setTypeName("VARCHAR2");
field1.setSize(50);
field1.setShouldAllowNull(true);
field1.setIsPrimaryKey(false);
field1.setUnique(false);
field1.setIsIdentity(false);
table.addField(field1);
FieldDefinition field3 = new FieldDefinition();
field3.setName("NUM");
field3.setTypeName("VARCHAR2");
field3.setSize(50);
field3.setShouldAllowNull(true);
field3.setIsPrimaryKey(false);
field3.setUnique(false);
field3.setIsIdentity(false);
table.addField(field3);
FieldDefinition field4 = new FieldDefinition();
field4.setName("ID_CUSTOMER");
field4.setTypeName("NUMERIC");
field4.setSize(15);
field4.setShouldAllowNull(true);
field4.setIsPrimaryKey(false);
field4.setUnique(false);
field4.setIsIdentity(false);
field4.setForeignKeyFieldName("CUSTOMER.ID");
table.addField(field4);
return table;
}
}