/*
 * Copyright (c) 1998, 2018 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:
//     Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.models.insurance;

import org.eclipse.persistence.tools.schemaframework.*;

/**
 * This class was generated by the TopLink table creator generator.
 * It stores the meta-data (tables) that define the database schema.
 * @see org.eclipse.persistence.sessions.factories.TableCreatorClassGenerator
 */
public class InsuranceTableCreator extends TableCreator {
    public InsuranceTableCreator() {
        setName("Insurance");

        addTableDefinition(buildCHILDNAMTable());
        addTableDefinition(buildCLAIMTable());
        addTableDefinition(buildHOLDERTable());
        addTableDefinition(buildINS_ADDRTable());
        addTableDefinition(buildINS_PHONETable());
        addTableDefinition(buildPOLICYTable());
        addTableDefinition(buildVHCL_CLMTable());
        addTableDefinition(buildVHCL_POLTable());
        addTableDefinition(buildBCCL_POLTable());
    }

    public TableDefinition buildCHILDNAMTable() {
        TableDefinition table = new TableDefinition();
        table.setName("CHILDNAM");

        FieldDefinition fieldHOLDER_ID = new FieldDefinition();
        fieldHOLDER_ID.setName("HOLDER_ID");
        fieldHOLDER_ID.setTypeName("NUMBER");
        fieldHOLDER_ID.setSize(18);
        fieldHOLDER_ID.setSubSize(0);
        fieldHOLDER_ID.setIsPrimaryKey(true);
        fieldHOLDER_ID.setIsIdentity(false);
        fieldHOLDER_ID.setUnique(false);
        fieldHOLDER_ID.setShouldAllowNull(false);
        table.addField(fieldHOLDER_ID);

        FieldDefinition fieldCHILD_NAME = new FieldDefinition();
        fieldCHILD_NAME.setName("CHILD_NAME");
        fieldCHILD_NAME.setTypeName("VARCHAR2");
        fieldCHILD_NAME.setSize(30);
        fieldCHILD_NAME.setSubSize(0);
        fieldCHILD_NAME.setIsPrimaryKey(true);
        fieldCHILD_NAME.setIsIdentity(false);
        fieldCHILD_NAME.setUnique(false);
        fieldCHILD_NAME.setShouldAllowNull(false);
        table.addField(fieldCHILD_NAME);

        ForeignKeyConstraint foreignKeyFK_CHILDNAM_HOLDER_ID = new ForeignKeyConstraint();
        foreignKeyFK_CHILDNAM_HOLDER_ID.setName("CHILD_HOLDER");
        foreignKeyFK_CHILDNAM_HOLDER_ID.setTargetTable("HOLDER");
        foreignKeyFK_CHILDNAM_HOLDER_ID.addSourceField("HOLDER_ID");
        foreignKeyFK_CHILDNAM_HOLDER_ID.addTargetField("SSN");
        table.addForeignKeyConstraint(foreignKeyFK_CHILDNAM_HOLDER_ID);

        return table;
    }

    public TableDefinition buildCLAIMTable() {
        TableDefinition table = new TableDefinition();
        table.setName("CLAIM");

        FieldDefinition fieldCLM_ID = new FieldDefinition();
        fieldCLM_ID.setName("CLM_ID");
        fieldCLM_ID.setTypeName("NUMBER");
        fieldCLM_ID.setSize(18);
        fieldCLM_ID.setSubSize(0);
        fieldCLM_ID.setIsPrimaryKey(true);
        fieldCLM_ID.setIsIdentity(false);
        fieldCLM_ID.setUnique(false);
        fieldCLM_ID.setShouldAllowNull(false);
        table.addField(fieldCLM_ID);

        FieldDefinition fieldPOL_ID = new FieldDefinition();
        fieldPOL_ID.setName("POL_ID");
        fieldPOL_ID.setTypeName("NUMBER");
        fieldPOL_ID.setSize(18);
        fieldPOL_ID.setSubSize(0);
        fieldPOL_ID.setIsPrimaryKey(false);
        fieldPOL_ID.setIsIdentity(false);
        fieldPOL_ID.setUnique(false);
        fieldPOL_ID.setShouldAllowNull(true);
        table.addField(fieldPOL_ID);

        FieldDefinition fieldCLM_TYPE = new FieldDefinition();
        fieldCLM_TYPE.setName("CLM_TYPE");
        fieldCLM_TYPE.setTypeName("VARCHAR2");
        fieldCLM_TYPE.setSize(20);
        fieldCLM_TYPE.setSubSize(0);
        fieldCLM_TYPE.setIsPrimaryKey(false);
        fieldCLM_TYPE.setIsIdentity(false);
        fieldCLM_TYPE.setUnique(false);
        fieldCLM_TYPE.setShouldAllowNull(true);
        table.addField(fieldCLM_TYPE);

        FieldDefinition fieldAMOUNT = new FieldDefinition();
        fieldAMOUNT.setName("AMOUNT");
        fieldAMOUNT.setTypeName("FLOAT");
        fieldAMOUNT.setSize(18);
        fieldAMOUNT.setSubSize(4);
        fieldAMOUNT.setIsPrimaryKey(false);
        fieldAMOUNT.setIsIdentity(false);
        fieldAMOUNT.setUnique(false);
        fieldAMOUNT.setShouldAllowNull(true);
        table.addField(fieldAMOUNT);

        FieldDefinition fieldDISEASE = new FieldDefinition();
        fieldDISEASE.setName("DISEASE");
        fieldDISEASE.setTypeName("VARCHAR2");
        fieldDISEASE.setSize(50);
        fieldDISEASE.setSubSize(0);
        fieldDISEASE.setIsPrimaryKey(false);
        fieldDISEASE.setIsIdentity(false);
        fieldDISEASE.setUnique(false);
        fieldDISEASE.setShouldAllowNull(true);
        table.addField(fieldDISEASE);

        FieldDefinition fieldAREA = new FieldDefinition();
        fieldAREA.setName("AREA");
        fieldAREA.setTypeName("NUMBER");
        fieldAREA.setSize(18);
        fieldAREA.setSubSize(4);
        fieldAREA.setIsPrimaryKey(false);
        fieldAREA.setIsIdentity(false);
        fieldAREA.setUnique(false);
        fieldAREA.setShouldAllowNull(true);
        table.addField(fieldAREA);

        ForeignKeyConstraint foreignKeyFK_CLAIM_POL_ID = new ForeignKeyConstraint();
        foreignKeyFK_CLAIM_POL_ID.setName("CLAIM_POL");
        foreignKeyFK_CLAIM_POL_ID.setTargetTable("POLICY");
        foreignKeyFK_CLAIM_POL_ID.addSourceField("POL_ID");
        foreignKeyFK_CLAIM_POL_ID.addTargetField("POL_ID");
        table.addForeignKeyConstraint(foreignKeyFK_CLAIM_POL_ID);

        return table;
    }

