You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fr...@apache.org on 2007/03/02 02:27:58 UTC

svn commit: r513576 [3/3] - in /incubator/tuscany/java/sdo: impl/src/main/java/org/apache/tuscany/sdo/impl/ impl/src/main/java/org/apache/tuscany/sdo/model/impl/ tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/ tools/src/main/java/o...

Modified: incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java?view=diff&rev=513576&r1=513575&r2=513576
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java (original)
+++ incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java Thu Mar  1 17:27:57 2007
@@ -30,6 +30,7 @@
 import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
 import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
 import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.emf.ecore.EClassifier;
 
 import commonj.sdo.Type;
 
@@ -64,6 +65,132 @@
         + genPackage.getImportedFactoryInterfaceName() + ".INSTANCE)";
     }
  
+    public static String getListKind(GenFeature genFeature, boolean suppressNotification )
+    {
+        boolean unsettable = genFeature.isUnsettable();
+        
+        if(suppressNotification)
+        {
+            return "ListKind.BASIC";
+        }
+        else if (genFeature.isEffectiveContains())
+        {
+            if (genFeature.isBidirectional())
+            {
+                if (genFeature.isResolveProxies())
+                {
+                    if( unsettable )
+                        return "ListKind.CONTAINMENT_INVERSE_RESOLVING_UNSETTABLE";
+                    else
+                        return "ListKind.CONTAINMENT_INVERSE_RESOLVING";
+                }
+                else
+                {
+                    if( unsettable )
+                        return "ListKind.CONTAINMENT_INVERSE_UNSETTABLE";
+                    else
+                        return "ListKind.CONTAINMENT_INVERSE";
+                }
+            }
+            else
+            {
+                if (genFeature.isBidirectional())
+                {
+                    if (genFeature.isResolveProxies())
+                    {
+                        if( unsettable )
+                            return "ListKind.CONTAINMENT_RESOLVING_UNSETTABLE";
+                        else
+                            return "ListKind.CONTAINMENT_RESOLVING";
+                    }
+                    else
+                    {
+                        if( unsettable )
+                            return "ListKind.CONTAINMENT_UNSETTABLE";
+                        else
+                            return "ListKind.CONTAINMENT";
+                    }
+                }
+            }
+        }
+        else if (genFeature.isReferenceType())
+        {
+            if (genFeature.isBidirectional())
+            {
+                GenFeature reverseFeature = genFeature.getReverse();
+                if (genFeature.isResolveProxies())
+                {
+                    if (reverseFeature.isListType())
+                    {
+                        if( unsettable )
+                            return "ListKind.NONCONTAINMENT_MANYINVERSE_RESOLVING_UNSETTABLE";
+                        else
+                            return "ListKind.NONCONTAINMENT_MANYINVERSE_RESOLVING";
+                    }
+                    else
+                    {
+                        if( unsettable )
+                            return "ListKind.NONCONTAINMENT_INVERSE_RESOLVING_UNSETTABLE";
+                        else
+                            return "ListKind.NONCONTAINMENT_INVERSE_RESOLVING";
+                    }
+                }
+                else
+                {
+                    if (reverseFeature.isListType())
+                    {
+                        if( unsettable )
+                            return "ListKind.NONCONTAINMENT_MANYINVERSE_UNSETTABLE";
+                        else
+                            return "ListKind.NONCONTAINMENT_MANYINVERSE";
+                    }
+                    else
+                    {
+                        if( unsettable )
+                            return "ListKind.NONCONTAINMENT_INVERSE_UNSETTABLE";
+                        else
+                            return "ListKind.NONCONTAINMENT_INVERSE";
+                    }
+                }
+            }
+            else
+            {
+                if (genFeature.isResolveProxies())
+                {
+                    if( unsettable )
+                        return "ListKind.NONCONTAINMENT_RESOLVING_UNSETTABLE";
+                    else
+                        return "ListKind.NONCONTAINMENT_RESOLVING";
+                }
+                else
+                {
+                    if( unsettable )
+                        return "ListKind.NONCONTAINMENT_UNSETTABLE";
+                    else
+                        return "ListKind.NONCONTAINMENT";
+                }
+            }
+        }
+        else
+        {   //datatype
+            if (genFeature.isUnique())
+            {
+                if( unsettable )
+                    return "ListKind.DATATYPE_UNIQUE_UNSETTABLE";
+                else
+                    return "ListKind.DATATYPE_UNIQUE";
+            }
+            else
+            {
+                if( unsettable )
+                    return "ListKind.DATATYPE_UNSETTABLE";
+                else
+                    return "ListKind.DATATYPE";
+            }
+        }
+        return "ListKind.CONTAINMENT";
+    }
+
     public static boolean hasChangeSummaryProperty(GenClass genClass)
     {
       return getChangeSummaryProperty(genClass) != null;
@@ -75,11 +202,15 @@
       for (Iterator i = genClass.getGenFeatures().iterator(); i.hasNext(); )
       {
         GenFeature genFeature = (GenFeature)i.next();
-        Type type = (Type)genFeature.getEcoreFeature().getEType();
-        //if (csType == type)// this doesn't work when generating sdoModel.xsd
-        if (csType.getName().equals(type.getName()) && csType.getURI().equals(type.getURI()))
-        {            
-          return genFeature.getUpperName();
+        EClassifier eClassifier = genFeature.getEcoreFeature().getEType();
+        if (eClassifier instanceof Type)
+        {
+          Type type = (Type)eClassifier;
+          //if (csType == type)// this doesn't work when generating sdoModel.xsd
+          if (csType.getName().equals(type.getName()) && csType.getURI().equals(type.getURI()))
+          {            
+            return genFeature.getUpperName();
+          }
         }
       }
       return null;

Modified: incubator/tuscany/java/sdo/tools/templates/models/SDOClass.javajet
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/templates/models/SDOClass.javajet?view=diff&rev=513576&r1=513575&r2=513576
==============================================================================
--- incubator/tuscany/java/sdo/tools/templates/models/SDOClass.javajet (original)
+++ incubator/tuscany/java/sdo/tools/templates/models/SDOClass.javajet Thu Mar  1 17:27:57 2007
@@ -640,7 +640,7 @@
         <%} else {
                 if (genFeature.getType().equals("commonj.sdo.Sequence")){%>
 		  <%=genFeature.getSafeName()%> = createSequence(INTERNAL_<%=genFeature.getUpperName()%>);<%} else {%>
-		  <%=genFeature.getSafeName()%> = createPropertyList(ListKind.CONTAINMENT, <%=genFeature.getListItemType()%>.class, <%=genFeature.getUpperName()%>);<%}}%>
+		  <%=genFeature.getSafeName()%> = createPropertyList(<%=SDOGenUtil.getListKind(genFeature, genFeature.isUnsettable())%>, <%=genFeature.getListItemType()%>.class, <%=genFeature.getUpperName()%>, <%=genFeature.isBidirectional()?genFeature.getReverse().getUpperName():"0" %>);<%}}%>
 		}
 		return <%=genFeature.getSafeName()%><%=genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes() ? ".map()" : ""%>;
       <%} else if (genFeature.isContainer()) {%>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org