Skip to content

Commit 19a0f77

Browse files
committed
ST6RI-628 Added implementations of new abstract syntax operations.
1 parent 9b1216c commit 19a0f77

9 files changed

Lines changed: 125 additions & 88 deletions

File tree

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/AcceptActionUsageImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.omg.sysml.lang.sysml.Expression;
3131
import org.omg.sysml.lang.sysml.ReferenceUsage;
3232
import org.omg.sysml.lang.sysml.SysMLPackage;
33+
import org.omg.sysml.lang.sysml.TransitionUsage;
34+
import org.omg.sysml.lang.sysml.Type;
3335

3436
/**
3537
* <!-- begin-user-doc -->
@@ -187,12 +189,12 @@ public void setPayloadArgument(Expression newPayloadArgument) {
187189
/**
188190
* <!-- begin-user-doc -->
189191
* <!-- end-user-doc -->
190-
* @generated
192+
* @generated NOT
191193
*/
192194
public boolean isTriggerAction() {
193-
// TODO: implement this method
194-
// Ensure that you remove @generated or mark it @generated NOT
195-
throw new UnsupportedOperationException();
195+
Type owningType = getOwningType();
196+
return owningType instanceof TransitionUsage &&
197+
((TransitionUsage)owningType).getTriggerAction() == this;
196198
}
197199

198200
//

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/ControlNodeImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.omg.sysml.lang.sysml.ControlNode;
2929
import org.omg.sysml.lang.sysml.Multiplicity;
30+
import org.omg.sysml.lang.sysml.MultiplicityRange;
3031
import org.omg.sysml.lang.sysml.SysMLPackage;
3132

3233
/**
@@ -59,12 +60,13 @@ protected EClass eStaticClass() {
5960
/**
6061
* <!-- begin-user-doc -->
6162
* <!-- end-user-doc -->
62-
* @generated
63+
* @generated NOT
6364
*/
6465
public boolean multiplicityHasBounds(Multiplicity mult, int lower, int upper) {
65-
// TODO: implement this method
66-
// Ensure that you remove @generated or mark it @generated NOT
67-
throw new UnsupportedOperationException();
66+
return mult != null &&
67+
(mult instanceof MultiplicityRange? ((MultiplicityRange)mult).hasBounds(lower, upper):
68+
mult.allSupertypes().stream().anyMatch(sup ->
69+
sup instanceof MultiplicityRange && ((MultiplicityRange)sup).hasBounds(lower, upper)));
6870
}
6971

7072
/**

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/FeatureImpl.java

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.omg.sysml.lang.sysml.Membership;
5252
import org.omg.sysml.lang.sysml.Namespace;
5353
import org.omg.sysml.lang.sysml.ParameterMembership;
54+
import org.omg.sysml.lang.sysml.Element;
5455
import org.omg.sysml.lang.sysml.EndFeatureMembership;
5556
import org.omg.sysml.lang.sysml.Redefinition;
5657
import org.omg.sysml.lang.sysml.ReferenceSubsetting;
@@ -958,34 +959,45 @@ public Feature namingFeature() {
958959
/**
959960
* <!-- begin-user-doc -->
960961
* <!-- end-user-doc -->
961-
* @generated
962+
* @generated NOT
962963
*/
963964
public boolean redefines(Feature redefinedFeature) {
964-
// TODO: implement this method
965-
// Ensure that you remove @generated or mark it @generated NOT
966-
throw new UnsupportedOperationException();
965+
return FeatureUtil.getRedefinedFeaturesWithComputedOf(this, null).
966+
contains(redefinedFeature);
967967
}
968968

969969
/**
970970
* <!-- begin-user-doc -->
971971
* <!-- end-user-doc -->
972-
* @generated
972+
* @generated NOT
973973
*/
974974
public boolean redefinesFromLibrary(String libraryFeatureName) {
975-
// TODO: implement this method
976-
// Ensure that you remove @generated or mark it @generated NOT
977-
throw new UnsupportedOperationException();
975+
Membership membership = resolveGlobal(libraryFeatureName);
976+
if (membership != null) {
977+
Element memberElement = membership.getMemberElement();
978+
if (memberElement instanceof Feature) {
979+
return redefines((Feature)memberElement);
980+
}
981+
}
982+
return false;
978983
}
979984