    public TableDefinition buildHOLDERTable() {
        TableDefinition table = new TableDefinition();
        table.setName("HOLDER");

        FieldDefinition fieldSSN = new FieldDefinition();
        fieldSSN.setName("SSN");
        fieldSSN.setTypeName("NUMBER");
        fieldSSN.setSize(18);
        fieldSSN.setSubSize(0);
        fieldSSN.setIsPrimaryKey(true);
        fieldSSN.setIsIdentity(false);
        fieldSSN.setUnique(false);
        fieldSSN.setShouldAllowNull(false);
        table.addField(fieldSSN);

        FieldDefinition fieldF_NAME = new FieldDefinition();
        fieldF_NAME.setName("F_NAME");
        fieldF_NAME.setTypeName("VARCHAR2");
        fieldF_NAME.setSize(20);
        fieldF_NAME.setSubSize(0);
        fieldF_NAME.setIsPrimaryKey(false);
        fieldF_NAME.setIsIdentity(false);
        fieldF_NAME.setUnique(false);
        fieldF_NAME.setShouldAllowNull(true);
        table.addField(fieldF_NAME);

        FieldDefinition fieldL_NAME = new FieldDefinition();
        fieldL_NAME.setName("L_NAME");
        fieldL_NAME.setTypeName("VARCHAR2");
        fieldL_NAME.setSize(20);
        fieldL_NAME.setSubSize(0);
        fieldL_NAME.setIsPrimaryKey(false);
        fieldL_NAME.setIsIdentity(false);
        fieldL_NAME.setUnique(false);
        fieldL_NAME.setShouldAllowNull(true);
        table.addField(fieldL_NAME);

        FieldDefinition fieldSEX = new FieldDefinition();
        fieldSEX.setName("SEX");
        fieldSEX.setTypeName("CHAR");
        fieldSEX.setSize(1);
        fieldSEX.setSubSize(0);
        fieldSEX.setIsPrimaryKey(false);
        fieldSEX.setIsIdentity(false);
        fieldSEX.setUnique(false);
        fieldSEX.setShouldAllowNull(true);
        table.addField(fieldSEX);

        FieldDefinition fieldBDATE = new FieldDefinition();
        fieldBDATE.setName("BDATE");
        fieldBDATE.setTypeName("DATE");
        fieldBDATE.setSize(7);
        fieldBDATE.setSubSize(0);
        fieldBDATE.setIsPrimaryKey(false);
        fieldBDATE.setIsIdentity(false);
        fieldBDATE.setUnique(false);
        fieldBDATE.setShouldAllowNull(true);
        table.addField(fieldBDATE);

        FieldDefinition fieldOCC = new FieldDefinition();
        fieldOCC.setName("OCC");
        fieldOCC.setTypeName("VARCHAR2");
        fieldOCC.setSize(20);
        fieldOCC.setSubSize(0);
        fieldOCC.setIsPrimaryKey(false);
        fieldOCC.setIsIdentity(false);
        fieldOCC.setUnique(false);
        fieldOCC.setShouldAllowNull(true);
        table.addField(fieldOCC);

        return table;
    }

