Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java')
-rw-r--r--plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java58
1 files changed, 36 insertions, 22 deletions
diff --git a/plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java b/plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java
index 9351d14cb53..35d7254a82d 100644
--- a/plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java
+++ b/plugins/org.eclipse.osee.orcs.script.dsl/src/org/eclipse/osee/orcs/script/dsl/fields/OsFieldResolverImpl.java
@@ -11,7 +11,9 @@
package org.eclipse.osee.orcs.script.dsl.fields;
import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedHashSet;
+import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.emf.ecore.EObject;
@@ -98,17 +100,36 @@ public class OsFieldResolverImpl implements IFieldResolver {
Set<? extends OsField> toReturn;
OsCollectType type = getCollectType(object);
if (type != null) {
- toReturn = getAllowedFieldsByType(type);
+ toReturn = getAllowedFieldsByType(object, type);
} else {
toReturn = Collections.<OsField> emptySet();
}
return toReturn;
}
- private Set<? extends OsField> getAllowedFieldsByType(OsCollectType type) {
- Family family = getFamily(type);
+ private Set<? extends OsField> getAllowedFieldsByType(EObject object, OsCollectType type) {
Set<? extends OsField> toReturn;
- if (family != null) {
+ if (type != null) {
+ Family family = null;
+ if (OsCollectType.TXS == type) {
+ EObject container1 = object.eContainer();
+ if (container1 != null) {
+ EObject eContainer = container1.eContainer();
+ if (eContainer instanceof OsCollectObjectExpression) {
+ String containerType = ((OsCollectObjectExpression) eContainer).getName();
+ if ("artifacts".equals(containerType)) {
+ family = Family.ARTIFACT_TX;
+ } else if ("attributes".equals(containerType)) {
+ family = Family.ATTRIBUTE_TX;
+ } else if ("relations".equals(containerType)) {
+ family = Family.RELATION_TX;
+ }
+ }
+ }
+ }
+ if (family == null) {
+ family = getFamily(type);
+ }
toReturn = OsFieldEnum.getFieldsFor(family);
} else {
toReturn = Collections.<OsField> emptySet();
@@ -185,18 +206,20 @@ public class OsFieldResolverImpl implements IFieldResolver {
String collectName = container.getName();
OsCollectType type = OsCollectType.fromString(collectName);
if (type != null) {
- Set<? extends OsField> allowed = getAllowedFieldsByType(type);
+ Set<? extends OsField> allowed = getAllowedFieldsByType(object, type);
+ Map<String, OsField> fieldMap = new HashMap<String, OsField>();
+ for (OsField item : allowed) {
+ fieldMap.put(item.getLiteral(), item);
+ }
for (OsCollectExpression expression : container.getExpressions()) {
if (expression instanceof OsCollectAllFieldsExpression) {
toReturn.addAll(allowed);
- } else if (expression instanceof OsCollectObjectExpression) {
- String fieldName = ((OsCollectObjectExpression) expression).getName();
- OsField field = getField(type, fieldName);
- toReturn.add(field);
- } else if (expression instanceof OsCollectFieldExpression) {
- OsCollectFieldExpression fieldExp = (OsCollectFieldExpression) expression;
- String fieldName = fieldExp.getName();
- OsField field = getField(type, fieldName);
+ } else if (expression instanceof OsCollectObjectExpression || expression instanceof OsCollectFieldExpression) {
+ String fieldName = expression.getName();
+ OsField field = fieldMap.get(fieldName);
+ if (field == null) {
+ field = OsFieldEnum.newField(fieldName);
+ }
toReturn.add(field);
}
}
@@ -220,13 +243,4 @@ public class OsFieldResolverImpl implements IFieldResolver {
return Sets.difference(declaredFields, allowedFields);
}
- private OsField getField(OsCollectType type, String fieldName) {
- Family family = getFamily(type);
- OsField toReturn = OsFieldEnum.getField(family, fieldName);
- if (toReturn == null) {
- toReturn = OsFieldEnum.newField(fieldName);
- }
- return toReturn;
- }
-
}

Back to the top