You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Ritika Maheshwari <ri...@us.ibm.com> on 2006/08/23 20:29:14 UTC

how to define non contained relationships

here is the xsd which I am inputting to XSD2JavaGenerator

schema 
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ibm.com/websphere/fvt/ejbquery/emf"
xmlns:ritika="http://www.ibm.com/websphere/fvt/ejbquery/emf"
xmlns:sdo="commonj.sdo/XML"
xmlns:sdoJava="commonj.sdo/java"
sdoJava:package="com.ibm.websphere.fvt.ejbquery.emf">
<complexType name="DataGraphRoot">
    <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="deptMed" 
type="ritika:DeptMed"/>
      <element maxOccurs="unbounded" minOccurs="0" name="empMed" 
type="ritika:EmpMed"/>
      <element maxOccurs="unbounded" minOccurs="0" name="projectMed" 
type="ritika:ProjectMed"/>
      <element maxOccurs="unbounded" minOccurs="0" name="taskMed" 
type="ritika:TaskMed"/>
      <!-- <element name="changeSummary" type="sdo:ChangeSummaryType" /> 
-->
    </sequence>
  </complexType>
<complexType name="DeptMed">
   <sequence>
    <element name="deptno" type="int"/>
    <element name="name" type="string"/>
    <element name="budget" type="double"/>
    <element sdo:oppositeProperty="manages" 
sdo:propertyType="ritika:EmpMed" name="mgr" type="ritika:EmpMed" />
    <element sdo:oppositeProperty="dept" 
sdo:propertyType="ritika:ProjectMed"  name="proj" type="ritika:ProjectMed" 
/>
    <element sdo:oppositeProperty="dept" sdo:propertyType="ritika:EmpMed" 
name="emp" type="ritika:EmpMed"  />
   </sequence>
  </complexType>
<complexType name="EmpMed">
    <sequence>
    <element name="empid" type="int"/>
    <element name="name" type="string"/>
    <element name="salary" type="double"/>
    <element name="bonus" type="double"/>
    <element sdo:oppositeProperty="emp" sdo:propertyType="ritika:DeptMed" 
name="dept" type="ritika:DeptMed" />
    <element sdo:oppositeProperty="emp" sdo:propertyType="ritika:TaskMed" 
name="task" type="ritika:TaskMed" />
    <element sdo:oppositeProperty="mgr" sdo:propertyType="ritika:DeptMed" 
name="manages" type="ritika:DeptMed" />
    </sequence>
  </complexType>
 <complexType name="ProjectMed">
     <sequence>
    <element name="projid" type="int"/>
    <element name="cost" type="double"/>
    <element name="startDate" type="dateTime" 
sdoJava:instanceClass="java.sql.Timestamp"/>
    <element name="endDate" type="dateTime" 
sdoJava:instanceClass="java.sql.Timestamp"/>
    <element sdo:oppositeProperty="proj" sdo:propertyType="ritika:DeptMed" 
name="dept" type="ritika:DeptMed" />
    <element sdo:oppositeProperty="proj" sdo:propertyType="ritika:TaskMed" 
name="task" type="ritika:TaskMed" />
    </sequence>
  </complexType>
<complexType name="TaskMed">
    <sequence>
    <element name="taskid" type="int"/>
    <element name="description" type="string"/>
    <element name="startDate" type="dateTime" 
sdoJava:instanceClass="java.sql.Timestamp" />
    <element name="endDate" type="dateTime" 
sdoJava:instanceClass="java.sql.Timestamp" />
    <element sdo:oppositeProperty="task" 
sdo:propertyType="ritika:ProjectMed" name="proj" 
type="ritika:ProjectMed"/>
    <element sdo:oppositeProperty="task" sdo:propertyType="ritika:EmpMed" 
name="emp" type="ritika:EmpMed" />
    </sequence>
  </complexType>
</schema>


Now if I set the manages relationship on Employee to dept2 like this
emp1.setManages(dept2);

Then the manages relationship on emp1 is updated to dept2. But dept 2 
eContainer becomes emp1 and its mgr relation still remains null.Although 
it is the inverse relation of the manages.Ideally it should have been set 
to Emp1.
The behaviour which I wanted to attain was to have EmpMed , DeptMed, 
ProjectMed and TaskMed classes to be contained within DataGraphRoot.And 
any relations between these four classes to be non contained.
I believe that to attain this behaviour the XSD needs to be modified.But I 
do not find any examples could some one provide some input please


ritika