    public TableDefinition buildINS_ADDRTable() {
        TableDefinition table = new TableDefinition();
        table.setName("INS_ADDR");

        FieldDefinition fieldSSN = new FieldDefinition();
        fieldSSN.setName("SSN");
        fieldSSN.setTypeName("NUMBER");
        fieldSSN.setSize(18);
        fieldSSN.setSubSize(0);
        fieldSSN.setIsPrimaryKey(true);
        fieldSSN.setIsIdentity(false);
        fieldSSN.setUnique(false);
        fieldSSN.setShouldAllowNull(false);
        table.addField(fieldSSN);

        FieldDefinition fieldSTREET = new FieldDefinition();
        fieldSTREET.setName("STREET");
        fieldSTREET.setTypeName("VARCHAR2");
        fieldSTREET.setSize(30);
        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(25);
        fieldCITY.setSubSize(0);
        fieldCITY.setIsPrimaryKey(false);
        fieldCITY.setIsIdentity(false);
        fieldCITY.setUnique(false);
        fieldCITY.setShouldAllowNull(true);
        table.addField(fieldCITY);

        FieldDefinition fieldSTATE = new FieldDefinition();
        fieldSTATE.setName("STATE");
        fieldSTATE.setTypeName("VARCHAR2");
        fieldSTATE.setSize(2);
        fieldSTATE.setSubSize(0);
        fieldSTATE.setIsPrimaryKey(false);
        fieldSTATE.setIsIdentity(false);
        fieldSTATE.setUnique(false);
        fieldSTATE.setShouldAllowNull(true);
        table.addField(fieldSTATE);

        FieldDefinition fieldCOUNTRY = new FieldDefinition();
        fieldCOUNTRY.setName("COUNTRY");
        fieldCOUNTRY.setTypeName("VARCHAR2");
        fieldCOUNTRY.setSize(20);
        fieldCOUNTRY.setSubSize(0);
        fieldCOUNTRY.setIsPrimaryKey(false);
        fieldCOUNTRY.setIsIdentity(false);
        fieldCOUNTRY.setUnique(false);
        fieldCOUNTRY.setShouldAllowNull(true);
        table.addField(fieldCOUNTRY);

        FieldDefinition fieldZIPCODE = new FieldDefinition();
        fieldZIPCODE.setName("ZIPCODE");
        fieldZIPCODE.setTypeName("VARCHAR2");
        fieldZIPCODE.setSize(10);
        fieldZIPCODE.setSubSize(0);
        fieldZIPCODE.setIsPrimaryKey(false);
        fieldZIPCODE.setIsIdentity(false);
        fieldZIPCODE.setUnique(false);
        fieldZIPCODE.setShouldAllowNull(true);
        table.addField(fieldZIPCODE);

        ForeignKeyConstraint foreignKeyFK_INS_ADDR_SSN = new ForeignKeyConstraint();
        foreignKeyFK_INS_ADDR_SSN.setName("ADDRESS_HOLDER");
        foreignKeyFK_INS_ADDR_SSN.setTargetTable("HOLDER");
        foreignKeyFK_INS_ADDR_SSN.addSourceField("SSN");
        foreignKeyFK_INS_ADDR_SSN.addTargetField("SSN");
        table.addForeignKeyConstraint(foreignKeyFK_INS_ADDR_SSN);

        return table;
    }

    public TableDefinition buildINS_PHONETable() {
        TableDefinition table = new TableDefinition();
        table.setName("INS_PHONE");

        FieldDefinition fieldHOLDER_SSN = new FieldDefinition();
        fieldHOLDER_SSN.setName("HOLDER_SSN");
        fieldHOLDER_SSN.setTypeName("NUMBER");
        fieldHOLDER_SSN.setSize(18);
        fieldHOLDER_SSN.setSubSize(0);
        fieldHOLDER_SSN.setIsPrimaryKey(true);
        fieldHOLDER_SSN.setIsIdentity(false);
        fieldHOLDER_SSN.setUnique(false);
        fieldHOLDER_SSN.setShouldAllowNull(false);
        table.addField(fieldHOLDER_SSN);

        FieldDefinition fieldTYPE = new FieldDefinition();
        fieldTYPE.setName("TYPE");
        fieldTYPE.setTypeName("VARCHAR2");
        fieldTYPE.setSize(10);
        fieldTYPE.setSubSize(0);
        fieldTYPE.setIsPrimaryKey(true);
        fieldTYPE.setIsIdentity(false);
        fieldTYPE.setUnique(false);
        fieldTYPE.setShouldAllowNull(false);
        table.addField(fieldTYPE);

        FieldDefinition fieldAREACODE = new FieldDefinition();
        fieldAREACODE.setName("AREACODE");
        fieldAREACODE.setTypeName("NUMBER");
        fieldAREACODE.setSize(3);
        fieldAREACODE.setSubSize(0);
        fieldAREACODE.setIsPrimaryKey(false);
        fieldAREACODE.setIsIdentity(false);
        fieldAREACODE.setUnique(false);
        fieldAREACODE.setShouldAllowNull(true);
        table.addField(fieldAREACODE);

        FieldDefinition fieldPHONE_NUMBER = new FieldDefinition();
        fieldPHONE_NUMBER.setName("PHONE_NUMBER");
        fieldPHONE_NUMBER.setTypeName("NUMBER");
        fieldPHONE_NUMBER.setSize(10);
        fieldPHONE_NUMBER.setSubSize(0);
        fieldPHONE_NUMBER.setIsPrimaryKey(false);
        fieldPHONE_NUMBER.setIsIdentity(false);
        fieldPHONE_NUMBER.setUnique(false);
        fieldPHONE_NUMBER.setShouldAllowNull(true);
        table.addField(fieldPHONE_NUMBER);

        ForeignKeyConstraint foreignKeyFK_INS_PHONE_HOLDER_SSN = new ForeignKeyConstraint();
        foreignKeyFK_INS_PHONE_HOLDER_SSN.setName("INS_PHONE_HOLDER");
        foreignKeyFK_INS_PHONE_HOLDER_SSN.setTargetTable("HOLDER");
        foreignKeyFK_INS_PHONE_HOLDER_SSN.addSourceField("HOLDER_SSN");
        foreignKeyFK_INS_PHONE_HOLDER_SSN.addTargetField("SSN");
        table.addForeignKeyConstraint(foreignKeyFK_INS_PHONE_HOLDER_SSN);

        return table;
    }

