blob: cab2126984a116000b668c6de064df4277773418 [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.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
*/
@Override
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);
*/
}
}