public void initializePersonDescriptor() {
    MWTableDescriptor descriptor = getPersonDescriptor();
    MWTable table = tableNamed("PERSON2");
    descriptor.setPrimaryTable(table);

    descriptor.getCachingPolicy().setCacheType(MWCachingPolicy.CACHE_TYPE_FULL);
    descriptor.getCachingPolicy().setCacheSize(100);

    // sequencing
    descriptor.setUsesSequencing(true);
    descriptor.setSequenceNumberName("SEQ");
    descriptor.setSequenceNumberTable(table);
    descriptor.setSequenceNumberColumn(table.columnNamed("ID"));

    descriptor.addInheritancePolicy();
    MWRelationalDescriptorInheritancePolicy inheritancePolicy =
        (MWRelationalDescriptorInheritancePolicy) descriptor.getInheritancePolicy();
    inheritancePolicy.setReadSubclassesOnQuery(false);
    ((MWRelationalClassIndicatorFieldPolicy) inheritancePolicy.getClassIndicatorPolicy())
        .setField(table.columnNamed("C_TYPE"));
    ((MWRelationalClassIndicatorFieldPolicy) inheritancePolicy.getClassIndicatorPolicy())
        .setClassNameIsIndicator(true);

    // direct to field mappings
    addDirectMapping(descriptor, "id", table, "ID");
    addDirectMapping(descriptor, "name", table, "NAME");

    // 1-1 mappings
    MWOneToOneMapping bestFriendMapping =
        descriptor.addOneToOneMapping(descriptor.getMWClass().attributeNamed("bestFriend"));
    bestFriendMapping.setReferenceDescriptor(getEngineerDescriptor());
    bestFriendMapping.setReference(
        getEngineerDescriptor().getPrimaryTable().referenceNamed("PERSON2_PERSON22"));

    MWOneToOneMapping carMapping =
        descriptor.addOneToOneMapping(descriptor.getMWClass().attributeNamed("car"));
    carMapping.setReferenceDescriptor(getCarDescriptor());
    carMapping.setReference(table.referenceNamed("PERSON2_CAR"));
    carMapping.setPrivateOwned(true);

    MWOneToOneMapping representitiveMapping =
        descriptor.addOneToOneMapping(descriptor.getMWClass().attributeNamed("representitive"));
    representitiveMapping.setReferenceDescriptor(getSalesRepDescriptor());
    representitiveMapping.setReference(table.referenceNamed("PERSON2_PERSON23"));
  }
  public void initializeComputerDescriptor() {
    MWTableDescriptor descriptor = getComputerDescriptor();
    MWTable table = tableNamed("INH_COMP");
    descriptor.setPrimaryTable(table);

    descriptor.getCachingPolicy().setCacheType(MWCachingPolicy.CACHE_TYPE_FULL);
    descriptor.getCachingPolicy().setCacheSize(100);

    // sequencing
    descriptor.setUsesSequencing(true);
    descriptor.setSequenceNumberName("SEQ");
    descriptor.setSequenceNumberTable(table);
    descriptor.setSequenceNumberColumn(table.columnNamed("ID"));

    // afterload policy
    descriptor.addAfterLoadingPolicy();
    MWClass postLoadClass =
        typeNamed(
            "org.eclipse.persistence.tools.workbench.test.models.complexinheritance.Computer");
    ((MWDescriptorAfterLoadingPolicy) descriptor.getAfterLoadingPolicy())
        .setPostLoadMethodClass(postLoadClass);
    ((MWDescriptorAfterLoadingPolicy) descriptor.getAfterLoadingPolicy())
        .setPostLoadMethod(methodNamed(postLoadClass, "addToDescriptor"));

    // inheritance policy
    descriptor.addInheritancePolicy();
    MWRelationalDescriptorInheritancePolicy inheritancePolicy =
        (MWRelationalDescriptorInheritancePolicy) descriptor.getInheritancePolicy();
    inheritancePolicy.useClassExtractionMethodIndicatorPolicy();
    ((MWClassIndicatorExtractionMethodPolicy) inheritancePolicy.getClassIndicatorPolicy())
        .setClassExtractionMethod(methodNamed(descriptor.getMWClass(), "getClassFromRow"));

    // direct to field mapping
    addDirectMapping(descriptor, "id", table, "ID");
    addDirectMapping(descriptor, "manufacturer", table, "MANUFAC");
    addDirectMapping(descriptor, "memory", table, "MEMORY");
    addDirectMapping(descriptor, "processorMake", table, "MAKE");
    addDirectMapping(descriptor, "processorSpeed", table, "SPEED");
  }
  public void initializeVehicleDescriptor() {
    MWTableDescriptor descriptor = getVehicleDescriptor();
    MWTable table = tableNamed("VEHICLE");
    descriptor.setPrimaryTable(table);

    descriptor.getCachingPolicy().setCacheType(MWCachingPolicy.CACHE_TYPE_FULL);
    descriptor.getCachingPolicy().setCacheSize(100);

    // sequencing
    descriptor.setUsesSequencing(true);
    descriptor.setSequenceNumberName("SEQ");
    descriptor.setSequenceNumberTable(table);
    descriptor.setSequenceNumberColumn(table.columnNamed("ID"));

    // inheritance policy
    descriptor.addInheritancePolicy();
    MWRelationalDescriptorInheritancePolicy inheritancePolicy =
        (MWRelationalDescriptorInheritancePolicy) descriptor.getInheritancePolicy();

    MWRelationalClassIndicatorFieldPolicy classIndicatorPolicy =
        (MWRelationalClassIndicatorFieldPolicy) inheritancePolicy.getClassIndicatorPolicy();
    classIndicatorPolicy.setIndicatorType(
        new MWTypeDeclaration(classIndicatorPolicy, typeFor(java.lang.String.class)));

    classIndicatorPolicy.setField(table.columnNamed("TYPE"));

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getVehicleDescriptor())
        .setInclude(false);

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getNonFueledVehicleDescriptor())
        .setIndicatorValue("2");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getFueledVehicleDescriptor())
        .setIndicatorValue("1");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getBusDescriptor())
        .setIndicatorValue("3");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getCarDescriptor())
        .setIndicatorValue("4");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getBicycleDescriptor())
        .setIndicatorValue("6");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getSportsCarDescriptor())
        .setIndicatorValue("5");

    classIndicatorPolicy
        .getClassIndicatorValueForDescriptor(getBoatDescriptor())
        .setIndicatorValue("7");

    // direct to field mappings
    addDirectMapping(descriptor, "id", table, "ID");
    addDirectMapping(descriptor, "passengerCapacity", table, "CAPACITY");

    // 1-1 mappings
    MWOneToOneMapping ownerMapping =
        descriptor.addOneToOneMapping(descriptor.getMWClass().attributeNamed("owner"));
    ownerMapping.setReferenceDescriptor(getCompanyDescriptor());
    ownerMapping.setReference(table.referenceNamed("VEHICLE_COMPANY"));
  }