    public TableDefinition buildPOLICYTable() {
        TableDefinition table = new TableDefinition();
        table.setName("POLICY");

        FieldDefinition fieldPOL_ID = new FieldDefinition();
        fieldPOL_ID.setName("POL_ID");
        fieldPOL_ID.setTypeName("NUMBER");
        fieldPOL_ID.setSize(18);
        fieldPOL_ID.setSubSize(0);
        fieldPOL_ID.setIsPrimaryKey(true);
        fieldPOL_ID.setIsIdentity(false);
        fieldPOL_ID.setUnique(false);
        fieldPOL_ID.setShouldAllowNull(false);
        table.addField(fieldPOL_ID);

        FieldDefinition fieldSSN = new FieldDefinition();
        fieldSSN.setName("SSN");
        fieldSSN.setTypeName("NUMBER");
        fieldSSN.setSize(18);
        fieldSSN.setSubSize(0);
        fieldSSN.setIsPrimaryKey(false);
        fieldSSN.setIsIdentity(false);
        fieldSSN.setUnique(false);
        fieldSSN.setShouldAllowNull(true);
        table.addField(fieldSSN);

        FieldDefinition fieldDESCRIPT = new FieldDefinition();
        fieldDESCRIPT.setName("DESCRIPT");
        fieldDESCRIPT.setTypeName("VARCHAR2");
        fieldDESCRIPT.setSize(100);
        fieldDESCRIPT.setSubSize(0);
        fieldDESCRIPT.setIsPrimaryKey(false);
        fieldDESCRIPT.setIsIdentity(false);
        fieldDESCRIPT.setUnique(false);
        fieldDESCRIPT.setShouldAllowNull(true);
        table.addField(fieldDESCRIPT);

        FieldDefinition fieldPOL_TYPE = new FieldDefinition();
        fieldPOL_TYPE.setName("POL_TYPE");
        fieldPOL_TYPE.setTypeName("NUMBER");
        fieldPOL_TYPE.setSize(1);
        fieldPOL_TYPE.setSubSize(0);
        fieldPOL_TYPE.setIsPrimaryKey(false);
        fieldPOL_TYPE.setIsIdentity(false);
        fieldPOL_TYPE.setUnique(false);
        fieldPOL_TYPE.setShouldAllowNull(true);
        table.addField(fieldPOL_TYPE);

        FieldDefinition fieldMAX_COV = new FieldDefinition();
        fieldMAX_COV.setName("MAX_COV");
        fieldMAX_COV.setTypeName("NUMBER");
        fieldMAX_COV.setSize(18);
        fieldMAX_COV.setSubSize(4);
        fieldMAX_COV.setIsPrimaryKey(false);
        fieldMAX_COV.setIsIdentity(false);
        fieldMAX_COV.setUnique(false);
        fieldMAX_COV.setShouldAllowNull(true);
        table.addField(fieldMAX_COV);

        FieldDefinition fieldCOV_RATE = new FieldDefinition();
        fieldCOV_RATE.setName("COV_RATE");
        //NUMBER corresponds to long which is mapped to INTEGER data type in some database such as DB2 and MySQL.
        //FLOAT should be used which reflect float java type.
        fieldCOV_RATE.setTypeName("FLOAT(16)");
        fieldCOV_RATE.setSize(18);
        fieldCOV_RATE.setSubSize(4);
        fieldCOV_RATE.setIsPrimaryKey(false);
        fieldCOV_RATE.setIsIdentity(false);
        fieldCOV_RATE.setUnique(false);
        fieldCOV_RATE.setShouldAllowNull(true);
        table.addField(fieldCOV_RATE);

        FieldDefinition fieldCNST_DTE = new FieldDefinition();
        fieldCNST_DTE.setName("CNST_DTE");
        fieldCNST_DTE.setTypeName("DATE");
        fieldCNST_DTE.setSize(7);
        fieldCNST_DTE.setSubSize(0);
        fieldCNST_DTE.setIsPrimaryKey(false);
        fieldCNST_DTE.setIsIdentity(false);
        fieldCNST_DTE.setUnique(false);
        fieldCNST_DTE.setShouldAllowNull(true);
        table.addField(fieldCNST_DTE);

        ForeignKeyConstraint foreignKeyFK_POLICY_SSN = new ForeignKeyConstraint();
        foreignKeyFK_POLICY_SSN.setName("POLICY_HOLDER");
        foreignKeyFK_POLICY_SSN.setTargetTable("HOLDER");
        foreignKeyFK_POLICY_SSN.addSourceField("SSN");
        foreignKeyFK_POLICY_SSN.addTargetField("SSN");
        table.addForeignKeyConstraint(foreignKeyFK_POLICY_SSN);

        return table;
    }

