/******************************************************************************* * Copyright (c) 1998, 2015 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 v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.testing.sdo.helper.equalityhelper; import commonj.sdo.DataObject; import commonj.sdo.Property; import java.util.ArrayList; import java.util.List; import org.eclipse.persistence.sdo.SDOConstants; import org.eclipse.persistence.sdo.SDODataObject; import org.eclipse.persistence.sdo.SDOProperty; import org.eclipse.persistence.sdo.SDOType; import org.eclipse.persistence.testing.sdo.SDOTestCase; public class SDOEqualityHelperEqualTestCases extends SDOTestCase { protected String rootTypeName = "rootTypeName"; protected String rootTypeUri = "rootTypeTypeUri"; protected String containedTypeName = "containedTypeName"; protected String containedTypeUri = "containedTypeTypeUri"; protected String containedType1Name = "containedType1Name"; protected String containedType1Uri = "containedType1TypeUri"; protected String containedByContainedTypeName = "containedByContainedTypeName"; protected String containedBycontainedType1Uri = "containedBycontainedTypeTypeUri"; protected SDODataObject root; protected SDODataObject root1; protected SDODataObject containedDataObject; protected SDODataObject containedDataObject_1; protected SDODataObject containedDataObject1; protected SDODataObject containedByContainedDataObject; protected SDOType rootType; protected SDOType containedType; protected SDOType containedType_1; protected SDOType containedType1; protected SDOType containedByContainedType; protected SDOProperty rootProperty1; protected SDOProperty rootProperty2; protected SDOProperty rootProperty3; protected SDOProperty rootProperty4; protected SDOProperty containedProperty1; protected SDOProperty containedProperty2; protected SDOProperty containedProperty_ChangeSummary; protected SDOProperty contained1Property1; protected SDOProperty containedByContainedProperty1; protected SDOProperty containedByContainedProperty2; // Data structures for UC02xx (bidirectional property between internal nodes) protected String containedType3Name = "containedType3Name"; protected String containedType3Uri = "containedType3TypeUri"; protected SDOType containedByContainedType3; protected SDODataObject containedByContainedDataObject3; protected String containedByContainedTypeName3 = "containedByContainedTypeName3"; protected String containedBycontainedType3Uri = "containedBycontainedTypeType3Uri"; protected SDOProperty containedByContainedProperty3; protected SDOProperty contained1Property3; protected SDOType containedType3; protected SDOProperty containedProperty3; protected List objects = new ArrayList(); protected List objects1 = new ArrayList(); public SDOEqualityHelperEqualTestCases(String name) { super(name); } /** * Structure: * * root * rootproperty1 --> is DataType; SDOString <---> value: "test" * rootproperty2 --> not DataType <---> value: containedDataObject * root's child: * containedDataObject1 * contained1Property1 --> not DataType; bidirectional <---> value: containedByContainedDataObject * containedDataObject * containedProperty1 --> is DataType; SDOString <---> value: "test1" * containedProperty2 --> not DataType <---> value: containedByContainedDataObject * containedProperty_ChangeSummary --> not DataType <---> value: chSum(ChangeSummary) * containedDataObject's child: * containedByContainedDataObject * containedByContainedProperty1 --> not DataType; bidirectional <---> value: containedDataObejct1 * * Covered test cases: * Test case 1: copied root's DataType property rootproperty1 has same value * Test Case 2: copied root's not DataType property rootproperty2 has a copied DataObject from containedDataObject * Test case 3: there exists dataobject's bidircetional not containment property has another DataObjcet as value * Test Case 4: there exists dataobject's unidircetional not containment property has another DataObjcet as value * Test Case 5: there exists dataobject's not containment property has another DataObjcet that is not in containment tree as value * Test Case 6: copied containedProperty's ChangeSummary Type property containedProperty_ChangeSummary has a copied ChangeSummary from source's ChangeSummary chSum */ public void setUp() { super.setUp(); SDOType changeSummaryType = (SDOType) typeHelper.getType(SDOConstants.SDO_URL, SDOConstants.CHANGESUMMARY); // first we set up root data object DataObject rootTypeDO = defineType(rootTypeUri, rootTypeName); rootType = (SDOType)typeHelper.define(rootTypeDO); rootType.setOpen(true); rootProperty1 = new SDOProperty(aHelperContext);// root's property1 rootProperty1.setName("rootproperty1-datatype"); SDOType rootProperty1_type = SDOConstants.SDO_STRING;// string type rootProperty1_type.setDataType(true);// datatype rootProperty1.setType(rootProperty1_type); rootType.addDeclaredProperty(rootProperty1);// add this property to root type's declared list rootProperty2 = new SDOProperty(aHelperContext);//root's property2 rootProperty2.setName("rootproperty2-notdatatype"); rootProperty2.setContainment(true);// containment property DataObject rootProperty2_typeDO = defineType("notDataTypeUri", "notDataType"); SDOType rootProperty2_type = (SDOType)typeHelper.define(rootProperty2_typeDO); rootProperty2_type.setDataType(false);// not datatype rootProperty2.setType(rootProperty2_type); rootType.addDeclaredProperty(rootProperty2); rootProperty3 = new SDOProperty(aHelperContext);// root's property3 rootProperty3.setName("rootproperty3-notdatatype"); rootProperty3.setContainment(true);// containment property DataObject rootProperty3_typeDO = defineType("notDataTypeUri1", "notDataType1"); SDOType rootProperty3_type = (SDOType)typeHelper.define(rootProperty3_typeDO); rootProperty3_type.setDataType(false);// not datatype rootProperty3.setType(rootProperty3_type); rootType.addDeclaredProperty(rootProperty3); rootProperty4 = new SDOProperty(aHelperContext); rootProperty4.setName("rootproperty4-list"); rootProperty4.setContainment(true); DataObject rootProperty4_typeDO = defineType("listPropertyUri", "listProperty"); SDOType rootProperty4_type = (SDOType)typeHelper.define(rootProperty4_typeDO); rootProperty4_type.setDataType(false); rootProperty4.setType(rootProperty4_type); rootType.addDeclaredProperty(rootProperty4); DataObject containedTypeDO = defineType(containedTypeUri, containedTypeName); containedType = (SDOType)typeHelper.define(containedTypeDO); containedProperty1 = new SDOProperty(aHelperContext);// containedDataObject's property1 containedProperty1.setName("containedProperty1-dataType"); SDOType containedProperty1_type = SDOConstants.SDO_STRING;// String Type containedProperty1_type.setDataType(true);// dataType containedProperty1.setType(containedProperty1_type); containedType.addDeclaredProperty(containedProperty1); containedProperty2 = new SDOProperty(aHelperContext);// containedDataObject's property2 containedProperty2.setName("containedProperty2-notdataType"); containedProperty2.setContainment(true);// containment property DataObject containedProperty2_typeDO = defineType("containedProperty2Uri", "containedProperty2_notdataType"); SDOType containedProperty2_type = (SDOType)typeHelper.define(containedProperty2_typeDO); containedProperty2_type.setDataType(false);// not datatype containedProperty2.setType(containedProperty2_type); containedType.addDeclaredProperty(containedProperty2); // then, we create one dataobject as root's noncontainment property' value containedDataObject1 = new SDODataObject(); DataObject containedType1DO = defineType(containedType1Uri, containedType1Name); containedType1 = (SDOType)typeHelper.define(containedType1DO); containedDataObject1._setType(containedType1); contained1Property1 = new SDOProperty(aHelperContext);// containedDataObject1's property1 contained1Property1.setName("contained1Property1-notdataType"); contained1Property1.setContainment(false);// not containment property DataObject contained1Property1_typeDO = defineType("contained1Property1Uri", "contained1Property1_notdataType"); SDOType contained1Property1_type = (SDOType)typeHelper.define(contained1Property1_typeDO); contained1Property1_type.setDataType(false);// not datatype contained1Property1.setType(contained1Property1_type); // bidirectional to containedByContainedDataObject contained1Property1.setOpposite(containedByContainedProperty1); containedType1.addDeclaredProperty(contained1Property1); // finally, we create a dataobject contained by containedDataObject containedByContainedDataObject = new SDODataObject(); DataObject containedByContainedTypeDO = defineType(containedBycontainedType1Uri, containedByContainedTypeName); containedByContainedType = (SDOType)typeHelper.define(containedByContainedTypeDO); containedByContainedDataObject._setType(containedByContainedType); containedByContainedProperty1 = new SDOProperty(aHelperContext);// containedByContainedDataObject's property1 containedByContainedProperty1.setName("containedByContainedProperty1-notdataType"); containedByContainedProperty1.setContainment(false);// not containment property DataObject containedByContainedProperty1_typeDO = defineType("containedByContainedProperty1Uri", "containedByContainedProperty1_notdataType"); SDOType containedByContainedProperty1_type = (SDOType)typeHelper.define(containedByContainedProperty1_typeDO); containedByContainedProperty1_type.setDataType(false);// not datatype containedByContainedProperty1.setType(containedByContainedProperty1_type); // bidirectional to containedDataObject1 containedByContainedProperty1.setOpposite(contained1Property1); containedByContainedType.addDeclaredProperty(containedByContainedProperty1); // set opposite property contained1Property1.setOpposite(containedByContainedProperty1); containedByContainedProperty2 = new SDOProperty(aHelperContext);// containedByContainedDataObject's property1 containedByContainedProperty2.setName("containedByContainedProperty2-dataType"); containedByContainedProperty2.setContainment(false);// not containment property DataObject containedByContainedProperty2_typeDO = defineType("containedByContainedProperty2Uri", "containedByContainedProperty2_notdataType"); SDOType containedByContainedProperty2_type = (SDOType)typeHelper.define(containedByContainedProperty2_typeDO); containedByContainedProperty2_type.setDataType(false);// not datatype containedByContainedProperty2.setType(containedByContainedProperty2_type); containedByContainedType.addDeclaredProperty(containedByContainedProperty2); containedProperty_ChangeSummary = new SDOProperty(aHelperContext); containedProperty_ChangeSummary.setContainment(false); //SDOType containedProperty_ChangeSummary_type = new SDOType("containedProperty_ChangeSummaryuri", "containedProperty_ChangeSummary"); //containedProperty_ChangeSummary_type.setDataType(false); containedProperty_ChangeSummary.setType(changeSummaryType); containedProperty_ChangeSummary.setName("containedProperty_ChangeSummary"); containedType.addDeclaredProperty(containedProperty_ChangeSummary); root = (SDODataObject)dataFactory.create(rootType); root1 = (SDODataObject)dataFactory.create(rootType); containedDataObject = (SDODataObject)dataFactory.create(containedType); containedDataObject_1 = (SDODataObject)dataFactory.create(containedType); // set up relationship root.set(rootProperty1, "test"); root1.set(rootProperty1, "test"); root.set(rootProperty2, containedDataObject);// child: containedDataObject root1.set(rootProperty2, containedDataObject_1); //root.set(rootProperty3, containedDataObject1);// child: containedDataObject1 //root1.set(rootProperty3, containedDataObject1); containedDataObject.set(containedProperty1, "test1"); containedDataObject_1.set(containedProperty1, "test1"); // enabled 20060914 //containedDataObject.set(containedProperty2, containedByContainedDataObject);// child: containedByContainedDataObject //containedDataObject_1.set(containedProperty2, containedByContainedDataObject);// child: containedByContainedDataObject //containedDataObject1.set(contained1Property1, containedByContainedDataObject);// opposite //containedByContainedDataObject.set(containedByContainedProperty1, containedDataObject1);// opposite /* // UC02xx: setup some bidirectional properties that have the same copy root // but are 1 level down from the source root so that copy root != source root // new CBCDO2 off off CDO containedByContainedType3 = new SDOType(containedBycontainedType3Uri, containedByContainedTypeName3); // add property to do //containedByContainedType3.addDeclaredProperty(containedByContainedProperty3); // 20060913 //containedType3 = new SDOType(containedType3Uri, containedType3Name); // add property to do containedByContainedType3.addDeclaredProperty(contained1Property3); // new DO containedByContainedDataObject3 = (SDODataObject)dataFactory.create(// containedByContainedType3); // 2 new opposite properties CBCP2 and C1P2 between CBCDO and CBCDO2 // set opposite property // containedByContainedDataObject3.set(contained1Property3, containedByContainedDataObject); // set opposite property containedByContainedDataObject.set(containedByContainedProperty3, containedByContainedDataObject3); // child: containedByContainedDataObject // containedDataObject.set(containedProperty3, containedByContainedDataObject3); // attach opposite properties between CBCDO and CBCDO2 // bidirectional to containedDataObject1 containedByContainedProperty3.setOpposite(contained1Property3); // reset opposite set above when property paramenter used to be null contained1Property3.setOpposite(containedByContainedProperty3); */ } }