org/andromda/cartridges/arc/metafacades/ARC_OperationFacadeLogicImpl.java

Go to the documentation of this file.
00001 package org.andromda.cartridges.arc.metafacades;
00002 
00003 import org.andromda.metafacades.uml.OperationFacade;
00004 import org.andromda.metafacades.uml.ConstraintFacade;
00005 import org.andromda.cartridges.arc.Debug;
00006 import org.andromda.cartridges.arc.Responsibility;
00007 import org.andromda.cartridges.arc.ConstraintResponsibility;
00008 import java.util.Collection;
00009 import java.util.Iterator;
00010 import java.util.ArrayList;
00011 
00017 public class ARC_OperationFacadeLogicImpl
00018 extends ARC_OperationFacadeLogic
00019 {
00020         public ARC_OperationFacadeLogicImpl (Object metaObject, String context)
00021         {
00022                 super (metaObject, context);
00023         }
00024         
00028         protected java.util.Collection handleGetResponsibilities()
00029         {
00030                 ArrayList Responsibilities=new ArrayList();
00031         
00032                 Responsibilities.addAll(contraintResponsibilities());
00033         
00035                 //Debug dbg=new Debug();
00036                 //dbg.printResponsibilities(Responsibilities);
00037                 
00038                 return Responsibilities;
00039         }
00040         
00044         protected org.andromda.cartridges.arc.Responsibility handleGetResponsibility(java.lang.String name)
00045         {
00046                 Iterator iter=handleGetResponsibilities().iterator();
00047                 while(iter.hasNext()) {
00048                         Responsibility resp=(Responsibility)iter.next();
00049                         if(resp.getName().equals(name)) return resp;
00050                 }
00051                 return null;
00052         }
00053         
00057         protected java.util.Collection contraintResponsibilities()
00058         {
00059                 ArrayList Responsibilities=new ArrayList();
00060                 Iterator constr_iter=getConstraints().iterator();
00061                 while(constr_iter.hasNext()) {
00062                         Responsibility resp=contraintResponsibility((ConstraintFacade)constr_iter.next());
00063                         if(resp!=null) Responsibilities.add(resp);
00064                 }
00065                 return Responsibilities;
00066         }
00067         
00071         protected Responsibility contraintResponsibility(ConstraintFacade constr)
00072         {
00073                 // Only pre and post
00074                 if(!(constr.isPreCondition() || constr.isPostCondition())) return null;
00075                 // not at the same time
00076                 if(constr.isPreCondition() && constr.isPostCondition()) return null;
00077                 // No context or what ever
00078                 if(!(constr.getBody().startsWith("pre:") || constr.getBody().startsWith("post:"))) return null;
00079                 // must be one of the following
00080                 if(!(constr.getName().startsWith("existsElement") || constr.getName().startsWith("notEmptyPopulation") || constr.getName().startsWith("deleteElement") || constr.getName().startsWith("insertElement") || constr.getName().startsWith("listAll"))) return null;
00081                 // these ones can only be postconditions
00082                 if((constr.getName().startsWith("deleteElement") || constr.getName().startsWith("insertElement") || constr.getName().startsWith("listAll")) && !constr.isPostCondition()) return null;
00083 
00084                 ConstraintResponsibility resp=new ConstraintResponsibility();
00085                 resp.setModelElement("Operation");
00086                 resp.setModelElementName(getOwner().getName()+"."+getName());
00087                 if(constr.isPreCondition()) resp.setConstraintType("Precondition");
00088                 else if(constr.isPostCondition()) resp.setConstraintType("Postcondition");
00089                 resp.setConstraintName(constr.getName());
00090                 resp.setConstraintBody(constr.getBody());
00091                 return resp;
00092         }
00093 }

Generated on Tue Jan 9 16:10:05 2007 for AndroMDA ARC by  doxygen 1.4.7