    public TableDefinition buildVHCL_CLMTable() {
        TableDefinition table = new TableDefinition();
        table.setName("VHCL_CLM");

        FieldDefinition fieldCLM_ID = new FieldDefinition();
        fieldCLM_ID.setName("CLM_ID");
        fieldCLM_ID.setTypeName("NUMBER");
        fieldCLM_ID.setSize(18);
        fieldCLM_ID.setSubSize(0);
        fieldCLM_ID.setIsPrimaryKey(true);
        fieldCLM_ID.setIsIdentity(false);
        fieldCLM_ID.setUnique(false);
        fieldCLM_ID.setShouldAllowNull(false);
        table.addField(fieldCLM_ID);

        FieldDefinition fieldPART = new FieldDefinition();
        fieldPART.setName("PART");
        fieldPART.setTypeName("VARCHAR2");
        fieldPART.setSize(30);
        fieldPART.setSubSize(0);
        fieldPART.setIsPrimaryKey(false);
        fieldPART.setIsIdentity(false);
        fieldPART.setUnique(false);
        fieldPART.setShouldAllowNull(true);
        table.addField(fieldPART);

        FieldDefinition fieldPART_DESC = new FieldDefinition();
        fieldPART_DESC.setName("PART_DESC");
        fieldPART_DESC.setTypeName("VARCHAR2");
        fieldPART_DESC.setSize(30);
        fieldPART_DESC.setSubSize(0);
        fieldPART_DESC.setIsPrimaryKey(false);
        fieldPART_DESC.setIsIdentity(false);
        fieldPART_DESC.setUnique(false);
        fieldPART_DESC.setShouldAllowNull(true);
        table.addField(fieldPART_DESC);

        ForeignKeyConstraint foreignKeyFK_VHCL_CLM_CLM_ID = new ForeignKeyConstraint();
        foreignKeyFK_VHCL_CLM_CLM_ID.setName("VHCL_CLM_CLAIM");
        foreignKeyFK_VHCL_CLM_CLM_ID.setTargetTable("CLAIM");
        foreignKeyFK_VHCL_CLM_CLM_ID.addSourceField("CLM_ID");
        foreignKeyFK_VHCL_CLM_CLM_ID.addTargetField("CLM_ID");
        table.addForeignKeyConstraint(foreignKeyFK_VHCL_CLM_CLM_ID);

        return table;
    }

