예제 #1
0
 /**
  * Returns true if some modelelement may be owned by the given namespace
  *
  * @param m
  * @param ns
  * @return boolean
  */
 public boolean isValidNamespace(MModelElement m, MNamespace ns) {
   if (m == null || ns == null) return false;
   if (ns.getModel() != m.getModel()) return false;
   if (m == ns) return false;
   if (m instanceof MNamespace && m == getFirstSharedNamespace((MNamespace) m, ns)) return false;
   if (ns instanceof MInterface || ns instanceof MActor || ns instanceof MUseCase) return false;
   else if (ns instanceof MComponent) return (m instanceof MComponent && m != ns);
   else if (ns instanceof MCollaboration) {
     if (!(m instanceof MClassifierRole
         || m instanceof MAssociationRole
         || m instanceof MGeneralization
         || m instanceof MConstraint)) return false;
   } else if (ns instanceof MPackage) {
     if (!(m instanceof MPackage
         || m instanceof MClassifier
         || m instanceof MAssociation
         || m instanceof MGeneralization
         || m instanceof MDependency
         || m instanceof MConstraint
         || m instanceof MCollaboration
         || m instanceof MStateMachine
         || m instanceof MStereotype)) return false;
   } else if (ns instanceof MClass) {
     if (!(m instanceof MClass
         || m instanceof MAssociation
         || m instanceof MGeneralization
         || m instanceof MUseCase
         || m instanceof MConstraint
         || m instanceof MDependency
         || m instanceof MCollaboration
         || m instanceof MDataType
         || m instanceof MInterface)) return false;
   } else if (ns instanceof MClassifierRole) {
     if (!(((MClassifierRole) ns).getAvailableContentses().contains(m)
         || ((MClassifierRole) ns).getAvailableFeatures().contains(m))) return false;
   }
   if (m instanceof MStructuralFeature) {
     if (!isValidNamespace((MStructuralFeature) m, ns)) return false;
   } else if (m instanceof MGeneralizableElement) {
     if (!isValidNamespace((MGeneralizableElement) m, ns)) return false;
   } else if (m instanceof MGeneralization) {
     if (!isValidNamespace((MGeneralization) m, ns)) return false;
   }
   if (m instanceof MAssociation) {
     if (!isValidNamespace((MAssociation) m, ns)) return false;
   } else if (m instanceof MCollaboration) {
     if (!isValidNamespace((MCollaboration) m, ns)) return false;
   }
   return true;
 }