@Override public Object caseEParameter(EParameter eParameter) { EOperation eOperation = eParameter.getEOperation(); if (eOperation != null) { Parameter parameter = UMLFactory.eINSTANCE.createParameter(); eModelElementToElementMap.put(eParameter, parameter); Operation operation = (Operation) doSwitch(eOperation); operation.getOwnedParameters().add(parameter); parameter.setName(eParameter.getName()); caseETypedElement(eParameter); defaultCase(eParameter); return parameter; } return super.caseEParameter(eParameter); }
public Operation defineOperation(Classifier owner, String name, Classifier type, List<Variable<Classifier, Parameter>> params, Constraint constraint) { resetTypeCaches(); Operation result = UMLFactory.eINSTANCE.createOperation(); result.addKeyword(UMLReflection.OCL_HELPER); result.setName(name); result.setType(type == null ? getOCLStandardLibrary().getOclVoid() : type); result.setIsQuery(true); // OCL can only define queries for (Variable<Classifier, Parameter> next : params) { Parameter param = UMLFactory.eINSTANCE.createParameter(); param.setName(next.getName()); param.setType(next.getType() == null ? getOCLStandardLibrary() .getOclVoid() : next.getType()); param.setDirection(ParameterDirectionKind.IN_LITERAL); param.setEffect(ParameterEffectKind.READ_LITERAL); result.getOwnedParameters().add(param); } annotate(result, constraint); addHelperOperation(owner, result); return result; }