980985
/**
981986
* <!-- begin-user-doc -->
982987
* <!-- end-user-doc -->
983-
* @generated
988+
* @generated NOT
984989
*/
985990
public boolean subsetsChain(Feature first, Feature second) {
986-
// TODO: implement this method
987-
// Ensure that you remove @generated or mark it @generated NOT
988-
throw new UnsupportedOperationException();
991+
return allSupertypes().stream().
992+
filter(Feature.class::isInstance).
993+
map(Feature.class::cast).
994+
anyMatch(feat->{
995+
EList<Feature> chainingFeatures = feat.getChainingFeature();
996+
int n = chainingFeatures.size();
997+
return n >= 2 &&
998+
chainingFeatures.get(n-2) == first &&
999+
chainingFeatures.get(n-1) == second;
1000+
});
9891001
}
9901002

9911003
/**

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/MetadataFeatureImpl.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
3838
import org.eclipse.emf.ecore.util.InternalEList;
3939
import org.eclipse.uml2.common.util.UnionEObjectEList;
40-
40+
import org.omg.sysml.expressions.ModelLevelExpressionEvaluator;
41+
import org.omg.sysml.expressions.util.EvaluationUtil;
4142
import org.omg.sysml.lang.sysml.AnnotatingElement;
4243
import org.omg.sysml.lang.sysml.MetadataFeature;
4344
import org.omg.sysml.lang.sysml.Annotation;
@@ -202,45 +203,37 @@ public boolean isSetType() {
202203
/**
203204
* <!-- begin-user-doc -->
204205
* <!-- end-user-doc -->
205-
* @generated
206+
* @generated NOT
206207
*/
207208
public EList<Element> evaluateFeature(Feature baseFeature) {
208-
// TODO: implement this method
209-
// Ensure that you remove @generated or mark it @generated NOT
210-
throw new UnsupportedOperationException();
209+
return ModelLevelExpressionEvaluator.INSTANCE.evaluateFeature(baseFeature, this);
211210
}
212211

213212
/**
214213
* <!-- begin-user-doc -->
215214
* <!-- end-user-doc -->
216-
* @generated
215+
* @generated NOT
217216
*/
218217
public boolean isSemantic() {
219-
// TODO: implement this method
220-
// Ensure that you remove @generated or mark it @generated NOT
221-
throw new UnsupportedOperationException();
218+
return specializesFromLibrary("Metaobjects::SemanticMetadata");
222219
}
223220

224221
/**
225222
* <!-- begin-user-doc -->
226223
* <!-- end-user-doc -->
227-
* @generated
224+
* @generated NOT
228225
*/
229226
public boolean isSyntactic() {
230-
// TODO: implement this method
231-
// Ensure that you remove @generated or mark it @generated NOT
232-
throw new UnsupportedOperationException();
227+
return specializesFromLibrary("KerML::Element");
233228
}
234229

235230
/**
236231
* <!-- begin-user-doc -->
237232
* <!-- end-user-doc -->
238-
* @generated
233+
* @generated NOT
239234
*/
240235
public Element syntaxElement() {
241-
// TODO: implement this method
242-
// Ensure that you remove @generated or mark it @generated NOT
243-
throw new UnsupportedOperationException();
236+
return EvaluationUtil.getMetaclassReferenceOf(this);
244237
}
245238

246239
//

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/MetadataUsageImpl.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
import org.eclipse.emf.ecore.util.InternalEList;
3838

