| /* |
| * 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(); |
| } |
| } |