    public TableDefinition buildVHCL_POLTable() {
        TableDefinition table = new TableDefinition();
        table.setName("VHCL_POL");

        FieldDefinition fieldPOL_ID = new FieldDefinition();
        fieldPOL_ID.setName("POL_ID");
        fieldPOL_ID.setTypeName("NUMBER");
        fieldPOL_ID.setSize(18);
        fieldPOL_ID.setSubSize(0);
        fieldPOL_ID.setIsPrimaryKey(true);
        fieldPOL_ID.setIsIdentity(false);
        fieldPOL_ID.setUnique(false);
        fieldPOL_ID.setShouldAllowNull(false);
        table.addField(fieldPOL_ID);

        FieldDefinition fieldMODEL = new FieldDefinition();
        fieldMODEL.setName("MODEL");
        fieldMODEL.setTypeName("VARCHAR2");
        fieldMODEL.setSize(30);
        fieldMODEL.setSubSize(0);
        fieldMODEL.setIsPrimaryKey(false);
        fieldMODEL.setIsIdentity(false);
        fieldMODEL.setUnique(false);
        fieldMODEL.setShouldAllowNull(true);
        table.addField(fieldMODEL);

        ForeignKeyConstraint foreignKeyFK_VHCL_POL_POL_ID = new ForeignKeyConstraint();
        foreignKeyFK_VHCL_POL_POL_ID.setName("VHCL_POL_POLICY");
        foreignKeyFK_VHCL_POL_POL_ID.setTargetTable("POLICY");
        foreignKeyFK_VHCL_POL_POL_ID.addSourceField("POL_ID");
        foreignKeyFK_VHCL_POL_POL_ID.addTargetField("POL_ID");
        table.addForeignKeyConstraint(foreignKeyFK_VHCL_POL_POL_ID);

        return table;
    }

    public TableDefinition buildBCCL_POLTable() {
        TableDefinition table = new TableDefinition();
        table.setName("BCCL_POL");

        FieldDefinition fieldPOL_ID = new FieldDefinition();
        fieldPOL_ID.setName("POL_ID");
        fieldPOL_ID.setTypeName("NUMBER");
        fieldPOL_ID.setSize(18);
        fieldPOL_ID.setSubSize(0);
        fieldPOL_ID.setIsPrimaryKey(true);
        fieldPOL_ID.setIsIdentity(false);
        fieldPOL_ID.setUnique(false);
        fieldPOL_ID.setShouldAllowNull(false);
        table.addField(fieldPOL_ID);

        FieldDefinition fieldMODEL = new FieldDefinition();
        fieldMODEL.setName("COLOR");
        fieldMODEL.setTypeName("VARCHAR2");
        fieldMODEL.setSize(30);
        fieldMODEL.setSubSize(0);
        fieldMODEL.setIsPrimaryKey(false);
        fieldMODEL.setIsIdentity(false);
        fieldMODEL.setUnique(false);
        fieldMODEL.setShouldAllowNull(true);
        table.addField(fieldMODEL);

        ForeignKeyConstraint foreignKeyFK_BCCL_POL_POL_ID = new ForeignKeyConstraint();
        foreignKeyFK_BCCL_POL_POL_ID.setName("BCCL_POL_POLICY");
        foreignKeyFK_BCCL_POL_POL_ID.setTargetTable("POLICY");
        foreignKeyFK_BCCL_POL_POL_ID.addSourceField("POL_ID");
        foreignKeyFK_BCCL_POL_POL_ID.addTargetField("POL_ID");
        table.addForeignKeyConstraint(foreignKeyFK_BCCL_POL_POL_ID);

        return table;
    }
}
