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
00036
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
00074 if(!(constr.isPreCondition() || constr.isPostCondition())) return null;
00075
00076 if(constr.isPreCondition() && constr.isPostCondition()) return null;
00077
00078 if(!(constr.getBody().startsWith("pre:") || constr.getBody().startsWith("post:"))) return null;
00079
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
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 }