3939
import org.eclipse.uml2.common.util.UnionEObjectEList;
40-
40+
import org.omg.sysml.expressions.ModelLevelExpressionEvaluator;
41+
import org.omg.sysml.expressions.util.EvaluationUtil;
4142
import org.omg.sysml.lang.sysml.AnnotatingElement;
4243
import org.omg.sysml.lang.sysml.Annotation;
4344
import org.omg.sysml.lang.sysml.Element;
@@ -259,45 +260,37 @@ public boolean isSetItemDefinition() {
259260
/**
260261
* <!-- begin-user-doc -->
261262
* <!-- end-user-doc -->
262-
* @generated
263+
* @generated NOT
263264
*/
264265
public EList<Element> evaluateFeature(Feature baseFeature) {
265-
// TODO: implement this method
266-
// Ensure that you remove @generated or mark it @generated NOT
267-
throw new UnsupportedOperationException();
266+
return ModelLevelExpressionEvaluator.INSTANCE.evaluateFeature(baseFeature, this);
268267
}
269268

270269
/**
271270
* <!-- begin-user-doc -->
272271
* <!-- end-user-doc -->
273-
* @generated
272+
* @generated NOT
274273
*/
275274
public boolean isSemantic() {
276-
// TODO: implement this method
277-
// Ensure that you remove @generated or mark it @generated NOT
278-
throw new UnsupportedOperationException();
275+
return specializesFromLibrary("Metaobjects::SemanticMetadata");
279276
}
280277

281278
/**
282279
* <!-- begin-user-doc -->
283280
* <!-- end-user-doc -->
284-
* @generated
281+
* @generated NOT
285282
*/
286283
public boolean isSyntactic() {
287-
// TODO: implement this method
288-
// Ensure that you remove @generated or mark it @generated NOT
289-
throw new UnsupportedOperationException();
284+
return specializesFromLibrary("KerML::Element");
290285
}
291286

292287
/**
293288
* <!-- begin-user-doc -->
294289
* <!-- end-user-doc -->
295-
* @generated
290+
* @generated NOT
296291
*/
297292
public Element syntaxElement() {
298-
// TODO: implement this method
299-
// Ensure that you remove @generated or mark it @generated NOT
300-
throw new UnsupportedOperationException();
293+
return EvaluationUtil.getMetaclassReferenceOf(this);
301294
}
302295

303296
//

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/MultiplicityRangeImpl.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
3131
import org.omg.sysml.lang.sysml.Element;
3232
import org.omg.sysml.lang.sysml.Expression;
33+
import org.omg.sysml.lang.sysml.LiteralInfinity;
34+
import org.omg.sysml.lang.sysml.LiteralInteger;
3335
import org.omg.sysml.lang.sysml.MultiplicityRange;
3436
import org.omg.sysml.lang.sysml.SysMLPackage;
3537

@@ -201,23 +203,42 @@ public boolean isSetOwnedMember() {
201203
/**
202204
* <!-- begin-user-doc -->
203205
* <!-- end-user-doc -->
204-
* @generated
206+
* @generated NOT
205207
*/
206208
public boolean hasBounds(int lower, int upper) {
207-
// TODO: implement this method
208-
// Ensure that you remove @generated or mark it @generated NOT
209-
throw new UnsupportedOperationException();
209+
if (valueOf(getUpperBound()) != upper) {
210+
return false;
211+
} else {
212+
int lowerValue = valueOf(getLowerBound());
213+
return lowerValue == lower ||
214+
lowerValue < -1 &&
215+
(lower == upper || lower == 0 && upper == -1);
216+
}
210217
}
211218

212219
/**
213220
* <!-- begin-user-doc -->
214221
* <!-- end-user-doc -->
215-
* @generated
222+
* @generated NOT
216223
*/
217224
public int valueOf(Expression bound) {
218-
// TODO: implement this method
219-
// Ensure that you remove @generated or mark it @generated NOT
220-
throw new UnsupportedOperationException();
225+
if (bound != null && bound.isModelLevelEvaluable()) {
226+
EList<Element> boundEval = bound.evaluate(getOwningNamespace());
227+
if (boundEval.size() == 1) {
228+
Element valueEval = boundEval.get(0);
229+
if (valueEval instanceof LiteralInfinity) {
230+
// Return -1 to represent "*".
231+
return -1;
232+
} else if (valueEval instanceof LiteralInteger) {
233+
int value = ((LiteralInteger)valueEval).getValue();
234+
if (value >= 0) {
235+
return value;
236+
}
237+
}
238+
}
239+
}
240+
// Return -2 to represent a "null" result.
241+
return -2;
221242
}
222243

223244
//

org.omg.sysml/syntax-gen/org/omg/sysml/lang/sysml/impl/NamespaceImpl.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
import org.omg.sysml.lang.sysml.Relationship;
5050
import org.omg.sysml.lang.sysml.SysMLPackage;
5151
import org.omg.sysml.lang.sysml.VisibilityKind;
52+
import org.omg.sysml.lang.sysml.util.SysMLLibraryUtil;
53+
import org.omg.sysml.util.ElementUtil;
5254
import org.omg.sysml.util.NamespaceUtil;
5355
import org.omg.sysml.util.NonNotifyingEObjectEList;
5456

@@ -329,12 +331,12 @@ public Membership resolve(String qualifiedName) {
329331
/**
330332
* <!-- begin-user-doc -->
331333
* <!-- end-user-doc -->
332-
* @generated
334+
* @generated NOT
333335
*/
334336
public Membership resolveGlobal(String qualifiedName) {
335-
// TODO: implement this method
336-
// Ensure that you remove @generated or mark it @generated NOT
337-
throw new UnsupportedOperationException();
337+
// TODO: Resolve elements other than to owning membership.
338+
Element element = SysMLLibraryUtil.getLibraryElement(this, qualifiedName);
339+
return element.getOwningMembership();
338340
}
339341

340342
/**
@@ -343,41 +345,42 @@ public Membership resolveGlobal(String qualifiedName) {
343345
* @generated
344346
*/
345347
public Membership resolveLocal(String name) {
346-
// TODO: implement this method
347-
// Ensure that you remove @generated or mark it @generated NOT
348-
throw new UnsupportedOperationException();
348+
String escapedName = ElementUtil.escapeName(name);
349+
return getOwningNamespace() == null?
350+
resolveGlobal(escapedName):
351+
NamespaceUtil.getNamedMembershipFor(this, escapedName);
349352
}
350353

351354
/**
352355
* <!-- begin-user-doc -->
353356
* <!-- end-user-doc -->
354-
* @generated
357+
* @generated NOT
355358
*/
356359
public Membership resolveVisible(String name) {
357-
// TODO: implement this method
358-
// Ensure that you remove @generated or mark it @generated NOT
359-
throw new UnsupportedOperationException();
360+
return visibleMemberships(new BasicEList<>(), false, false).stream().
361+
filter(mem->
362+
name.equals(mem.getMemberShortName()) ||
363+
name.equals(mem.getMemberName())).
364+
findFirst().orElse(null);
360365
}
361366

362367
/**
363368
* <!-- begin-user-doc -->
364369
* <!-- end-user-doc -->
365-
* @generated
370+
* @generated NOT
366371
*/
367372
public String qualificationOf(String qualifiedName) {
368373
// TODO: implement this method
369-
// Ensure that you remove @generated or mark it @generated NOT
370374
throw new UnsupportedOperationException();
371375
}
372376

373377
/**
374378
* <!-- begin-user-doc -->
375379
* <!-- end-user-doc -->
376-
* @generated
380+
* @generated NOT
377381
*/
378382
public String unqualifiedNameOf(String qualifiedName) {
379383
// TODO: implement this method
380-
// Ensure that you remove @generated or mark it @generated NOT
381384
throw new UnsupportedOperationException();
382385
}
383386

@@ -415,6 +418,8 @@ public EList<Membership> getImportedMembership(Collection<org.omg.sysml.lang.sys
415418
return importedMembership;
416419
}
417420

421+
//
422+
418423
/**
419424
* <!-- begin-user-doc -->
420425
* <!-- end-user-doc -->

0 commit comments

Comments
 (0)