added Helperclass to generate names
Signed-off-by: Alexander Knoblauch <a.knoblauch@peak-solution.de>
diff --git a/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
index 7990f34..e3241f7 100644
--- a/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
+++ b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
@@ -29,21 +29,10 @@
import javax.management.ServiceNotFoundException;
-import org.asam.ods.AIDName;
-import org.asam.ods.AggrFunc;
import org.asam.ods.AoException;
-import org.asam.ods.AoSession;
-import org.asam.ods.ApplicationElement;
import org.asam.ods.ApplicationStructure;
import org.asam.ods.ElemId;
import org.asam.ods.InstanceElement;
-import org.asam.ods.JoinDef;
-import org.asam.ods.NameValueSeqUnitId;
-import org.asam.ods.QueryStructureExt;
-import org.asam.ods.ResultSetExt;
-import org.asam.ods.SelAIDNameUnitId;
-import org.asam.ods.SelItem;
-import org.asam.ods.SelOrder;
import org.asam.ods.T_LONGLONG;
import org.eclipse.mdm.api.atfxadapter.transaction.ATFXTransaction;
import org.eclipse.mdm.api.base.ServiceNotProvidedException;
@@ -102,6 +91,16 @@
* @see ODSEntityManager
*/
public class ATFXEntityManager implements EntityManager {
+ private static final String AA_ID = "Id";
+
+ private static final String AE_TESTSTEP = "TestStep";
+
+ private static final String AE_TEST = "Test";
+
+ private static final String AE_STRUCTURE_LEVEL = "StructureLevel";
+
+ private static final String AE_PROJECT = "Project";
+
private static final Logger LOGGER = LoggerFactory.getLogger(ATFXEntityManager.class);
private static final Pattern PATTERN_TESTSTEP_ASAM_PATH = Pattern.compile(
@@ -118,7 +117,7 @@
private final EntityLoader entityLoader;
private final ExtSystem extSystem;
- private String asamPathValue;
+ private NameHelper nameHelper;
/**
* Constructor.
@@ -139,42 +138,15 @@
String property = System.getProperty(PROP_ASAMPATH);
if (!Strings.isNullOrEmpty(property)) {
- initAsamPath(property);
- }
- }
+ try {
+ this.nameHelper = new NameHelper(odsModelManager.getAoSession(), getExtAttrComp(property),
+ getExtAttrAttr(property));
- private void initAsamPath(String property) {
-
- try {
- AoSession aoSession = odsModelManager.getAoSession();
- ApplicationElement applElem = aoSession.getApplicationStructure()
- .getElementByName(getExtAttrComp(property));
-
- QueryStructureExt qs = new QueryStructureExt();
- AIDName aidName = new AIDName(applElem.getId(), getExtAttrAttr(property));
- T_LONGLONG unit = new T_LONGLONG(0, 0);
- SelAIDNameUnitId sel = new SelAIDNameUnitId(aidName, unit, AggrFunc.NONE);
-
- qs.anuSeq = new SelAIDNameUnitId[] { sel };
- qs.condSeq = new SelItem[0];
- qs.groupBy = new AIDName[0];
- qs.joinSeq = new JoinDef[0];
- qs.orderBy = new SelOrder[0];
-
- ResultSetExt[] instancesExt = aoSession.getApplElemAccess().getInstancesExt(qs, 0);
-
- if (instancesExt.length > 0) {
- NameValueSeqUnitId[] values = instancesExt[0].firstElems[0].values;
-
- if (values.length > 0) {
- asamPathValue = values[0].value.u.stringVal()[0];
- }
+ } catch (AoException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
-
- } catch (AoException e) {
- LOGGER.error(e.getLocalizedMessage(), e);
}
-
}
/**
diff --git a/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/NameHelper.java b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/NameHelper.java
new file mode 100644
index 0000000..f067caf
--- /dev/null
+++ b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/NameHelper.java
@@ -0,0 +1,79 @@
+/**
+ *
+ */
+package org.eclipse.mdm.api.atfxadapter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.asam.ods.AoException;
+import org.asam.ods.AoSession;
+import org.asam.ods.ApplicationElement;
+import org.asam.ods.InstanceElement;
+import org.asam.ods.InstanceElementIterator;
+import org.asam.ods.Relationship;
+
+/**
+ * @author akn
+ *
+ */
+public class NameHelper {
+
+ private static final Pattern PATTERN_TESTSTEP_ASAM_PATH = Pattern.compile(
+ "\\/\\[Environment\\].+\\/\\[Project\\](.+)\\/\\[StructureLevel\\](.+)\\/\\[Test\\](.+)\\/\\[TestStep\\](.+)");
+
+ private final AoSession aoSession;
+ private final String compName;
+ private final String attrName;
+
+ private Map<String, String> asamAttrCache = new HashMap<>();
+
+ /**
+ * @param aoSession
+ * @param property
+ * @throws AoException
+ */
+ public NameHelper(AoSession aoSession, String compName, String attrName) throws AoException {
+ super();
+ this.aoSession = aoSession;
+ this.compName = compName;
+ this.attrName = attrName;
+ initCache();
+
+ }
+
+ private void initCache() throws AoException {
+ ApplicationElement testStep = this.aoSession.getApplicationStructure().getElementByName("TestStep");
+
+ InstanceElementIterator testStepInstances = testStep.getInstances("*");
+
+ List<InstanceElement> relatedIE = new ArrayList<>();
+
+ for (InstanceElement ie : testStepInstances.nextN(testStepInstances.getCount())) {
+ relatedIE.add(ie);
+ relatedIE.addAll(getParentIntances(ie));
+ }
+
+ int i = 0;
+
+ }
+
+ private List<InstanceElement> getParentIntances(InstanceElement ie) throws AoException {
+ List<InstanceElement> returnVal = new ArrayList<>();
+
+ InstanceElementIterator ieIterator = ie.getRelatedInstancesByRelationship(Relationship.FATHER, "*");
+
+ if (ieIterator != null && ieIterator.getCount() > 0) {
+ for (InstanceElement ieParent : ieIterator.nextN(ieIterator.getCount())) {
+ returnVal.add(ie);
+ returnVal.addAll(getParentIntances(ie));
+ }
+ }
+
+ return returnVal;
+ }
+
+}