Skip to content
Snippets Groups Projects
Commit bfb0fb16 authored by Alberto Debiasi's avatar Alberto Debiasi
Browse files

Handle Time Events, use AbstractClasses.

Change-Id: I6da361210f320a48d9392502f06b378e338823e4
parent fed10bbc
No related branches found
No related tags found
No related merge requests found
......@@ -79,6 +79,7 @@ import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.Behavior;
import org.eclipse.uml2.uml.BodyOwner;
import org.eclipse.uml2.uml.CallEvent;
import org.eclipse.uml2.uml.ChangeEvent;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Comment;
......@@ -114,6 +115,7 @@ import org.eclipse.uml2.uml.SignalEvent;
import org.eclipse.uml2.uml.StateMachine;
import org.eclipse.uml2.uml.Stereotype;
import org.eclipse.uml2.uml.TemplateParameter;
import org.eclipse.uml2.uml.TimeEvent;
import org.eclipse.uml2.uml.Transition;
import org.eclipse.uml2.uml.Trigger;
import org.eclipse.uml2.uml.Type;
......@@ -130,7 +132,6 @@ import org.polarsys.chess.chessmlprofile.StateMachines.PrioritizedTransition;
import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
import org.polarsys.chess.core.util.uml.ResourceUtils;
import org.polarsys.chess.core.util.uml.UMLUtils;
import eu.fbk.eclipse.standardtools.utils.core.utils.EObjectUtil;
/**
......@@ -1021,6 +1022,16 @@ public class EntityUtil {
}
}
public String getValueSpecificationValue(ValueSpecification valueSpecification, String language) {
String res = getValueSpecificationValue(valueSpecification);
if (res == null) {
if (valueSpecification instanceof OpaqueExpression) {
res = getBodyForLanguageOfBodyOwner((OpaqueExpression) valueSpecification, language);
}
}
return res;
}
public String getConstraintBodyStr(Constraint formalProperty, String language) {
String str = null;
......@@ -1031,7 +1042,6 @@ public class EntityUtil {
} else if (formalProperty.getSpecification() instanceof OpaqueExpression) {
str = getBodyForLanguageOfBodyOwner((OpaqueExpression) formalProperty.getSpecification(), language);
}
}
}
// logger.debug("getFormalPropertyStr: "+str);
......@@ -4614,4 +4624,78 @@ public class EntityUtil {
return res;
}
public EList<TimeEvent> getTimeEvents(Element component) {
if (isComponentInstance(component)) {
component = getUmlType((Property) component);
}
EList<TimeEvent> events = new BasicEList<TimeEvent>();
final TreeIterator<EObject> allElements = component.eResource().getAllContents();
if (allElements != null) {
Collection<EObject> changeEventElements = EcoreUtil.getObjectsByType(iterator2Collection(allElements),
UMLPackage.eINSTANCE.getTimeEvent());
for (EObject element : changeEventElements) {
if (element instanceof TimeEvent
&& component.equals(getTriggeredBlock((TimeEvent) element).getBase_Class())) {
events.add((TimeEvent) element);
}
}
}
return events;
}
public EList<ChangeEvent> getChangeEvents(Element component) {
if (isComponentInstance(component)) {
component = getUmlType((Property) component);
}
EList<ChangeEvent> events = new BasicEList<ChangeEvent>();
final TreeIterator<EObject> allElements = component.eResource().getAllContents();
if (allElements != null) {
Collection<EObject> changeEventElements = EcoreUtil.getObjectsByType(iterator2Collection(allElements),
UMLPackage.eINSTANCE.getChangeEvent());
for (EObject element : changeEventElements) {
if (element instanceof ChangeEvent
&& component.equals(getTriggeredBlock((ChangeEvent) element).getBase_Class())) {
events.add((ChangeEvent) element);
}
}
}
return events;
}
public String[] getTimeEventsPeriods(Element component) {
if (isComponentInstance(component)) {
component = getUmlType((Property) component);
}
EList<String> periods = new BasicEList<String>();
EList<TimeEvent> events = getTimeEvents(component);
for (TimeEvent event : events) {
ValueSpecification expr = event.getWhen().getExpr();
periods.add(getValueSpecificationValue(expr, "OCRA"));
}
return toArray(periods);
}
public String[] getChangeEventsExpressions(Element component) {
if (isComponentInstance(component)) {
component = getUmlType((Property) component);
}
EList<String> periods = new BasicEList<String>();
EList<ChangeEvent> events = getChangeEvents(component);
for (ChangeEvent event : events) {
ValueSpecification expr = event.getChangeExpression();
periods.add(getValueSpecificationValue(expr, "OCRA"));
}
return toArray(periods);
}
}
\ No newline at end of file
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CustomEditors
Bundle-SymbolicName: org.polarsys.chess.customEditors;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.swt,
org.eclipse.papyrus.uml.properties,
org.eclipse.papyrus.uml.xtext.integration.core,
org.eclipse.papyrus.uml.xtext.integration.ui,
org.eclipse.ui.workbench,
org.eclipse.papyrus.infra.properties.ui,
org.eclipse.papyrus.uml.textedit.property.xtext.ui,
eu.fbk.tools.editor.c.expression.ui,
eu.fbk.tools.editor.c.statement.ui,
eu.fbk.tools.editor.contract.expression.ui;bundle-version="1.0.0",
eu.fbk.eclipse.standardtools.xtextService,
org.polarsys.chess.service,
eu.fbk.eclipse.standardtools.utils,
org.polarsys.chess.contracts.profile
Bundle-Vendor: Eclipse Chess Project
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CustomEditors
Bundle-SymbolicName: org.polarsys.chess.customEditors;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.swt,
org.eclipse.papyrus.uml.properties,
org.eclipse.papyrus.uml.xtext.integration.core,
org.eclipse.papyrus.uml.xtext.integration.ui,
org.eclipse.ui.workbench,
org.eclipse.papyrus.infra.properties.ui,
org.eclipse.papyrus.uml.textedit.property.xtext.ui,
eu.fbk.tools.editor.c.expression.ui,
eu.fbk.tools.editor.c.statement.ui,
eu.fbk.tools.editor.contract.expression.ui;bundle-version="1.0.0",
eu.fbk.eclipse.standardtools.xtextService,
org.polarsys.chess.service,
eu.fbk.eclipse.standardtools.utils,
org.polarsys.chess.contracts.profile,
org.polarsys.chess.core
Bundle-Vendor: Eclipse Chess Project
......@@ -39,10 +39,10 @@ import org.polarsys.chess.service.core.utils.AnalysisResultUtil;
import org.polarsys.chess.chessmlprofile.Dependability.DependableComponent.AnalysisContextElement;
import org.polarsys.chess.chessmlprofile.ParameterizedArchitecture.InstantiatedArchitectureConfiguration;
import eu.fbk.eclipse.standardtools.utils.core.model.AbstractSystemModel;
import eu.fbk.eclipse.standardtools.utils.core.model.AbstractSystemModelClass;
import eu.fbk.eclipse.standardtools.utils.core.utils.StringArrayUtil;
public class ChessSystemModel implements AbstractSystemModel {
public class ChessSystemModel extends AbstractSystemModelClass {
private static ChessSystemModel chessToOCRAModelRunner;
......@@ -1138,4 +1138,14 @@ return EntityUtil.getInstance().isCallEventByOperationName(idName,currBlock);
return EntityUtil.getInstance().getParameterType(paramName, methodName, (Class)retrieveBlockType);
}
@Override
public String[] getTimeEventsPeriods(Object component) throws Exception {
return EntityUtil.getInstance().getTimeEventsPeriods((Element)component);
}
@Override
public String[] getChangeEventsExpressions(Object component) throws Exception {
return EntityUtil.getInstance().getChangeEventsExpressions((Element)component);
}
}
......@@ -16,7 +16,6 @@ import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
import org.eclipse.papyrus.uml.tools.model.UmlModel;
import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Port;
import org.eclipse.uml2.uml.Property;
......@@ -26,9 +25,9 @@ import org.eclipse.uml2.uml.Type;
import org.eclipse.uml2.uml.Vertex;
import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
import eu.fbk.eclipse.standardtools.utils.core.model.AbstractStateMachineModel;
import eu.fbk.eclipse.standardtools.utils.core.model.AbstractStateMachineModelClass;
public class UMLStateMachineModel implements AbstractStateMachineModel {
public class UMLStateMachineModel extends AbstractStateMachineModelClass {
private static UMLStateMachineModel umlStateMachineModel;
private EntityUtil entityUtil = EntityUtil.getInstance();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment