blob: 70d038edf340b5a59d5b0ba586a55a873eae8fd0 [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:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.eis.cobol;
import java.util.*;
import org.eclipse.persistence.internal.eis.cobol.*;
import org.eclipse.persistence.internal.helper.*;
public class CobolTestModel extends org.eclipse.persistence.testing.framework.TestModel {
public CobolTestModel() {
super();
addTest(new CobolTestBaseSuite());
}
public static CobolRow getConversionRow() {
Vector fields = new Vector();
Vector values = new Vector();
fields.addElement(new DatabaseField("emp-ssn"));
values.addElement("123456789");
fields.addElement(new DatabaseField("emp-salary"));
values.addElement("25000.25");
fields.addElement(new DatabaseField("emp-num-depend"));
values.addElement("2");
fields.addElement(new DatabaseField("emp-num-vacation"));
values.addElement("-245");
fields.addElement(new DatabaseField("emp-name"));
Vector name = new Vector();
Vector nameFields = new Vector();
Vector nameValues = new Vector();
nameFields.addElement(new DatabaseField("emp-name-first"));
nameValues.addElement("John");
nameFields.addElement(new DatabaseField("emp-name-last"));
nameValues.addElement("Doe");
name.addElement(new CobolRow(nameFields, nameValues));
values.addElement(name);
fields.addElement(new DatabaseField("emp-dependents"));
Vector dependents = new Vector();
Vector wifeFields = new Vector();
Vector wifeValues = new Vector();
wifeFields.addElement(new DatabaseField("emp-dependents-name"));
wifeValues.addElement("Jane Doe");
wifeFields.addElement(new DatabaseField("emp-dependents-ssn"));
wifeValues.addElement("987654321");
dependents.addElement(new CobolRow(wifeFields, wifeValues));
Vector sonFields = new Vector();
Vector sonValues = new Vector();
sonFields.addElement(new DatabaseField("emp-dependents-name"));
sonValues.addElement("John Doe Jr.");
sonFields.addElement(new DatabaseField("emp-dependents-ssn"));
sonValues.addElement("835873949");
dependents.addElement(new CobolRow(sonFields, sonValues));
values.addElement(dependents);
fields.addElement(new DatabaseField("emp-tasks"));
Vector tasks = new Vector();
tasks.addElement("1001");
tasks.addElement("1002");
tasks.addElement("1003");
tasks.addElement("1004");
values.addElement(tasks);
return new CobolRow(fields, values);
}
public static RecordMetaData getConversionRecord() {
RecordMetaData record = new RecordMetaData("emp-record");
ElementaryFieldMetaData ssn = new ElementaryFieldMetaData("emp-ssn", record);
ssn.setSize(5);
ssn.setOffset(0);
ssn.setType(FieldMetaData.PACKED_DECIMAL);
record.addField(ssn);
ElementaryFieldMetaData salary = new ElementaryFieldMetaData("emp-salary", record);
salary.setSize(7);
salary.setOffset(5);
salary.setType(FieldMetaData.ALPHA_NUMERIC);
salary.setDecimalPosition(6);
record.addField(salary);
ElementaryFieldMetaData numDepend = new ElementaryFieldMetaData("emp-num-depend", record);
numDepend.setSize(1);
numDepend.setOffset(12);
numDepend.setType(FieldMetaData.BINARY);
record.addField(numDepend);
ElementaryFieldMetaData vacationDays = new ElementaryFieldMetaData("emp-num-vacation", record);
vacationDays.setSize(2);
vacationDays.setOffset(13);
vacationDays.setType(FieldMetaData.BINARY);
vacationDays.setIsSigned(true);
record.addField(vacationDays);
CompositeFieldMetaData name = new CompositeFieldMetaData("emp-name", record);
name.setOffset(15);
ElementaryFieldMetaData lastName = new ElementaryFieldMetaData("emp-name-first", record);
lastName.setSize(15);
lastName.setOffset(15);
lastName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.addField(lastName);
ElementaryFieldMetaData firstName = new ElementaryFieldMetaData("emp-name-last", record);
firstName.setSize(15);
firstName.setOffset(30);
firstName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.addField(firstName);
record.addField(name);
ElementaryFieldMetaData tasks = new ElementaryFieldMetaData("emp-tasks", record);
tasks.setSize(4);
tasks.setOffset(45);
tasks.setType(FieldMetaData.ALPHA_NUMERIC);
tasks.setArraySize(4);
record.addField(tasks);
ElementaryFieldMetaData department = new ElementaryFieldMetaData("emp-depart", record);
department.setSize(15);
department.setOffset(45);
department.setType(FieldMetaData.ALPHA_NUMERIC);
department.setFieldRedefined(tasks);
department.setIsFieldRedefine(true);
record.addField(department);
CompositeFieldMetaData dependents = new CompositeFieldMetaData("emp-dependents", record);
dependents.setOffset(61);
dependents.setArraySize(10);
dependents.setDependentFieldName("emp-num-depend");
ElementaryFieldMetaData fullName = new ElementaryFieldMetaData("emp-dependents-name", record);
fullName.setSize(30);
fullName.setOffset(61);
fullName.setType(FieldMetaData.ALPHA_NUMERIC);
dependents.addField(fullName);
ElementaryFieldMetaData number = new ElementaryFieldMetaData("emp-dependents-ssn", record);
number.setSize(9);
number.setOffset(91);
number.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
dependents.addField(number);
record.addField(dependents);
return record;
}
public static String getSimpleCopyBookString() {
return "01 emp-record." + Helper.cr() + "04 emp-ssn pic 9(12) comp-3." + Helper.cr() + "04 emp-name." + Helper.cr() + "06 emp-name-last pic x(15)." + Helper.cr() + "06 emp-name-first pic x(15)." + Helper.cr() + "06 emp-name-mi pic x." + Helper.cr() + "04 emp-addr." + Helper.cr() + "06 emp-addr-street." + Helper.cr() + "08 emp-addr-street-no pic 9(5)." + Helper.cr() + "08 emp-addr-street-name pic x(15)." + Helper.cr() + "06 emp-addr-st pic x(2)." + Helper.cr() + "06 emp-addr-zip pic x(9).";
}
public static String getDeepNestedCopyBookString() {
return "01 everything-record." + Helper.cr() + "03 everything-universe." + Helper.cr() + "05 universe-galaxycluster." + Helper.cr() + "07 galaxycluster-galaxy." + Helper.cr() + "09 galaxy-solarsystem." + Helper.cr() + "11 solarsystem-planet." + Helper.cr() + "13 planet-continent." + Helper.cr() + "15 continent-country." + Helper.cr() + "17 country-region." + Helper.cr() + "19 region-state." + Helper.cr() + "21 state-county." + Helper.cr() + "23 county-city." + Helper.cr() + "25 city-neighborhood." + Helper.cr() + "27 neighborhood-block." + Helper.cr() + "29 block-house." + Helper.cr() + "31 house-person." + Helper.cr() + "33 person-organ." + Helper.cr() + "35 organ-tissue." + Helper.cr() + "37 tissue-cell." + Helper.cr() + "39 cell-molecule." + Helper.cr() + "41 molecule-atom." + Helper.cr() + "43 atom-nucleus." + Helper.cr() + "45 nucleus-nuetron." + Helper.cr() + "47 nuetron-quark." + Helper.cr() + "49 quark-infinity.";
}
public static String getMultipleRecordString() {
return Helper.cr() + Helper.cr() + Helper.cr() + Helper.cr() + Helper.cr() + " *sldkfjaweitwoieawoeirgfa;e" + Helper.cr() + " sherdfgkjhdsfglkjsdhfguheriuh" + Helper.cr() + Helper.cr() + "01 emp-time." + Helper.cr() + "05 time-hour pic 99." + Helper.cr() + "05 time-minute pic xx." + Helper.cr() + "05 time-second pic xx." + Helper.cr() + Helper.cr() + "*********************" + "**************************" + Helper.cr() + Helper.cr() + Helper.cr() + "01 MEMBER-TABLE." + Helper.cr() + Helper.cr() + "05 CLUB-NAME PIC X(20)." + Helper.cr() + Helper.cr() + "05 NUM-MEMBERS PIC 9(5)." + Helper.cr() + Helper.cr() + "05 MEMBERS." + Helper.cr() + Helper.cr() + "10 MEM-NAME PIC X(20)." + Helper.cr() + Helper.cr() + "10 MEM-NUM PIC 9(15)." + Helper.cr() + Helper.cr() + Helper.cr() + Helper.cr() + "PROCEDURE DIVISION." + Helper.cr() + getSimpleCopyBookString();
}
public static String getOccursDependsCopyBookString() {
return "01 club-record." + Helper.cr() + "05 club-enrollment pic 9(5)." + Helper.cr() + "05 club-members " + Helper.cr() + "occurs 1 to 50 times" + Helper.cr() + " depending on club-enrollment." + Helper.cr() + "10 member-name pic x(20)." + Helper.cr() + "10 member-number pic x(5).";
}
public static String getRedefinesCopyBookString() {
return "01 emp-record." + Helper.cr() + "04 emp-ssn pic 9(12) comp-3." + Helper.cr() + "04 emp-ssn-int redefines emp-ssn pic 9(12) comp." + Helper.cr() + "04 emp-addr." + Helper.cr() + "06 emp-addr-street." + Helper.cr() + "08 emp-addr-street-no pic 9(5)." + Helper.cr() + "08 emp-addr-street-name pic x(5)." + Helper.cr() + "06 emp-addr-rr redefines emp-addr-street." + Helper.cr() + "08 emp-addr-rr-no pic 9(15)." + Helper.cr() + "08 emp-addr-rr-box pic 9(5)." + Helper.cr() + "06 emp-addr-zip pic x(9).";
}
public static String getComplexPicStatementCopyBookString() {
return "01 emp-record." + Helper.cr() + "04 emp-salary pic S9(5)V99 sign leading seperate." + Helper.cr() + "04 emp-ex pic Z(5).ZZ." + Helper.cr() + "04 emp-ex2 pic -9(4).99." + Helper.cr() + "04 emp-ex3 pic +ZZ99.99." + Helper.cr() + "04 emp-ex4 pic ----9.99-." + Helper.cr() + "04 emp-ex5 pic S9(5).99.";
}
public static String getFillerCopyBookString() {
return "01 emp-record." + Helper.cr() + "04 pic x(5)." + Helper.cr() + "04." + Helper.cr() + "07 pic xx." + Helper.cr() + "07 pic xx.";
}
public static RecordMetaData getFillerRecord() {
RecordMetaData record = new RecordMetaData("emp-record");
ElementaryFieldMetaData fill1 = new ElementaryFieldMetaData("filler", record);
fill1.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
fill1.setSize(5);
fill1.setOffset(0);
record.addField(fill1);
CompositeFieldMetaData fillComp = new CompositeFieldMetaData("filler", record);
record.addField(fillComp);
ElementaryFieldMetaData fill2 = new ElementaryFieldMetaData("filler", record);
fill2.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
fill2.setSize(2);
fill2.setOffset(5);
fillComp.addField(fill2);
ElementaryFieldMetaData fill3 = new ElementaryFieldMetaData("filler", record);
fill3.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
fill3.setSize(2);
fill3.setOffset(7);
fillComp.addField(fill3);
return record;
}
public static RecordMetaData getComplexPicStatementRecord() {
RecordMetaData record = new RecordMetaData("emp-record");
ElementaryFieldMetaData salary = new ElementaryFieldMetaData("emp-salary", record);
salary.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
salary.setSize(8);
salary.setOffset(0);
salary.setDecimalPosition(5);
salary.setIsSigned(true);
record.addField(salary);
ElementaryFieldMetaData ex = new ElementaryFieldMetaData("emp-ex", record);
ex.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ex.setSize(8);
ex.setOffset(8);
record.addField(ex);
ElementaryFieldMetaData ex2 = new ElementaryFieldMetaData("emp-ex2", record);
ex2.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ex2.setSize(8);
ex2.setOffset(16);
record.addField(ex2);
ElementaryFieldMetaData ex3 = new ElementaryFieldMetaData("emp-ex3", record);
ex3.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ex3.setSize(8);
ex3.setOffset(24);
record.addField(ex3);
ElementaryFieldMetaData ex4 = new ElementaryFieldMetaData("emp-ex4", record);
ex4.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ex4.setSize(9);
ex4.setOffset(32);
record.addField(ex4);
ElementaryFieldMetaData ex5 = new ElementaryFieldMetaData("emp-ex5", record);
ex5.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ex5.setSize(8);
ex5.setOffset(41);
ex5.setIsSigned(true);
record.addField(ex5);
return record;
}
public static RecordMetaData getRedefinesRecord() {
RecordMetaData record = new RecordMetaData("emp-record");
ElementaryFieldMetaData ssn = new ElementaryFieldMetaData("emp-ssn", record);
ssn.setType(ElementaryFieldMetaData.PACKED_DECIMAL);
ssn.setSize(7);
ssn.setOffset(0);
record.addField(ssn);
ElementaryFieldMetaData ssnInt = new ElementaryFieldMetaData("emp-ssn-int", record);
ssnInt.setType(ElementaryFieldMetaData.BINARY);
ssnInt.setSize(5);
ssnInt.setOffset(0);
ssnInt.setIsFieldRedefine(true);
ssnInt.setFieldRedefined(ssn);
record.addField(ssnInt);
CompositeFieldMetaData address = new CompositeFieldMetaData("emp-addr", record);
CompositeFieldMetaData street = new CompositeFieldMetaData("emp-addr-street", record);
ElementaryFieldMetaData streetNumber = new ElementaryFieldMetaData("emp-addr-street-no", record);
streetNumber.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
streetNumber.setSize(5);
streetNumber.setOffset(7);
street.addField(streetNumber);
ElementaryFieldMetaData streetName = new ElementaryFieldMetaData("emp-addr-street-name", record);
streetName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
streetName.setSize(5);
streetName.setOffset(12);
street.addField(streetName);
address.addField(street);
CompositeFieldMetaData ruralRoute = new CompositeFieldMetaData("emp-addr-rr", record);
ruralRoute.setIsFieldRedefine(true);
ruralRoute.setFieldRedefined(street);
ElementaryFieldMetaData ruralRouteNum = new ElementaryFieldMetaData("emp-addr-rr-no", record);
ruralRouteNum.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ruralRouteNum.setSize(15);
ruralRouteNum.setOffset(7);
ruralRoute.addField(ruralRouteNum);
ElementaryFieldMetaData ruralRouteBox = new ElementaryFieldMetaData("emp-addr-rr-box", record);
ruralRouteBox.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
ruralRouteBox.setSize(5);
ruralRouteBox.setOffset(22);
ruralRoute.addField(ruralRouteBox);
address.addField(ruralRoute);
ElementaryFieldMetaData zip = new ElementaryFieldMetaData("emp-addr-zip", record);
zip.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
zip.setSize(9);
zip.setOffset(27);
address.addField(zip);
record.addField(address);
return record;
}
public static RecordMetaData getOccursDependsRecord() {
RecordMetaData record = new RecordMetaData("club-record");
ElementaryFieldMetaData enrollment = new ElementaryFieldMetaData("club-enrollment", record);
enrollment.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
enrollment.setSize(5);
enrollment.setOffset(0);
record.addField(enrollment);
CompositeFieldMetaData members = new CompositeFieldMetaData("club-members", record);
members.setArraySize(49);
members.setDependentFieldName("club-enrollment");
ElementaryFieldMetaData memName = new ElementaryFieldMetaData("member-name", record);
memName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
memName.setSize(20);
memName.setOffset(5);
members.addField(memName);
ElementaryFieldMetaData memNum = new ElementaryFieldMetaData("member-number", record);
memNum.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
memNum.setSize(5);
memNum.setOffset(25);
members.addField(memNum);
record.addField(members);
return record;
}
public static Vector getMultipleRecords() {
Vector records = new Vector(2);
RecordMetaData record = new RecordMetaData("emp-time");
ElementaryFieldMetaData hour = new ElementaryFieldMetaData("time-hour", record);
hour.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
hour.setSize(2);
hour.setOffset(0);
record.addField(hour);
ElementaryFieldMetaData min = new ElementaryFieldMetaData("time-minute", record);
min.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
min.setSize(2);
min.setOffset(2);
record.addField(min);
ElementaryFieldMetaData sec = new ElementaryFieldMetaData("time-second", record);
sec.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
sec.setSize(2);
sec.setOffset(4);
record.addField(sec);
records.addElement(record);
RecordMetaData record2 = new RecordMetaData("MEMBER-TABLE");
ElementaryFieldMetaData name = new ElementaryFieldMetaData("CLUB-NAME", record2);
name.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.setSize(20);
name.setOffset(0);
record2.addField(name);
ElementaryFieldMetaData number = new ElementaryFieldMetaData("NUM-MEMBERS", record2);
number.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
number.setSize(5);
number.setOffset(20);
record2.addField(number);
CompositeFieldMetaData member = new CompositeFieldMetaData("MEMBERS", record2);
ElementaryFieldMetaData memName = new ElementaryFieldMetaData("MEM-NAME", record2);
memName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
memName.setSize(20);
memName.setOffset(25);
member.addField(memName);
ElementaryFieldMetaData memNum = new ElementaryFieldMetaData("MEM-NUM", record2);
memNum.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
memNum.setSize(15);
memNum.setOffset(45);
member.addField(memNum);
record2.addField(member);
records.addElement(record2);
return records;
}
public static RecordMetaData getDeepNestedRecord() {
RecordMetaData everything = new RecordMetaData("everything-record");
CompositeFieldMetaData universe = new CompositeFieldMetaData("everything-universe", everything);
everything.addField(universe);
CompositeFieldMetaData galaxyCluster = new CompositeFieldMetaData("universe-galaxycluster", everything);
universe.addField(galaxyCluster);
CompositeFieldMetaData galaxy = new CompositeFieldMetaData("galaxycluster-galaxy", everything);
galaxyCluster.addField(galaxy);
CompositeFieldMetaData solarSystem = new CompositeFieldMetaData("galaxy-solarsystem", everything);
galaxy.addField(solarSystem);
CompositeFieldMetaData planet = new CompositeFieldMetaData("solarsystem-planet", everything);
solarSystem.addField(planet);
CompositeFieldMetaData continent = new CompositeFieldMetaData("planet-continent", everything);
planet.addField(continent);
CompositeFieldMetaData country = new CompositeFieldMetaData("continent-country", everything);
continent.addField(country);
CompositeFieldMetaData region = new CompositeFieldMetaData("country-region", everything);
country.addField(region);
CompositeFieldMetaData state = new CompositeFieldMetaData("region-state", everything);
region.addField(state);
CompositeFieldMetaData county = new CompositeFieldMetaData("state-county", everything);
state.addField(county);
CompositeFieldMetaData city = new CompositeFieldMetaData("county-city", everything);
county.addField(city);
CompositeFieldMetaData neighborhood = new CompositeFieldMetaData("city-neighborhood", everything);
city.addField(neighborhood);
CompositeFieldMetaData block = new CompositeFieldMetaData("neighborhood-block", everything);
neighborhood.addField(block);
CompositeFieldMetaData house = new CompositeFieldMetaData("block-house", everything);
block.addField(house);
CompositeFieldMetaData person = new CompositeFieldMetaData("house-person", everything);
house.addField(person);
CompositeFieldMetaData organ = new CompositeFieldMetaData("person-organ", everything);
person.addField(organ);
CompositeFieldMetaData tissue = new CompositeFieldMetaData("organ-tissue", everything);
organ.addField(tissue);
CompositeFieldMetaData cell = new CompositeFieldMetaData("tissue-cell", everything);
tissue.addField(cell);
CompositeFieldMetaData molecule = new CompositeFieldMetaData("cell-molecule", everything);
cell.addField(molecule);
CompositeFieldMetaData atom = new CompositeFieldMetaData("molecule-atom", everything);
molecule.addField(atom);
CompositeFieldMetaData nucleus = new CompositeFieldMetaData("atom-nucleus", everything);
atom.addField(nucleus);
CompositeFieldMetaData nuetron = new CompositeFieldMetaData("nucleus-nuetron", everything);
nucleus.addField(nuetron);
CompositeFieldMetaData quark = new CompositeFieldMetaData("nuetron-quark", everything);
nuetron.addField(quark);
CompositeFieldMetaData infinity = new CompositeFieldMetaData("quark-infinity", everything);
quark.addField(infinity);
return everything;
}
public static RecordMetaData getSimpleRecord() {
RecordMetaData record = new RecordMetaData("emp-record");
ElementaryFieldMetaData ssn = new ElementaryFieldMetaData("emp-ssn", record);
ssn.setSize(7);
ssn.setOffset(0);
ssn.setType(FieldMetaData.PACKED_DECIMAL);
record.addField(ssn);
CompositeFieldMetaData name = new CompositeFieldMetaData("emp-name", record);
ElementaryFieldMetaData lastName = new ElementaryFieldMetaData("emp-name-last", record);
lastName.setSize(15);
lastName.setOffset(7);
lastName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.addField(lastName);
ElementaryFieldMetaData firstName = new ElementaryFieldMetaData("emp-name-first", record);
firstName.setSize(15);
firstName.setOffset(22);
firstName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.addField(firstName);
ElementaryFieldMetaData middleInit = new ElementaryFieldMetaData("emp-name-mi", record);
middleInit.setSize(1);
middleInit.setOffset(37);
middleInit.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
name.addField(middleInit);
record.addField(name);
CompositeFieldMetaData address = new CompositeFieldMetaData("emp-addr", record);
CompositeFieldMetaData street = new CompositeFieldMetaData("emp-addr-street", record);
ElementaryFieldMetaData number = new ElementaryFieldMetaData("emp-addr-street-no", record);
number.setSize(5);
number.setOffset(38);
number.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
street.addField(number);
ElementaryFieldMetaData streetName = new ElementaryFieldMetaData("emp-addr-street-name", record);
streetName.setSize(15);
streetName.setOffset(43);
streetName.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
street.addField(streetName);
address.addField(street);
ElementaryFieldMetaData state = new ElementaryFieldMetaData("emp-addr-st", record);
state.setSize(2);
state.setOffset(58);
state.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
address.addField(state);
ElementaryFieldMetaData zip = new ElementaryFieldMetaData("emp-addr-zip", record);
zip.setSize(9);
zip.setOffset(60);
zip.setType(ElementaryFieldMetaData.ALPHA_NUMERIC);
address.addField(zip);
record.addField(address);
return record;
}
public static boolean compareCobolRows(CobolRow row1, CobolRow row2) {
if (row1 == row2) {
return true;
} else if ((row1 == null) || (row2 == null)) {
return false;
}
if (row1.size() != row2.size()) {
return false;
}
Enumeration<DatabaseField> fieldsEnum = row1.getFields().elements();
while (fieldsEnum.hasMoreElements()) {
DatabaseField field = fieldsEnum.nextElement();
DatabaseField fieldMatch = row2.getField(field);
if (fieldMatch == null) {
return false;
} else if (!compareValues(row1.get(field), row2.get(fieldMatch))) {
return false;
}
}
return true;
}
private static boolean compareValues(Object value1, Object value2) {
if (value1 == value2) {
return true;
} else if ((value1 == null) || (value2 == null)) {
return false;
}
if (value1 instanceof List) {
if (compareListFieldValues((List)value1, (List)value2)) {
return true;
}
}
if (value1.getClass() != value2.getClass()) {
return false;
}
if (value1 instanceof String) {
if (value1.equals(value2)) {
return true;
}
} else {
return false;
}
return false;
}
private static boolean compareListFieldValues(List value1, List value2) {
Iterator elementIter1 = value1.iterator();
Iterator elementIter2 = value2.iterator();
while (elementIter1.hasNext()) {
Object value = elementIter1.next();
if (value instanceof CobolRow) {
if (!compareCobolRows((CobolRow)value, (CobolRow)elementIter2.next())) {
return false;
}
} else {
if (!value.equals(elementIter2.next())) {
return false;
}
}
}
return true;
}
public static boolean compareCompositeObjects(CompositeObject object1, CompositeObject object2) {
if (object1 == object2) {
return true;
} else if ((object1 == null) || (object2 == null)) {
return false;
}
if (!object1.getName().equals(object2.getName())) {
return false;
}
if (object1.getFields().size() != object2.getFields().size()) {
return false;
}
Enumeration fieldsEnum = object1.getFields().elements();
while (fieldsEnum.hasMoreElements()) {
FieldMetaData field = (FieldMetaData)fieldsEnum.nextElement();
FieldMetaData fieldMatch = object2.getFieldNamed(field.getName());
if (fieldMatch == null) {
return false;
}
if (!compareFields(field, fieldMatch)) {
return false;
}
}
return true;
}
public static boolean compareFields(FieldMetaData field1, FieldMetaData field2) {
if (field1 == field2) {
return true;
} else if ((field1 == null) || (field2 == null)) {
return false;
}
if ((field1.getArraySize() != field2.getArraySize()) || (!field1.getDependentFieldName().equals(field2.getDependentFieldName()))) {
return false;
}
if (field1.isComposite() && field2.isComposite()) {
if (!compareCompositeObjects((CompositeObject)field1, (CompositeObject)field2)) {
return false;
}
} else if (field1.isComposite() || field2.isComposite()) {
return false;
} else {
if (!compareElementaryFields((ElementaryFieldMetaData)field1, (ElementaryFieldMetaData)field2)) {
return false;
}
}
return true;
}
public static boolean compareElementaryFields(ElementaryFieldMetaData field1, ElementaryFieldMetaData field2) {
if (field1.isFieldRedefine() && field2.isFieldRedefine()) {
if (!compareFields(field1.getFieldRedefined(), field2.getFieldRedefined())) {
return false;
}
} else if (field1.isFieldRedefine() || field2.isFieldRedefine()) {
return false;
}
if ((field1.getSize() == field2.getSize()) && (field1.getOffset() == field2.getOffset()) && (field1.getType() == field2.getType()) && (field1.getDecimalPosition() == field2.getDecimalPosition()) && (field1.isSigned() == field2.isSigned())) {
return true;
}
return false;
}
/**
* Return the JUnit suite to allow JUnit runner to find it.
*/
public static junit.framework.TestSuite suite() {
return new CobolTestModel();
}
}