diff --git a/README.md b/README.md
index 6c51831d2..55b4d331a 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,6 @@ Future user interfaces like an enhanced GUI or a web interface are planned.
For more information about the setup or the architecture have a look on the [Wiki](https://github.com/ArDoCo/Core/wiki).
The docs are at some points deprecated, the general overview and setup should still hold.
-You can find the generated JavaDocs at [ArDoCo.github.io/Core-Docs](https://ArDoCo.github.io/Core-Docs/).
## Case Studies / Benchmarks
diff --git a/docs/Home.md b/docs/Home.md
index 0e2006461..597487682 100644
--- a/docs/Home.md
+++ b/docs/Home.md
@@ -14,7 +14,7 @@ JavaDocs can be found [here](https://ardoco.github.io/Core-Docs/).
The `complete` profile includes all the requirements that the special profiles also need. This profile is activated by
default.
-All profiles require JDK 17.
+All profiles require JDK 21.
The dependencies of the other profiles at a glance:
@@ -46,4 +46,4 @@ This project is currently developed by researchers of the Karlsruhe Institute of
You find us on our
websites: [Jan Keim](https://mcse.kastel.kit.edu/staff_Keim_Jan.php), [Sophie Corallo](https://mcse.kastel.kit.edu/staff_sophie_corallo.php),
-and [Dominik Fuchß](https://mcse.kastel.kit.edu/staff_dominik_fuchss.php)
\ No newline at end of file
+and [Dominik Fuchß](https://mcse.kastel.kit.edu/staff_dominik_fuchss.php)
diff --git a/framework/common/pom.xml b/framework/common/pom.xml
index 4745f3fbe..4c2947fbe 100644
--- a/framework/common/pom.xml
+++ b/framework/common/pom.xml
@@ -35,7 +35,7 @@
org.apache.opennlp
opennlp-tools
- 2.3.0
+ 2.3.1
org.eclipse.collections
@@ -58,7 +58,7 @@
org.xerial
sqlite-jdbc
- 3.44.0.0
+ 3.44.1.0
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelExtractionState.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionState.java
similarity index 89%
rename from framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelExtractionState.java
rename to framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionState.java
index 1cdc323ef..5326eaf45 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelExtractionState.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionState.java
@@ -8,8 +8,11 @@
/**
* The Interface IModelState defines the information directly extracted from the models.
+ *
+ * @deprecated use {@link ModelStates#getModel(String)}
*/
-public interface ModelExtractionState extends IConfigurable {
+@Deprecated(since = "0.32.0")
+public interface LegacyModelExtractionState extends IConfigurable {
/**
* Returns the unique id of the model
*
@@ -53,6 +56,4 @@ public interface ModelExtractionState extends IConfigurable {
*/
ImmutableList getInstances();
- void addAllOf(ModelExtractionState other);
-
}
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionStateByArCoTL.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionStateByArCoTL.java
new file mode 100644
index 000000000..702bc1860
--- /dev/null
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/LegacyModelExtractionStateByArCoTL.java
@@ -0,0 +1,176 @@
+/* Licensed under MIT 2023. */
+package edu.kit.kastel.mcse.ardoco.core.api.models;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import org.eclipse.collections.api.factory.Lists;
+import org.eclipse.collections.api.factory.SortedSets;
+import org.eclipse.collections.api.list.ImmutableList;
+import org.eclipse.collections.api.list.MutableList;
+import org.eclipse.collections.api.set.sorted.ImmutableSortedSet;
+import org.eclipse.collections.api.set.sorted.MutableSortedSet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureInterface;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureMethod;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.*;
+
+public class LegacyModelExtractionStateByArCoTL implements LegacyModelExtractionState {
+ private static final Logger logger = LoggerFactory.getLogger(LegacyModelExtractionStateByArCoTL.class);
+
+ private final String modelId;
+ private final Metamodel metamodel;
+
+ private final ImmutableList instances;
+
+ private final MutableSortedSet instanceTypes;
+ private final MutableSortedSet names;
+ private SortedMap lastConfig;
+
+ public LegacyModelExtractionStateByArCoTL(ArchitectureModel architectureModel) {
+ this.modelId = architectureModel.getId();
+ this.instances = initArchitectureInstances(architectureModel);
+ this.metamodel = Metamodel.ARCHITECTURE;
+ instanceTypes = SortedSets.mutable.empty();
+ names = SortedSets.mutable.empty();
+ collectTypesAndNames();
+ }
+
+ public LegacyModelExtractionStateByArCoTL(CodeModel codeModel) {
+ this.modelId = codeModel.getId();
+ this.instances = initCodeInstances(codeModel);
+ this.metamodel = Metamodel.CODE;
+
+ instanceTypes = SortedSets.mutable.empty();
+ names = SortedSets.mutable.empty();
+ collectTypesAndNames();
+ }
+
+ private static ImmutableList initArchitectureInstances(ArchitectureModel architectureModel) {
+ MutableList instances = Lists.mutable.empty();
+ for (ArchitectureItem architectureItem : architectureModel.getEndpoints()) {
+ switch (architectureItem) {
+ case ArchitectureComponent component -> instances.add(new ModelInstanceImpl(component.getName(), component.getType(), component.getId()));
+ case ArchitectureInterface ignored -> logger.debug("Skipping .. ArchitectureInterface not supported yet");
+ case ArchitectureMethod ignored -> logger.debug("Skipping .. ArchitectureMethod not supported yet");
+ }
+ }
+ return instances.toImmutable();
+ }
+
+ private static ImmutableList initCodeInstances(CodeModel codeModel) {
+ List instances = new ArrayList<>();
+ fillPackages(codeModel.getAllPackages(), instances);
+ fillCompilationUnits(codeModel.getEndpoints(), instances);
+ return Lists.immutable.withAll(instances);
+ }
+
+ private static void fillPackages(Collection extends CodePackage> packages, List instances) {
+ for (var modelElement : packages) {
+ String path = modelElement.getName();
+ CodeModule parent = modelElement.getParent();
+ while (parent != null) {
+ path = parent.getName() + "/" + path;
+ parent = parent.getParent();
+ }
+ // Ensure that package is handled as directory
+ path += "/";
+ instances.add(new ModelInstanceImpl(modelElement.getName(), "Package", path));
+ }
+ }
+
+ private static void fillCompilationUnits(Collection extends CodeCompilationUnit> units, List instances) {
+ for (var unit : units) {
+ String type = findType(unit);
+ instances.add(new ModelInstanceImpl(unit.getName(), type, unit.getPath()));
+ }
+
+ }
+
+ private static String findType(CodeCompilationUnit unit) {
+ // Assumption mostly one class per unit
+ var content = unit.getContent().stream().filter(it -> unit.getName().contains(it.getName())).findFirst().orElse(null);
+ if (content instanceof ClassUnit) {
+ return "Class";
+ }
+ if (content instanceof InterfaceUnit) {
+ return "Interface";
+ }
+ if (unit.getPath().endsWith("package-info.java")) {
+ return "PackageInfo";
+ }
+ if (unit.getPath().endsWith(".java")) {
+ // Default to Class
+ return "Class";
+ }
+ if (unit.getLanguage() == ProgrammingLanguage.SHELL) {
+ return "ShellScript";
+ }
+ throw new IllegalStateException("Unknown type of CodeCompilationUnit");
+ }
+
+ private void collectTypesAndNames() {
+ for (ModelInstance i : instances) {
+ instanceTypes.addAll(i.getTypeParts().castToCollection());
+ names.addAll(i.getNameParts().castToCollection());
+ }
+ }
+
+ @Override
+ public String getModelId() {
+ return this.modelId;
+ }
+
+ @Override
+ public Metamodel getMetamodel() {
+ return this.metamodel;
+ }
+
+ @Override
+ public ImmutableList getInstancesOfType(String type) {
+ return instances.select(i -> i.getTypeParts().contains(type));
+ }
+
+ @Override
+ public ImmutableSortedSet getInstanceTypes() {
+ return instanceTypes.toImmutable();
+ }
+
+ @Override
+ public ImmutableSortedSet getNames() {
+ return names.toImmutable();
+ }
+
+ @Override
+ public ImmutableList getInstances() {
+ return instances;
+ }
+
+ @Override
+ public String toString() {
+ var output = new StringBuilder("Instances:\n");
+ for (ModelInstance i : instances) {
+ output.append(i.toString()).append("\n");
+ }
+ return output.toString();
+ }
+
+ @Override
+ public void applyConfiguration(SortedMap additionalConfiguration) {
+ this.lastConfig = new TreeMap<>(additionalConfiguration);
+ }
+
+ @Override
+ public SortedMap getLastAppliedConfiguration() {
+ return lastConfig;
+ }
+}
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelConnector.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelConnector.java
deleted file mode 100644
index 526063ce7..000000000
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelConnector.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Licensed under MIT 2021-2023. */
-package edu.kit.kastel.mcse.ardoco.core.api.models;
-
-import org.eclipse.collections.api.list.ImmutableList;
-
-/**
- * The Interface IModelConnector defines the connection to a computational model.
- */
-public interface ModelConnector {
-
- String getModelId();
-
- Metamodel getMetamodel();
-
- /**
- * Gets the instances of the model.
- *
- * @return the instances
- */
- ImmutableList getInstances();
-
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelInstanceImpl.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelInstanceImpl.java
similarity index 96%
rename from stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelInstanceImpl.java
rename to framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelInstanceImpl.java
index c93faabec..40d0b25e4 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelInstanceImpl.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelInstanceImpl.java
@@ -1,5 +1,5 @@
/* Licensed under MIT 2021-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models;
+package edu.kit.kastel.mcse.ardoco.core.api.models;
import java.util.Objects;
@@ -7,7 +7,6 @@
import org.eclipse.collections.api.list.ImmutableList;
import org.eclipse.collections.api.list.MutableList;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
/**
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelStates.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelStates.java
index fa5851504..96935876e 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelStates.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelStates.java
@@ -6,49 +6,47 @@
import java.util.TreeMap;
import java.util.TreeSet;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
import edu.kit.kastel.mcse.ardoco.core.data.PipelineStepData;
public class ModelStates implements PipelineStepData {
public static final String ID = "ModelStatesData";
- private transient SortedMap modelExtractionStates = new TreeMap<>();
private transient SortedMap models = new TreeMap<>();
+ private transient SortedMap legacyModels = new TreeMap<>();
/**
- * Constructor to create a {@link ModelStates} object that holds all {@link ModelExtractionState}s
+ * Constructor to create a {@link ModelStates} object that holds all {@link LegacyModelExtractionState}s
*/
public ModelStates() {
super();
}
/**
- * Returns the {@link ModelExtractionState} with the given id
+ * Returns the {@link LegacyModelExtractionState} with the given id
*
* @param id the id
- * @return the corresponding {@link ModelExtractionState}
+ * @return the corresponding {@link LegacyModelExtractionState}
+ * @deprecated use {@link #getModel(String)} instead
*/
- public ModelExtractionState getModelExtractionState(String id) {
- return modelExtractionStates.get(id);
- }
+ @Deprecated
+ public LegacyModelExtractionState getModelExtractionState(String id) {
+ if (legacyModels.containsKey(id))
+ return legacyModels.get(id);
- /**
- * Adds a {@link ModelExtractionState} with the given id to the set of {@link ModelExtractionState}s
- *
- * @param id the id
- * @param modelState the {@link ModelExtractionState}
- */
- public void addModelExtractionState(String id, ModelExtractionState modelState) {
- modelExtractionStates.put(id, modelState);
- }
+ var model = models.get(id);
+ if (model == null)
+ return null;
- /**
- * Return the set of IDs of all {@link ModelExtractionState ModelExtractionStates} that are contained within this object.
- *
- * @return the IDs of all contained {@link ModelExtractionState ModelExtractionStates}
- */
- public SortedSet extractionModelIds() {
- return new TreeSet<>(modelExtractionStates.keySet());
+ var legacyModel = switch (model) {
+ case ArchitectureModel am -> new LegacyModelExtractionStateByArCoTL(am);
+ case CodeModel cm -> new LegacyModelExtractionStateByArCoTL(cm);
+ };
+
+ legacyModels.put(id, legacyModel);
+ return legacyModel;
}
/**
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureModel.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/ArchitectureModel.java
similarity index 84%
rename from framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureModel.java
rename to framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/ArchitectureModel.java
index 364476c3b..b79f8b594 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureModel.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/ArchitectureModel.java
@@ -1,14 +1,14 @@
/* Licensed under MIT 2023. */
-package edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture;
+package edu.kit.kastel.mcse.ardoco.core.api.models.arcotl;
import java.util.List;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
/**
* An architecture model that is an AMTL instance.
*/
-public class ArchitectureModel extends Model {
+public final class ArchitectureModel extends Model {
private final List content;
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeModel.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/CodeModel.java
similarity index 88%
rename from framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeModel.java
rename to framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/CodeModel.java
index ec40f5c3f..6bc894a86 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeModel.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/CodeModel.java
@@ -1,5 +1,5 @@
/* Licensed under MIT 2023. */
-package edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code;
+package edu.kit.kastel.mcse.ardoco.core.api.models.arcotl;
import java.util.ArrayList;
import java.util.Comparator;
@@ -12,12 +12,15 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItem;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodePackage;
/**
* A code model that is a CMTL instance.
*/
-public class CodeModel extends Model {
+public final class CodeModel extends Model {
@JsonProperty
private CodeItemRepository codeItemRepository;
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/Model.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/Model.java
index 68bfd06dc..5959c4e8a 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/Model.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/Model.java
@@ -6,7 +6,7 @@
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelElement;
-public abstract class Model extends ModelElement {
+public abstract sealed class Model extends ModelElement permits ArchitectureModel, CodeModel {
/**
* Returns the content of this model.
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureComponent.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureComponent.java
index ded830b22..3f3be5e4e 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureComponent.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureComponent.java
@@ -10,19 +10,21 @@
* interfaces. Provided interfaces are implemented by the component. Required
* interfaces specify some functionality that is needed by the component.
*/
-public class ArchitectureComponent extends ArchitectureItem {
+public final class ArchitectureComponent extends ArchitectureItem {
private final SortedSet subcomponents;
private final SortedSet providedInterfaces;
private final SortedSet requiredInterfaces;
+ private final String type;
public ArchitectureComponent(String name, String id, SortedSet subcomponents, SortedSet providedInterfaces,
- SortedSet requiredInterfaces) {
+ SortedSet requiredInterfaces, String type) {
super(name, id);
this.subcomponents = subcomponents;
this.providedInterfaces = providedInterfaces;
this.requiredInterfaces = requiredInterfaces;
+ this.type = type;
}
/**
@@ -54,6 +56,15 @@ public SortedSet getRequiredInterfaces() {
return requiredInterfaces;
}
+ /**
+ * Returns the type of this component as specified in the meta model.
+ *
+ * @return the type of this component
+ */
+ public String getType() {
+ return type;
+ }
+
@Override
public String toString() {
return "Component: " + getName();
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureInterface.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureInterface.java
index b4ab36ece..be17504d4 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureInterface.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureInterface.java
@@ -4,7 +4,7 @@
import java.util.Objects;
import java.util.SortedSet;
-public class ArchitectureInterface extends ArchitectureItem {
+public final class ArchitectureInterface extends ArchitectureItem {
private final SortedSet signatures;
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureItem.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureItem.java
index 1a4ab0a32..6ff5ebc8d 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureItem.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureItem.java
@@ -8,7 +8,7 @@
* architecture endpoint of a trace link that connects corresponding elements of
* an architecture model and a code model.
*/
-public abstract class ArchitectureItem extends Entity {
+public abstract sealed class ArchitectureItem extends Entity permits ArchitectureComponent, ArchitectureInterface, ArchitectureMethod {
/**
* Creates a new architecture item with the specified name.
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureMethod.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureMethod.java
index 07b7608f2..52ef3ae23 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureMethod.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/architecture/ArchitectureMethod.java
@@ -1,7 +1,7 @@
/* Licensed under MIT 2023. */
package edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture;
-public class ArchitectureMethod extends ArchitectureItem {
+public final class ArchitectureMethod extends ArchitectureItem {
public ArchitectureMethod(String name) {
super(name);
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeItemRepository.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeItemRepository.java
index 3a777a8e8..c10471796 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeItemRepository.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/CodeItemRepository.java
@@ -32,11 +32,11 @@ CodeItem getCodeItem(String id) {
return repository.get(id);
}
- List getCodeItemsFromIds(List codeItemIds) {
+ public List getCodeItemsFromIds(List codeItemIds) {
return codeItemIds.stream().map(this::getCodeItem).filter(Objects::nonNull).toList();
}
- void init() {
+ public void init() {
this.repository.values().forEach(it -> it.registerCurrentCodeItemRepository(this));
}
}
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/ProgrammingLanguage.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/ProgrammingLanguage.java
index cbba87258..5030f30d6 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/ProgrammingLanguage.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/arcotl/code/ProgrammingLanguage.java
@@ -5,5 +5,5 @@
* Supported programming languages.
*/
public enum ProgrammingLanguage {
- JAVA, SHELL;
+ JAVA, SHELL
}
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/CommonUtilities.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/CommonUtilities.java
index 954951b66..16c9aa9db 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/CommonUtilities.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/CommonUtilities.java
@@ -22,7 +22,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendedInstance;
import edu.kit.kastel.mcse.ardoco.core.api.text.DependencyTag;
@@ -222,7 +222,7 @@ public static void addRecommendedInstancesFromNounMappings(ImmutableList
* @param modelState the model state containing information about types
* @return List of type names in the model state that are similar to the given word
*/
- public static ImmutableList getSimilarTypes(Word word, ModelExtractionState modelState) {
+ public static ImmutableList getSimilarTypes(Word word, LegacyModelExtractionState modelState) {
var identifiers = getTypeIdentifiers(modelState);
return Lists.immutable.fromStream(identifiers.stream().filter(typeId -> SimilarityUtils.areWordsSimilar(typeId, word.getText())));
}
@@ -233,7 +233,7 @@ public static ImmutableList getSimilarTypes(Word word, ModelExtractionSt
* @param modelState the model state
* @return Set of identifiers for existing types
*/
- public static SortedSet getTypeIdentifiers(ModelExtractionState modelState) {
+ public static SortedSet getTypeIdentifiers(LegacyModelExtractionState modelState) {
SortedSet identifiers = modelState.getInstanceTypes()
.stream()
.map(CommonUtilities::splitSnakeAndKebabCase)
diff --git a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/TraceLinkUtilities.java b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/TraceLinkUtilities.java
index 4c9d29d14..3bd0bf197 100644
--- a/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/TraceLinkUtilities.java
+++ b/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/TraceLinkUtilities.java
@@ -68,10 +68,9 @@ public static ImmutableList getSadCodeTraceLinksAsStringList(ImmutableLi
private static ImmutableList getDirectSadCodeTraceLinksAsStringList(ImmutableList sadCodeTraceLinks) {
MutableList result = Lists.mutable.empty();
for (var traceLink : sadCodeTraceLinks) {
- if (!(traceLink.getEndpointTuple().firstEndpoint() instanceof RecommendedInstance))
+ if (!(traceLink.getEndpointTuple().firstEndpoint() instanceof RecommendedInstance recommendedInstance))
return result.toImmutable();
- RecommendedInstance recommendedInstance = (RecommendedInstance) traceLink.getEndpointTuple().firstEndpoint();
var codeElement = (CodeCompilationUnit) traceLink.getEndpointTuple().secondEndpoint();
ImmutableSortedSet sentenceNumbers = recommendedInstance.getSentenceNumbers();
for (var sentence : sentenceNumbers) {
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/converter/DtoToObjectConverter.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/converter/DtoToObjectConverter.java
index 8a9f8d3cd..e031eb212 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/converter/DtoToObjectConverter.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/converter/DtoToObjectConverter.java
@@ -102,7 +102,7 @@ private boolean isValidConstituencyTree(String constituencyTree) {
private List getSubtrees(String treeWithoutType) {
List subTrees = new ArrayList<>();
// iterate through tree to find all subtrees
- while (treeWithoutType.length() > 0) {
+ while (!treeWithoutType.isEmpty()) {
// find next subtree
int index = 1;
while (treeWithoutType.substring(0, index).chars().filter(ch -> ch == CONSTITUENCY_TREE_OPEN_BRACKET).count() != treeWithoutType.substring(0, index)
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/IncomingDependencyDto.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/IncomingDependencyDto.java
index 2a78d413b..4f129ecfa 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/IncomingDependencyDto.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/IncomingDependencyDto.java
@@ -35,9 +35,8 @@ public void setSourceWordId(long value) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (!(o instanceof IncomingDependencyDto))
+ if (!(o instanceof IncomingDependencyDto that))
return false;
- IncomingDependencyDto that = (IncomingDependencyDto) o;
return sourceWordId == that.sourceWordId && dependencyType == that.dependencyType;
}
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/OutgoingDependencyDto.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/OutgoingDependencyDto.java
index 5d79c2e86..c65fcd171 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/OutgoingDependencyDto.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/OutgoingDependencyDto.java
@@ -35,9 +35,8 @@ public void setTargetWordId(long value) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (!(o instanceof OutgoingDependencyDto))
+ if (!(o instanceof OutgoingDependencyDto that))
return false;
- OutgoingDependencyDto that = (OutgoingDependencyDto) o;
return targetWordId == that.targetWordId && Objects.equals(dependencyType, that.dependencyType);
}
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/SentenceDto.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/SentenceDto.java
index 80b8d7fd8..40864a914 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/SentenceDto.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/SentenceDto.java
@@ -71,9 +71,8 @@ public void setWords(List value) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (!(o instanceof SentenceDto))
+ if (!(o instanceof SentenceDto sentence))
return false;
- SentenceDto sentence = (SentenceDto) o;
return sentenceNo == sentence.sentenceNo && Objects.equals(constituencyTree, sentence.constituencyTree) && Objects.equals(text,
sentence.text) && Objects.equals(words, sentence.words);
}
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/TextDto.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/TextDto.java
index a9cf4fdfa..18a545583 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/TextDto.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/TextDto.java
@@ -29,9 +29,8 @@ public void setSentences(List value) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (!(o instanceof TextDto))
+ if (!(o instanceof TextDto textDTO))
return false;
- TextDto textDTO = (TextDto) o;
return Objects.equals(sentences, textDTO.sentences);
}
diff --git a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/WordDto.java b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/WordDto.java
index 0886c8ac3..4f882aa63 100644
--- a/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/WordDto.java
+++ b/framework/text-provider-json/src/main/java/edu/kit/kastel/mcse/ardoco/core/textproviderjson/dto/WordDto.java
@@ -113,9 +113,8 @@ public void setText(String value) {
public boolean equals(Object o) {
if (this == o)
return true;
- if (!(o instanceof WordDto))
+ if (!(o instanceof WordDto word))
return false;
- WordDto word = (WordDto) o;
return id == word.id && sentenceNo == word.sentenceNo && Objects.equals(incomingDependencies, word.incomingDependencies) && Objects.equals(lemma,
word.lemma) && Objects.equals(outgoingDependencies, word.outgoingDependencies) && posTag == word.posTag && Objects.equals(text, word.text);
}
diff --git a/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/output/ArDoCoResult.java b/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/output/ArDoCoResult.java
index 1dbbe9921..bc1f0fab3 100644
--- a/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/output/ArDoCoResult.java
+++ b/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/output/ArDoCoResult.java
@@ -24,8 +24,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistentSentence;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.ModelInconsistency;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.TextInconsistency;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SadCodeTraceLink;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SadSamTraceLink;
@@ -91,7 +91,8 @@ public ImmutableList getAllTraceLinks() {
MutableSet traceLinks = Sets.mutable.empty();
for (var modelId : getModelIds()) {
- traceLinks.addAll(getTraceLinksForModel(modelId).castToCollection());
+ if (getModelState(modelId).getMetamodel() == Metamodel.ARCHITECTURE)
+ traceLinks.addAll(getTraceLinksForModel(modelId).castToCollection());
}
return traceLinks.toImmutableList();
}
@@ -297,16 +298,16 @@ private ModelStates getModelStates() {
*/
public List getModelIds() {
ModelStates modelStates = getModelStates();
- return Lists.mutable.ofAll(modelStates.extractionModelIds());
+ return Lists.mutable.ofAll(modelStates.modelIds());
}
/**
- * Returns the internal {@link ModelExtractionState} for the modelId with the given ID.
+ * Returns the internal {@link LegacyModelExtractionState} for the modelId with the given ID.
*
* @param modelId the ID of the model
* @return the ModelExtractionState
*/
- public ModelExtractionState getModelState(String modelId) {
+ public LegacyModelExtractionState getModelState(String modelId) {
ModelStates modelStates = getModelStates();
return modelStates.getModelExtractionState(modelId);
}
diff --git a/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/FilePrinter.java b/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/FilePrinter.java
index a1291e08a..5193989a5 100644
--- a/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/FilePrinter.java
+++ b/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/FilePrinter.java
@@ -36,8 +36,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistencyState;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistentSentence;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.ModelInconsistency;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.InstanceLink;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SadSamTraceLink;
@@ -89,7 +89,7 @@ public static void printResultsInFiles(Path path, String name, ArDoCoResult arDo
inconsistencyState = inconsistencyStates.getInconsistencyState(Metamodel.ARCHITECTURE);
}
- for (var model : getModelStatesData(data).extractionModelIds()) {
+ for (var model : getModelStatesData(data).modelIds()) {
var modelState = getModelStatesData(data).getModelExtractionState(model);
var metaModel = modelState.getMetamodel();
var recommendationState = getRecommendationStates(data).getRecommendationState(metaModel);
@@ -157,7 +157,7 @@ private static boolean createFileIfNonExistent(File file) {
return true;
}
- private static void writeStates(Writer myWriter, ModelExtractionState extractionState, TextState ntrState, //
+ private static void writeStates(Writer myWriter, LegacyModelExtractionState extractionState, TextState ntrState, //
RecommendationState recommendationState, ConnectionState connectionState) throws IOException {
myWriter.write("Results of ModelConnector: ");
myWriter.append(LINE_SEPARATOR);
@@ -234,7 +234,7 @@ private static void writeStates(Writer myWriter, ModelExtractionState extraction
* @param recommendationState the supposing state, containing the supposing mappings for instances, as well as relations
* @param connectionState containing all instances and relations, matched by supposed mappings
*/
- public static void writeStatesToFile(File resultFile, ModelExtractionState extractionState, TextState ntrState, //
+ public static void writeStatesToFile(File resultFile, LegacyModelExtractionState extractionState, TextState ntrState, //
RecommendationState recommendationState, ConnectionState connectionState) {
var fileCreated = createFileIfNonExistent(resultFile);
if (!fileCreated) {
@@ -258,12 +258,12 @@ public static void writeStatesToFile(File resultFile, ModelExtractionState extra
* @param modelState the model state
* @param name the name
*/
- private static void writeModelInstancesInCsvFile(File destination, ModelExtractionState modelState, String name) {
+ private static void writeModelInstancesInCsvFile(File destination, LegacyModelExtractionState modelState, String name) {
var dataLines = getInstancesFromModelState(modelState, name);
writeDataLinesInFile(destination, dataLines);
}
- private static ImmutableList getInstancesFromModelState(ModelExtractionState modelState, String name) {
+ private static ImmutableList getInstancesFromModelState(LegacyModelExtractionState modelState, String name) {
MutableList dataLines = Lists.mutable.empty();
dataLines.add(new String[] { "Found Model Elements in " + name + ":", "", "" });
diff --git a/pipeline/pipeline-id/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForInconsistencyDetection.java b/pipeline/pipeline-id/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForInconsistencyDetection.java
index b27fa5c6a..529e62523 100644
--- a/pipeline/pipeline-id/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForInconsistencyDetection.java
+++ b/pipeline/pipeline-id/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForInconsistencyDetection.java
@@ -2,39 +2,27 @@
package edu.kit.kastel.mcse.ardoco.core.execution.runner;
import java.io.File;
-import java.io.IOException;
import java.util.SortedMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
import edu.kit.kastel.mcse.ardoco.core.connectiongenerator.ConnectionGenerator;
import edu.kit.kastel.mcse.ardoco.core.execution.ArDoCo;
import edu.kit.kastel.mcse.ardoco.core.inconsistency.InconsistencyChecker;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelProviderAgent;
+import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.text.providers.TextPreprocessingAgent;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextExtraction;
public class ArDoCoForInconsistencyDetection extends ArDoCoRunner {
- private static final Logger logger = LoggerFactory.getLogger(ArDoCoForInconsistencyDetection.class);
-
public ArDoCoForInconsistencyDetection(String projectName) {
super(projectName);
}
public void setUp(File inputText, File inputModelArchitecture, ArchitectureModelType inputArchitectureModelType,
SortedMap additionalConfigs, File outputDir) {
- try {
- definePipeline(inputText, inputModelArchitecture, inputArchitectureModelType, additionalConfigs);
- } catch (IOException e) {
- logger.error("Problem in initialising pipeline when loading data (IOException)", e.getCause());
- isSetUp = false;
- return;
- }
+ definePipeline(inputText, inputModelArchitecture, inputArchitectureModelType, additionalConfigs);
setOutputDirectory(outputDir);
isSetUp = true;
}
@@ -51,10 +39,9 @@ public void setUp(String inputTextLocation, String inputArchitectureModelLocatio
* @param inputArchitectureModel the input architecture file
* @param architectureModelType the type of the architecture (e.g., PCM, UML)
* @param additionalConfigs the additional configs
- * @throws IOException When one of the input files cannot be accessed/loaded
*/
private void definePipeline(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType,
- SortedMap additionalConfigs) throws IOException {
+ SortedMap additionalConfigs) {
ArDoCo arDoCo = getArDoCo();
var dataRepository = arDoCo.getDataRepository();
var text = CommonUtilities.readInputText(inputText);
@@ -64,7 +51,9 @@ private void definePipeline(File inputText, File inputArchitectureModel, Archite
DataRepositoryHelper.putInputText(dataRepository, text);
arDoCo.addPipelineStep(TextPreprocessingAgent.get(additionalConfigs, dataRepository));
- arDoCo.addPipelineStep(ModelProviderAgent.get(inputArchitectureModel, architectureModelType, dataRepository));
+ ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, null, additionalConfigs,
+ dataRepository);
+ arDoCo.addPipelineStep(arCoTLModelProviderAgent);
arDoCo.addPipelineStep(TextExtraction.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(RecommendationGenerator.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(ConnectionGenerator.get(additionalConfigs, dataRepository));
diff --git a/pipeline/pipeline-lissa/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForLiSSA.java b/pipeline/pipeline-lissa/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForLiSSA.java
index d652dd8d6..e401558af 100644
--- a/pipeline/pipeline-lissa/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForLiSSA.java
+++ b/pipeline/pipeline-lissa/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForLiSSA.java
@@ -2,19 +2,15 @@
package edu.kit.kastel.mcse.ardoco.core.execution.runner;
import java.io.File;
-import java.io.IOException;
import java.util.SortedMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
import edu.kit.kastel.mcse.ardoco.core.connectiongenerator.ConnectionGenerator;
import edu.kit.kastel.mcse.ardoco.core.execution.ArDoCo;
import edu.kit.kastel.mcse.ardoco.core.inconsistency.InconsistencyChecker;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelProviderAgent;
+import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.text.providers.TextPreprocessingAgent;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextExtraction;
@@ -24,7 +20,6 @@
* The Runner for the Linking Sketches and Software Architecture Approach (LiSSA)
*/
public class ArDoCoForLiSSA extends ArDoCoRunner {
- private static final Logger logger = LoggerFactory.getLogger(ArDoCoForLiSSA.class);
public ArDoCoForLiSSA(String projectName) {
super(projectName);
@@ -32,13 +27,7 @@ public ArDoCoForLiSSA(String projectName) {
public void setUp(File diagramDirectory, File inputText, File inputModelArchitecture, ArchitectureModelType inputArchitectureModelType,
SortedMap additionalConfigs, File outputDir) {
- try {
- definePipeline(diagramDirectory, inputText, inputModelArchitecture, inputArchitectureModelType, additionalConfigs);
- } catch (IOException e) {
- logger.error("Problem in initialising pipeline when loading data (IOException)", e.getCause());
- isSetUp = false;
- return;
- }
+ definePipeline(diagramDirectory, inputText, inputModelArchitecture, inputArchitectureModelType, additionalConfigs);
setOutputDirectory(outputDir);
isSetUp = true;
}
@@ -57,10 +46,9 @@ public void setUp(String diagramDirectory, String inputTextLocation, String inpu
* @param inputArchitectureModel the input architecture file
* @param architectureModelType the type of the architecture (e.g., PCM, UML)
* @param additionalConfigs the additional configs
- * @throws IOException When one of the input files cannot be accessed/loaded
*/
private void definePipeline(File diagramDirectory, File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType,
- SortedMap additionalConfigs) throws IOException {
+ SortedMap additionalConfigs) {
ArDoCo arDoCo = getArDoCo();
var dataRepository = arDoCo.getDataRepository();
var text = CommonUtilities.readInputText(inputText);
@@ -72,7 +60,11 @@ private void definePipeline(File diagramDirectory, File inputText, File inputArc
arDoCo.addPipelineStep(DiagramRecognition.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(TextPreprocessingAgent.get(additionalConfigs, dataRepository));
- arDoCo.addPipelineStep(ModelProviderAgent.get(inputArchitectureModel, architectureModelType, dataRepository));
+
+ ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, null, additionalConfigs,
+ dataRepository);
+ arDoCo.addPipelineStep(arCoTLModelProviderAgent);
+
arDoCo.addPipelineStep(TextExtraction.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(RecommendationGenerator.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(ConnectionGenerator.get(additionalConfigs, dataRepository));
diff --git a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadCodeTraceabilityLinkRecovery.java b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadCodeTraceabilityLinkRecovery.java
index e0613450a..3ea495578 100644
--- a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadCodeTraceabilityLinkRecovery.java
+++ b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadCodeTraceabilityLinkRecovery.java
@@ -4,14 +4,12 @@
import java.io.File;
import java.util.SortedMap;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.SadCodeTraceabilityLinkRecovery;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
import edu.kit.kastel.mcse.ardoco.core.connectiongenerator.ConnectionGenerator;
import edu.kit.kastel.mcse.ardoco.core.execution.runner.ArDoCoRunner;
import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelProviderAgent;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.text.providers.TextPreprocessingAgent;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextExtraction;
@@ -22,16 +20,13 @@ public ArDoCoForSadCodeTraceabilityLinkRecovery(String projectName) {
super(projectName);
}
- public void setUp(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType, File inputCode,
- SortedMap additionalConfigs, File outputDir) {
-
- definePipeline(inputText, inputArchitectureModel, architectureModelType, inputCode, additionalConfigs);
+ public void setUp(File inputText, File inputCode, SortedMap additionalConfigs, File outputDir) {
+ definePipeline(inputText, inputCode, additionalConfigs);
setOutputDirectory(outputDir);
isSetUp = true;
}
- private void definePipeline(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType, File inputCode,
- SortedMap additionalConfigs) {
+ private void definePipeline(File inputText, File inputCode, SortedMap additionalConfigs) {
ArDoCo arDoCo = this.getArDoCo();
var dataRepository = arDoCo.getDataRepository();
@@ -40,10 +35,8 @@ private void definePipeline(File inputText, File inputArchitectureModel, Archite
throw new IllegalArgumentException("Cannot deal with empty input text. Maybe there was an error reading the file.");
}
DataRepositoryHelper.putInputText(dataRepository, text);
- ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, inputCode,
- additionalConfigs, dataRepository);
+ ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(null, null, inputCode, additionalConfigs, dataRepository);
arDoCo.addPipelineStep(arCoTLModelProviderAgent);
- arDoCo.addPipelineStep(ModelProviderAgent.getCodeProvider(dataRepository));
arDoCo.addPipelineStep(TextPreprocessingAgent.get(additionalConfigs, dataRepository));
diff --git a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamCodeTraceabilityLinkRecovery.java b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamCodeTraceabilityLinkRecovery.java
index 184ad1260..11657eca3 100644
--- a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamCodeTraceabilityLinkRecovery.java
+++ b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamCodeTraceabilityLinkRecovery.java
@@ -2,7 +2,6 @@
package edu.kit.kastel.mcse.ardoco.core.execution;
import java.io.File;
-import java.io.IOException;
import java.util.SortedMap;
import org.slf4j.Logger;
@@ -16,7 +15,6 @@
import edu.kit.kastel.mcse.ardoco.core.connectiongenerator.ConnectionGenerator;
import edu.kit.kastel.mcse.ardoco.core.execution.runner.ArDoCoRunner;
import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelProviderAgent;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.text.providers.TextPreprocessingAgent;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextExtraction;
@@ -30,20 +28,13 @@ public ArDoCoForSadSamCodeTraceabilityLinkRecovery(String projectName) {
public void setUp(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType, File inputCode,
SortedMap additionalConfigs, File outputDir) {
- try {
- definePipeline(inputText, inputArchitectureModel, architectureModelType, inputCode, additionalConfigs);
- } catch (IOException e) {
- logger.error("Problem in initialising pipeline when loading data (IOException)", e.getCause());
- isSetUp = false;
- return;
- }
-
+ definePipeline(inputText, inputArchitectureModel, architectureModelType, inputCode, additionalConfigs);
setOutputDirectory(outputDir);
isSetUp = true;
}
private void definePipeline(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType, File inputCode,
- SortedMap additionalConfigs) throws IOException {
+ SortedMap additionalConfigs) {
ArDoCo arDoCo = this.getArDoCo();
var dataRepository = arDoCo.getDataRepository();
@@ -54,15 +45,15 @@ private void definePipeline(File inputText, File inputArchitectureModel, Archite
DataRepositoryHelper.putInputText(dataRepository, text);
arDoCo.addPipelineStep(TextPreprocessingAgent.get(additionalConfigs, dataRepository));
- arDoCo.addPipelineStep(ModelProviderAgent.get(inputArchitectureModel, architectureModelType, dataRepository));
+
+ ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, inputCode,
+ additionalConfigs, dataRepository);
+ arDoCo.addPipelineStep(arCoTLModelProviderAgent);
arDoCo.addPipelineStep(TextExtraction.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(RecommendationGenerator.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(ConnectionGenerator.get(additionalConfigs, dataRepository));
- ArCoTLModelProviderAgent arCoTLModelProviderAgent = ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, inputCode,
- additionalConfigs, dataRepository);
- arDoCo.addPipelineStep(arCoTLModelProviderAgent);
arDoCo.addPipelineStep(SamCodeTraceabilityLinkRecovery.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(SadSamCodeTraceabilityLinkRecovery.get(additionalConfigs, dataRepository));
diff --git a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamTraceabilityLinkRecovery.java b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamTraceabilityLinkRecovery.java
index 63c3cfe88..e88294c3e 100644
--- a/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamTraceabilityLinkRecovery.java
+++ b/pipeline/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/ArDoCoForSadSamTraceabilityLinkRecovery.java
@@ -2,38 +2,26 @@
package edu.kit.kastel.mcse.ardoco.core.execution;
import java.io.File;
-import java.io.IOException;
import java.util.SortedMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
import edu.kit.kastel.mcse.ardoco.core.connectiongenerator.ConnectionGenerator;
import edu.kit.kastel.mcse.ardoco.core.execution.runner.ArDoCoRunner;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelProviderAgent;
+import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.text.providers.TextPreprocessingAgent;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextExtraction;
public class ArDoCoForSadSamTraceabilityLinkRecovery extends ArDoCoRunner {
- private static final Logger logger = LoggerFactory.getLogger(ArDoCoForSadSamTraceabilityLinkRecovery.class);
-
public ArDoCoForSadSamTraceabilityLinkRecovery(String projectName) {
super(projectName);
}
public void setUp(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType, SortedMap additionalConfigs,
File outputDir) {
- try {
- definePipeline(inputText, inputArchitectureModel, architectureModelType, additionalConfigs);
- } catch (IOException e) {
- logger.error("Problem in initialising pipeline when loading data (IOException)", e.getCause());
- isSetUp = false;
- return;
- }
+ definePipeline(inputText, inputArchitectureModel, architectureModelType, additionalConfigs);
setOutputDirectory(outputDir);
isSetUp = true;
}
@@ -44,7 +32,7 @@ public void setUp(String inputTextLocation, String inputArchitectureModelLocatio
}
private void definePipeline(File inputText, File inputArchitectureModel, ArchitectureModelType architectureModelType,
- SortedMap additionalConfigs) throws IOException {
+ SortedMap additionalConfigs) {
var dataRepository = this.getArDoCo().getDataRepository();
var text = CommonUtilities.readInputText(inputText);
if (text.isBlank()) {
@@ -53,7 +41,9 @@ private void definePipeline(File inputText, File inputArchitectureModel, Archite
DataRepositoryHelper.putInputText(dataRepository, text);
this.getArDoCo().addPipelineStep(TextPreprocessingAgent.get(additionalConfigs, dataRepository));
- this.getArDoCo().addPipelineStep(ModelProviderAgent.get(inputArchitectureModel, architectureModelType, dataRepository));
+ ArCoTLModelProviderAgent arCoTLModelProviderAgent = //
+ ArCoTLModelProviderAgent.get(inputArchitectureModel, architectureModelType, null, additionalConfigs, dataRepository);
+ this.getArDoCo().addPipelineStep(arCoTLModelProviderAgent);
this.getArDoCo().addPipelineStep(TextExtraction.get(additionalConfigs, dataRepository));
this.getArDoCo().addPipelineStep(RecommendationGenerator.get(additionalConfigs, dataRepository));
diff --git a/pipeline/pipeline-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForSadCodeTraceabilityLinkRecoveryTest.java b/pipeline/pipeline-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForSadCodeTraceabilityLinkRecoveryTest.java
index b73f3ee92..c501eac65 100644
--- a/pipeline/pipeline-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForSadCodeTraceabilityLinkRecoveryTest.java
+++ b/pipeline/pipeline-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoForSadCodeTraceabilityLinkRecoveryTest.java
@@ -7,7 +7,6 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.execution.ArDoCoForSadCodeTraceabilityLinkRecovery;
import edu.kit.kastel.mcse.ardoco.core.execution.CodeRunnerBaseTest;
import edu.kit.kastel.mcse.ardoco.core.execution.ConfigurationHelper;
@@ -19,8 +18,7 @@ class ArDoCoForSadCodeTraceabilityLinkRecoveryTest extends CodeRunnerBaseTest {
void testSadCodeTlr() {
var runner = new ArDoCoForSadCodeTraceabilityLinkRecovery(PROJECT_NAME);
var additionalConfigsMap = ConfigurationHelper.loadAdditionalConfigs(new File(ADDITIONAL_CONFIGS));
- runner.setUp(new File(INPUT_TEXT), new File(INPUT_MODEL_ARCHITECTURE), ArchitectureModelType.PCM, new File(CodeRunnerBaseTest.inputCode),
- additionalConfigsMap, new File(OUTPUT_DIR));
+ runner.setUp(new File(INPUT_TEXT), new File(CodeRunnerBaseTest.inputCode), additionalConfigsMap, new File(OUTPUT_DIR));
testRunnerAssertions(runner);
Assertions.assertNotNull(runner.run());
diff --git a/pom.xml b/pom.xml
index 90320856e..a194032d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
MIT License
- http://www.opensource.org/licenses/mit-license.php
+ https://www.opensource.org/licenses/mit-license.php
@@ -75,7 +75,7 @@
${revision}
UTF-8
- 17
+ 21
${java.version}
${java.version}
${java.version}
@@ -83,11 +83,11 @@
official
${java.version}
- 1.9.20
+ 1.9.21
2.0.9
- 2.40.0
+ 2.41.0
5.10.1
12.0.0.M3
2.16.0
diff --git a/stages/code-traceability/pom.xml b/stages/code-traceability/pom.xml
index a8a3d6dcf..a093a8ef4 100644
--- a/stages/code-traceability/pom.xml
+++ b/stages/code-traceability/pom.xml
@@ -40,7 +40,7 @@
org.apache.opennlp
opennlp-tools
- 2.3.0
+ 2.3.1
org.junit.jupiter
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArCoTLInformant.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArCoTLInformant.java
index 6fcf86082..f9a9e078e 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArCoTLInformant.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArCoTLInformant.java
@@ -6,8 +6,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.CodeModelType;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.TraceLinkGenerator;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.computationtree.Node;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArchitectureLinkToCodeLinkTransformerInformant.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArchitectureLinkToCodeLinkTransformerInformant.java
index 4cef4436d..d500afa7b 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArchitectureLinkToCodeLinkTransformerInformant.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/ArchitectureLinkToCodeLinkTransformerInformant.java
@@ -12,8 +12,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.connectiongenerator.ConnectionStates;
import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.EndpointTuple;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SadCodeTraceLink;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/TraceLinkCombiner.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/TraceLinkCombiner.java
index 24a682607..5cd566086 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/TraceLinkCombiner.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/TraceLinkCombiner.java
@@ -37,7 +37,7 @@ public void run() {
return;
}
var samCodeTraceLinks = codeTraceabilityState.getSamCodeTraceLinks();
- for (var modelId : modelStatesData.extractionModelIds()) {
+ for (var modelId : modelStatesData.modelIds()) {
var metamodel = modelStatesData.getModelExtractionState(modelId).getMetamodel();
var connectionState = connectionStates.getConnectionState(metamodel);
var sadSamTraceLinks = connectionState.getTraceLinks();
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/NameComparisonUtils.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/NameComparisonUtils.java
index 1bed7e4c2..0a574327f 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/NameComparisonUtils.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/NameComparisonUtils.java
@@ -188,7 +188,7 @@ private static int getWordCount(String name) {
//
public enum PreprocessingMethod {
- NONE, STEMMING, LEMMATIZATION;
+ NONE, STEMMING, LEMMATIZATION
}
private static boolean areEqual(String name1, String name2, PreprocessingMethod methodToUse) {
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/TraceLinkGenerator.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/TraceLinkGenerator.java
index 48a71c5ec..511bc07d7 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/TraceLinkGenerator.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/TraceLinkGenerator.java
@@ -5,8 +5,8 @@
import java.util.Map;
import java.util.Set;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SamCodeTraceLink;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.Computation;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/Computation.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/Computation.java
index 360be5f5d..d913a5daf 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/Computation.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/Computation.java
@@ -3,8 +3,8 @@
import java.util.Set;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SamCodeTraceLink;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.computationtree.Node;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/EndpointTupleRepo.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/EndpointTupleRepo.java
index 4735115cd..7b8071fd9 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/EndpointTupleRepo.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/EndpointTupleRepo.java
@@ -4,8 +4,8 @@
import java.util.ArrayList;
import java.util.List;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
/**
* A repository of endpoint tuples. An endpoint tuple consists of an
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/NodeResult.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/NodeResult.java
index 41dc06dd5..edefe7daf 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/NodeResult.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/NodeResult.java
@@ -9,10 +9,10 @@
import java.util.TreeSet;
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.EndpointTuple;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.SamCodeTraceLink;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/AggregationNode.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/AggregationNode.java
index c91ca29ca..216890009 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/AggregationNode.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/AggregationNode.java
@@ -5,8 +5,8 @@
import java.util.List;
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.ComputationResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.functions.aggregation.Aggregation;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/DependentHeuristicNode.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/DependentHeuristicNode.java
index c03483589..d15a2cc57 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/DependentHeuristicNode.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/DependentHeuristicNode.java
@@ -3,8 +3,8 @@
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.ComputationResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.functions.heuristics.DependentHeuristic;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/Node.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/Node.java
index 35122e026..f599e557b 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/Node.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/Node.java
@@ -4,8 +4,8 @@
import java.util.ArrayList;
import java.util.List;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.ComputationResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/StandaloneHeuristicNode.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/StandaloneHeuristicNode.java
index 3043004a8..71351b257 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/StandaloneHeuristicNode.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/computation/computationtree/StandaloneHeuristicNode.java
@@ -3,8 +3,8 @@
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.ComputationResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.functions.heuristics.StandaloneHeuristic;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Aggregation.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Aggregation.java
index d7ae2fc91..97e48abdc 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Aggregation.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Aggregation.java
@@ -4,8 +4,8 @@
import java.util.List;
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
/**
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Average.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Average.java
index 2a0da921a..cd9a01d66 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Average.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Average.java
@@ -100,7 +100,7 @@ public boolean equals(Object obj) {
public String toString() {
String weightsString = "";
if (weights.isPresent()) {
- weightsString = "-" + weights.toString();
+ weightsString = "-" + weights;
}
return "Average" + weightsString;
}
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/ConfidenceAggregator.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/ConfidenceAggregator.java
index 18f9d331a..486051fe5 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/ConfidenceAggregator.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/ConfidenceAggregator.java
@@ -4,8 +4,8 @@
import java.util.ArrayList;
import java.util.List;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.EndpointTuple;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.Confidence;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.EndpointTupleRepo;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Matcher.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Matcher.java
index 61a6e1b3e..c2a1d03b1 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Matcher.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/aggregation/Matcher.java
@@ -5,8 +5,8 @@
import java.util.Objects;
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
public abstract class Matcher extends Aggregation {
@@ -34,17 +34,10 @@ protected Matcher(EndpointType endpointsToUse) {
@Override
public NodeResult calculateConfidences(ArchitectureModel archModel, CodeModel codeModel, List childrenResults) {
NodeResult matchResult = new NodeResult(archModel, codeModel);
- List extends Entity> endpoints;
- switch (endpointTypeToMatch) {
- case ARCHITECTURE:
- endpoints = archModel.getEndpoints();
- break;
- case CODE:
- endpoints = codeModel.getEndpoints();
- break;
- default:
- throw new IllegalStateException("Unsupported endpoint type used: " + endpointTypeToMatch);
- }
+ List extends Entity> endpoints = switch (endpointTypeToMatch) {
+ case ARCHITECTURE -> archModel.getEndpoints();
+ case CODE -> codeModel.getEndpoints();
+ };
for (Entity endpointToMatch : endpoints) {
NodeResult partialMatchResult = matchEndpoint(endpointToMatch, childrenResults);
matchResult.addAll(partialMatchResult);
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/DependentHeuristic.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/DependentHeuristic.java
index 94d7528a8..ab92c3219 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/DependentHeuristic.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/DependentHeuristic.java
@@ -3,8 +3,8 @@
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.computationtree.DependentHeuristicNode;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.computationtree.Node;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/Heuristic.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/Heuristic.java
index 4d1c8ca07..274cbfa2a 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/Heuristic.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/Heuristic.java
@@ -4,12 +4,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureInterface;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.Confidence;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.EndpointTupleRepo;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
diff --git a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/StandaloneHeuristic.java b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/StandaloneHeuristic.java
index ed379f927..422643c93 100644
--- a/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/StandaloneHeuristic.java
+++ b/stages/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/core/codetraceability/informants/arcotl/functions/heuristics/StandaloneHeuristic.java
@@ -3,8 +3,8 @@
import java.util.Objects;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.NodeResult;
import edu.kit.kastel.mcse.ardoco.core.codetraceability.informants.arcotl.computation.computationtree.StandaloneHeuristicNode;
diff --git a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ExtractionDependentOccurrenceInformant.java b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ExtractionDependentOccurrenceInformant.java
index 3f1d9af7d..aa008ed1d 100644
--- a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ExtractionDependentOccurrenceInformant.java
+++ b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ExtractionDependentOccurrenceInformant.java
@@ -3,7 +3,7 @@
import java.util.SortedMap;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.api.text.Word;
import edu.kit.kastel.mcse.ardoco.core.api.textextraction.MappingKind;
@@ -39,7 +39,7 @@ public void run() {
}
private void exec(TextState textState, ModelStates modelStates, Word word) {
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
searchForName(modelState, textState, word);
@@ -51,7 +51,7 @@ private void exec(TextState textState, ModelStates modelStates, Word word) {
* This method checks whether a given node is a name of an instance given in the model extraction state. If it
* appears to be a name this is stored in the text extraction state.
*/
- private void searchForName(ModelExtractionState modelState, TextState textState, Word word) {
+ private void searchForName(LegacyModelExtractionState modelState, TextState textState, Word word) {
if (posTagIsUndesired(word) && !wordStartsWithCapitalLetter(word)) {
return;
}
@@ -74,7 +74,7 @@ private boolean posTagIsUndesired(Word word) {
* appears to be a type this is stored in the text extraction state. If multiple options are available the node
* value is taken as reference.
*/
- private void searchForType(ModelExtractionState modelState, TextState textState, Word word) {
+ private void searchForType(LegacyModelExtractionState modelState, TextState textState, Word word) {
var instanceTypeIsSimilar = modelState.getInstances().anySatisfy(i -> SimilarityUtils.isWordSimilarToModelInstanceType(word, i));
if (instanceTypeIsSimilar) {
textState.addNounMapping(word, MappingKind.TYPE, this, probability);
diff --git a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/InstantConnectionInformant.java b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/InstantConnectionInformant.java
index 3c95c9dfa..abb0bd16c 100644
--- a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/InstantConnectionInformant.java
+++ b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/InstantConnectionInformant.java
@@ -4,8 +4,8 @@
import java.util.SortedMap;
import edu.kit.kastel.mcse.ardoco.core.api.connectiongenerator.ConnectionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
@@ -30,7 +30,7 @@ public void run() {
var modelStates = DataRepositoryHelper.getModelStatesData(dataRepository);
var recommendationStates = DataRepositoryHelper.getRecommendationStates(dataRepository);
var connectionStates = DataRepositoryHelper.getConnectionStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
Metamodel metamodel = modelState.getMetamodel();
var recommendationState = recommendationStates.getRecommendationState(metamodel);
@@ -45,7 +45,7 @@ public void run() {
* Searches in the recommended instances of the recommendation state for similar names to extracted instances. If
* some are found the instance link is added to the connection state.
*/
- private void findNamesOfModelInstancesInSupposedMappings(ModelExtractionState modelState, RecommendationState recommendationState,
+ private void findNamesOfModelInstancesInSupposedMappings(LegacyModelExtractionState modelState, RecommendationState recommendationState,
ConnectionState connectionState) {
var recommendedInstances = recommendationState.getRecommendedInstances();
for (ModelInstance instance : modelState.getInstances()) {
@@ -58,7 +58,7 @@ private void findNamesOfModelInstancesInSupposedMappings(ModelExtractionState mo
}
}
- private void createLinksForEqualOrSimilarRecommendedInstances(ModelExtractionState modelState, RecommendationState recommendationState,
+ private void createLinksForEqualOrSimilarRecommendedInstances(LegacyModelExtractionState modelState, RecommendationState recommendationState,
ConnectionState connectionState) {
for (var recommendedInstance : recommendationState.getRecommendedInstances()) {
var sameInstances = modelState.getInstances()
diff --git a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/NameTypeConnectionInformant.java b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/NameTypeConnectionInformant.java
index e1239acf7..8553f620f 100644
--- a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/NameTypeConnectionInformant.java
+++ b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/NameTypeConnectionInformant.java
@@ -7,7 +7,7 @@
import org.eclipse.collections.api.list.ImmutableList;
import org.eclipse.collections.api.list.MutableList;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
@@ -49,7 +49,7 @@ public void run() {
}
private void exec(TextState textState, ModelStates modelStates, RecommendationStates recommendationStates, Word word) {
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
var recommendationState = recommendationStates.getRecommendationState(modelState.getMetamodel());
checkForNameAfterType(textState, word, modelState, recommendationState);
@@ -63,7 +63,8 @@ private void exec(TextState textState, ModelStates modelStates, RecommendationSt
* Checks if the current node is a type in the text extraction state. If the names of the text extraction state
* contain the previous node. If that's the case a recommendation for the combination of both is created.
*/
- private void checkForNameBeforeType(TextState textExtractionState, Word word, ModelExtractionState modelState, RecommendationState recommendationState) {
+ private void checkForNameBeforeType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
+ RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
}
@@ -92,7 +93,8 @@ private void checkForNameBeforeType(TextState textExtractionState, Word word, Mo
* @param modelState the current model state
* @param recommendationState the current recommendation state
*/
- private void checkForNameAfterType(TextState textExtractionState, Word word, ModelExtractionState modelState, RecommendationState recommendationState) {
+ private void checkForNameAfterType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
+ RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
}
@@ -115,7 +117,8 @@ private void checkForNameAfterType(TextState textExtractionState, Word word, Mod
* Checks if the current node is a type in the text extraction state. If the name_or_types of the text extraction
* state contain the previous node. If that's the case a recommendation for the combination of both is created.
*/
- private void checkForNortBeforeType(TextState textExtractionState, Word word, ModelExtractionState modelState, RecommendationState recommendationState) {
+ private void checkForNortBeforeType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
+ RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
}
@@ -139,7 +142,8 @@ private void checkForNortBeforeType(TextState textExtractionState, Word word, Mo
* Checks if the current node is a type in the text extraction state. If the name_or_types of the text extraction
* state contain the afterwards node. If that's the case a recommendation for the combination of both is created.
*/
- private void checkForNortAfterType(TextState textExtractionState, Word word, ModelExtractionState modelState, RecommendationState recommendationState) {
+ private void checkForNortAfterType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
+ RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
}
@@ -190,7 +194,7 @@ private void addRecommendedInstanceIfNodeNotNull(//
* @param word the node for name identification
* @return the unique matching instance
*/
- private ModelInstance tryToIdentify(TextState textExtractionState, ImmutableList similarTypes, Word word, ModelExtractionState modelState) {
+ private ModelInstance tryToIdentify(TextState textExtractionState, ImmutableList similarTypes, Word word, LegacyModelExtractionState modelState) {
if (textExtractionState == null || similarTypes == null || word == null) {
return null;
}
diff --git a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ProjectNameInformant.java b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ProjectNameInformant.java
index a6313d9e0..407d1406c 100644
--- a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ProjectNameInformant.java
+++ b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ProjectNameInformant.java
@@ -45,7 +45,7 @@ public void run() {
var projectName = DataRepositoryHelper.getProjectPipelineData(dataRepository).getProjectName();
var modelStates = DataRepositoryHelper.getModelStatesData(dataRepository);
var recommendationStates = DataRepositoryHelper.getRecommendationStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
Metamodel metamodel = modelState.getMetamodel();
var recommendationState = recommendationStates.getRecommendationState(metamodel);
diff --git a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ReferenceInformant.java b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ReferenceInformant.java
index 3dcf99786..be2729f1d 100644
--- a/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ReferenceInformant.java
+++ b/stages/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/connectiongenerator/informants/ReferenceInformant.java
@@ -5,7 +5,7 @@
import org.eclipse.collections.api.list.ImmutableList;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
import edu.kit.kastel.mcse.ardoco.core.api.textextraction.MappingKind;
@@ -32,7 +32,7 @@ public void run() {
var textState = DataRepositoryHelper.getTextState(dataRepository);
var modelStates = DataRepositoryHelper.getModelStatesData(dataRepository);
var recommendationStates = DataRepositoryHelper.getRecommendationStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
var recommendationState = recommendationStates.getRecommendationState(modelState.getMetamodel());
findRecommendedInstancesFromNounMappingsThatAreSimilarToInstances(modelState, recommendationState, textState);
@@ -43,8 +43,8 @@ public void run() {
* Searches for instances mentioned in the text extraction state as names. If it founds some similar names it
* creates recommendations.
*/
- private void findRecommendedInstancesFromNounMappingsThatAreSimilarToInstances(ModelExtractionState modelState, RecommendationState recommendationState,
- TextState textState) {
+ private void findRecommendedInstancesFromNounMappingsThatAreSimilarToInstances(LegacyModelExtractionState modelState,
+ RecommendationState recommendationState, TextState textState) {
for (ModelInstance instance : modelState.getInstances()) {
var similarToInstanceMappings = getSimilarNounMappings(instance, textState);
diff --git a/stages/diagram-recognition/pom.xml b/stages/diagram-recognition/pom.xml
index 0fd683d92..c8ac005c4 100644
--- a/stages/diagram-recognition/pom.xml
+++ b/stages/diagram-recognition/pom.xml
@@ -17,7 +17,7 @@
io.github.ardoco
docker
- 0.18.0
+ 0.20.0
io.github.ardoco.core
diff --git a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/InitialInconsistencyAgent.java b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/InitialInconsistencyAgent.java
index bbe41a51b..a2cddc7b6 100644
--- a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/InitialInconsistencyAgent.java
+++ b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/InitialInconsistencyAgent.java
@@ -25,7 +25,7 @@ protected void initializeState() {
var modelStates = DataRepositoryHelper.getModelStatesData(dataRepository);
var recommendationStates = DataRepositoryHelper.getRecommendationStates(dataRepository);
var inconsistencyStates = DataRepositoryHelper.getInconsistencyStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
Metamodel metamodel = modelState.getMetamodel();
var inconsistencyState = inconsistencyStates.getInconsistencyState(metamodel);
diff --git a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/Filter.java b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/Filter.java
index 8fcfdb278..30df0cbe0 100644
--- a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/Filter.java
+++ b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/Filter.java
@@ -26,7 +26,7 @@ public void run() {
var modelStates = DataRepositoryHelper.getModelStatesData(dataRepository);
var inconsistencyStates = DataRepositoryHelper.getInconsistencyStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
var inconsistencyState = inconsistencyStates.getInconsistencyState(modelState.getMetamodel());
filterRecommendedInstances(inconsistencyState);
diff --git a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/MissingModelElementInconsistencyInformant.java b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/MissingModelElementInconsistencyInformant.java
index 65a45bf14..ff865a573 100644
--- a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/MissingModelElementInconsistencyInformant.java
+++ b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/MissingModelElementInconsistencyInformant.java
@@ -10,8 +10,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.connectiongenerator.ConnectionStates;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistencyState;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistencyStates;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.tracelinks.InstanceLink;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendedInstance;
import edu.kit.kastel.mcse.ardoco.core.api.textextraction.NounMapping;
@@ -40,14 +40,14 @@ public void run() {
var connectionStates = DataRepositoryHelper.getConnectionStates(dataRepository);
var inconsistencyStates = DataRepositoryHelper.getInconsistencyStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
findMissingModelElementInconsistencies(connectionStates, inconsistencyStates, modelState);
}
}
private void findMissingModelElementInconsistencies(ConnectionStates connectionStates, InconsistencyStates inconsistencyStates,
- ModelExtractionState modelState) {
+ LegacyModelExtractionState modelState) {
Metamodel metamodel = modelState.getMetamodel();
var inconsistencyState = inconsistencyStates.getInconsistencyState(metamodel);
var connectionState = connectionStates.getConnectionState(metamodel);
diff --git a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/UndocumentedModelElementInconsistencyInformant.java b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/UndocumentedModelElementInconsistencyInformant.java
index 119fb3b69..c99ec7090 100644
--- a/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/UndocumentedModelElementInconsistencyInformant.java
+++ b/stages/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/informants/UndocumentedModelElementInconsistencyInformant.java
@@ -42,7 +42,7 @@ public void run() {
var connectionStates = DataRepositoryHelper.getConnectionStates(dataRepository);
var inconsistencyStates = DataRepositoryHelper.getInconsistencyStates(dataRepository);
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
var metaModel = modelState.getMetamodel();
var connectionState = connectionStates.getConnectionState(metaModel);
diff --git a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/UndocumentedModelElementInconsistencyTest.java b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/UndocumentedModelElementInconsistencyTest.java
index 0f2b190a6..5d43c7664 100644
--- a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/UndocumentedModelElementInconsistencyTest.java
+++ b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/agents/UndocumentedModelElementInconsistencyTest.java
@@ -8,8 +8,8 @@
import org.junit.jupiter.api.Test;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstanceImpl;
import edu.kit.kastel.mcse.ardoco.core.inconsistency.informants.UndocumentedModelElementInconsistencyInformant;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
/**
* Tests for the {@link UndocumentedModelElementInconsistencyInformant}.
diff --git a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/MissingTextForModelElementInconsistencyTest.java b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/MissingTextForModelElementInconsistencyTest.java
index a02207fa3..3fbb51f62 100644
--- a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/MissingTextForModelElementInconsistencyTest.java
+++ b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/MissingTextForModelElementInconsistencyTest.java
@@ -5,7 +5,7 @@
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.Inconsistency;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstanceImpl;
/**
*
diff --git a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/NameInconsistencyTest.java b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/NameInconsistencyTest.java
index 2da142f85..60889f1a5 100644
--- a/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/NameInconsistencyTest.java
+++ b/stages/inconsistency-detection/src/test/java/edu/kit/kastel/mcse/ardoco/core/inconsistency/types/NameInconsistencyTest.java
@@ -4,7 +4,7 @@
import org.junit.jupiter.api.BeforeEach;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.Inconsistency;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstanceImpl;
class NameInconsistencyTest extends AbstractInconsistencyTypeTest {
private static final String NAME_INCONSISTENCY_TYPE = "NameInconsistency";
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ArCoTLModelProviderAgent.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ArCoTLModelProviderAgent.java
index c2fda81a3..c57f0d7a7 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ArCoTLModelProviderAgent.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ArCoTLModelProviderAgent.java
@@ -2,6 +2,7 @@
package edu.kit.kastel.mcse.ardoco.core.models;
import java.io.File;
+import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
@@ -40,13 +41,28 @@ private static List extends Informant> informants(DataRepository data, List additionalConfigs, DataRepository dataRepository) {
- ArchitectureExtractor architectureExtractor = switch (architectureModelType) {
- case PCM -> new PcmExtractor(inputArchitectureModel.getAbsolutePath());
- case UML -> new UmlExtractor(inputArchitectureModel.getAbsolutePath());
- };
- CodeItemRepository codeItemRepository = new CodeItemRepository();
- CodeExtractor codeExtractor = new AllLanguagesExtractor(codeItemRepository, inputCode.getAbsolutePath());
- ArCoTLModelProviderAgent agent = new ArCoTLModelProviderAgent(dataRepository, List.of(architectureExtractor, codeExtractor));
+
+ List extractors = new ArrayList<>();
+
+ if (inputArchitectureModel != null && architectureModelType != null) {
+ ArchitectureExtractor architectureExtractor = switch (architectureModelType) {
+ case PCM -> new PcmExtractor(inputArchitectureModel.getAbsolutePath());
+ case UML -> new UmlExtractor(inputArchitectureModel.getAbsolutePath());
+ };
+ extractors.add(architectureExtractor);
+ }
+
+ if (inputCode != null) {
+ CodeItemRepository codeItemRepository = new CodeItemRepository();
+ CodeExtractor codeExtractor = new AllLanguagesExtractor(codeItemRepository, inputCode.getAbsolutePath());
+ extractors.add(codeExtractor);
+ }
+
+ if (extractors.isEmpty()) {
+ throw new IllegalArgumentException("No model extractor was provided.");
+ }
+
+ ArCoTLModelProviderAgent agent = new ArCoTLModelProviderAgent(dataRepository, extractors);
agent.applyConfiguration(additionalConfigs);
return agent;
}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelExtractionStateImpl.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelExtractionStateImpl.java
deleted file mode 100644
index eecb87c12..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelExtractionStateImpl.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Licensed under MIT 2021-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models;
-
-import java.util.Objects;
-
-import org.eclipse.collections.api.factory.Lists;
-import org.eclipse.collections.api.factory.SortedSets;
-import org.eclipse.collections.api.list.ImmutableList;
-import org.eclipse.collections.api.set.sorted.ImmutableSortedSet;
-import org.eclipse.collections.api.set.sorted.MutableSortedSet;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.data.AbstractState;
-
-/**
- * This state contains all from the model extracted information. This are the extracted instances and relations. For
- * easier handling, the occurring types and names are stored additionally.
- */
-public class ModelExtractionStateImpl extends AbstractState implements ModelExtractionState {
-
- private final String modelId;
- private final Metamodel metamodelType;
- private final MutableSortedSet instanceTypes;
- private final MutableSortedSet names;
- private transient ImmutableList instances;
-
- // For generation of configuration
- private ModelExtractionStateImpl() {
- this.modelId = null;
- this.metamodelType = null;
- this.instanceTypes = null;
- this.names = null;
- }
-
- /**
- * Creates a new model extraction state.
- *
- * @param modelId the model id
- * @param metamodelType the metamodel type
- * @param instances instances of this model extraction state
- */
- public ModelExtractionStateImpl(String modelId, Metamodel metamodelType, ImmutableList instances) {
- this.modelId = Objects.requireNonNull(modelId);
- this.metamodelType = metamodelType;
- this.instances = instances;
- instanceTypes = SortedSets.mutable.empty();
- names = SortedSets.mutable.empty();
- collectTypesAndNames();
- }
-
- /**
- * Collects all occurring types and names from the instances and relations and stores them. The titles of relations
- * are stored in types.
- */
- private void collectTypesAndNames() {
- for (ModelInstance i : instances) {
- instanceTypes.addAll(i.getTypeParts().castToCollection());
- names.addAll(i.getNameParts().castToCollection());
- }
- }
-
- @Override
- public String getModelId() {
- return modelId;
- }
-
- @Override
- public Metamodel getMetamodel() {
- return metamodelType;
- }
-
- /**
- * Returns the instances of a specific type.
- *
- * @param type the type to search for
- * @return all instances that are from that type
- */
- @Override
- public ImmutableList getInstancesOfType(String type) {
- return instances.select(i -> i.getTypeParts().contains(type));
- }
-
- /**
- * Returns all types that are contained by instances of this state.
- *
- * @return all instance types of this state
- */
- @Override
- public ImmutableSortedSet getInstanceTypes() {
- return instanceTypes.toImmutable();
- }
-
- /**
- * Returns all names that are contained by this state.
- *
- * @return all names of this state
- */
- @Override
- public ImmutableSortedSet getNames() {
- return names.toImmutable();
- }
-
- /**
- * Returns all instances that are contained by this state.
- *
- * @return all instances of this state
- */
- @Override
- public ImmutableList getInstances() {
- return instances;
- }
-
- @Override
- public void addAllOf(ModelExtractionState other) {
- instanceTypes.addAll(other.getInstanceTypes().toSet());
- names.addAll(other.getNames().castToCollection());
-
- var mergedInstances = Lists.mutable.ofAll(instances);
- mergedInstances.addAll(other.getInstances().toList());
- instances = mergedInstances.toImmutable();
- }
-
- @Override
- public String toString() {
- var output = new StringBuilder("Instances:\n");
- for (ModelInstance i : instances) {
- output.append(i.toString()).append("\n");
- }
- return output.toString();
- }
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelProviderAgent.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelProviderAgent.java
deleted file mode 100644
index 74968a56b..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/ModelProviderAgent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Licensed under MIT 2023. */
-package edu.kit.kastel.mcse.ardoco.core.models;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.configuration.NoConfiguration;
-import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.UmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.models.informants.LegacyCodeModelInformant;
-import edu.kit.kastel.mcse.ardoco.core.models.informants.ModelProviderInformant;
-import edu.kit.kastel.mcse.ardoco.core.pipeline.agent.Informant;
-import edu.kit.kastel.mcse.ardoco.core.pipeline.agent.PipelineAgent;
-
-/**
- * Agent that provides information from models.
- */
-@NoConfiguration
-public class ModelProviderAgent extends PipelineAgent {
-
- /**
- * Instantiates a new model provider agent.
- * The constructor takes a list of ModelConnectors that are executed and used to extract information from models.
- *
- * @param data the DataRepository
- * @param modelConnectors the list of ModelConnectors that should be used
- */
- public ModelProviderAgent(DataRepository data, List modelConnectors) {
- super(informants(modelConnectors, data), ModelProviderAgent.class.getSimpleName(), data);
- }
-
- private static List extends Informant> informants(List modelConnectors, DataRepository data) {
- return modelConnectors.stream().map(e -> new ModelProviderInformant(data, e)).toList();
- }
-
- private ModelProviderAgent(DataRepository data, LegacyCodeModelInformant codeModelInformant) {
- super(List.of(codeModelInformant), ModelProviderAgent.class.getSimpleName(), data);
- }
-
- /**
- * Creates a {@link ModelProviderInformant} for PCM.
- *
- * @param inputArchitectureModel the path to the input PCM
- * @param architectureModelType the architecture model to use
- * @param dataRepository the data repository
- * @return A ModelProvider for the PCM
- * @throws IOException if the Code Model cannot be accessed
- */
- public static ModelProviderAgent get(File inputArchitectureModel, ArchitectureModelType architectureModelType, DataRepository dataRepository)
- throws IOException {
- ModelConnector connector = switch (architectureModelType) {
- case PCM -> new PcmXmlModelConnector(inputArchitectureModel);
- case UML -> new UmlModelConnector(inputArchitectureModel);
- };
- return new ModelProviderAgent(dataRepository, List.of(connector));
- }
-
- public static ModelProviderAgent getCodeProvider(DataRepository dataRepository) {
- return new ModelProviderAgent(dataRepository, new LegacyCodeModelInformant(dataRepository));
- }
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/PcmXmlModelConnector.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/PcmXmlModelConnector.java
deleted file mode 100644
index 0caa2b731..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/PcmXmlModelConnector.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Licensed under MIT 2022-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models.connectors;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Objects;
-
-import org.eclipse.collections.api.factory.Lists;
-import org.eclipse.collections.api.list.ImmutableList;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmModel;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmRepository;
-
-public class PcmXmlModelConnector implements ModelConnector {
-
- private final PcmRepository repository;
-
- public PcmXmlModelConnector(File file) throws IOException {
- this(new FileInputStream(file));
- }
-
- public PcmXmlModelConnector(InputStream is) {
- PcmModel pcmModel = new PcmModel(is);
- this.repository = Objects.requireNonNull(pcmModel.getRepository());
- }
-
- @Override
- public String getModelId() {
- return repository.getId();
- }
-
- @Override
- public Metamodel getMetamodel() {
- return Metamodel.ARCHITECTURE;
- }
-
- @Override
- public ImmutableList getInstances() {
- return Lists.immutable.withAll(repository.getComponents()).collect(e -> new ModelInstanceImpl(e.getEntityName(), e.getType(), e.getId()));
- }
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/UmlModelConnector.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/UmlModelConnector.java
deleted file mode 100644
index 5dddfc4bd..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/UmlModelConnector.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Licensed under MIT 2022-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models.connectors;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Objects;
-
-import org.eclipse.collections.api.factory.Lists;
-import org.eclipse.collections.api.list.ImmutableList;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.uml.parser.UmlModel;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.uml.parser.UmlModelRoot;
-
-public class UmlModelConnector implements ModelConnector {
- private final UmlModelRoot model;
-
- public UmlModelConnector(File file) throws IOException {
- this(new FileInputStream(file));
- }
-
- public UmlModelConnector(InputStream is) {
- UmlModel umlModel = new UmlModel(is);
- this.model = Objects.requireNonNull(umlModel.getModel());
- }
-
- @Override
- public String getModelId() {
- return model.getId();
- }
-
- @Override
- public Metamodel getMetamodel() {
- return Metamodel.ARCHITECTURE;
- }
-
- @Override
- public ImmutableList getInstances() {
- return Lists.immutable.withAll(model.getComponents()).collect(c -> new ModelInstanceImpl(c.getName(), "Component", c.getId()));
- }
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/ArchitectureExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/ArchitectureExtractor.java
index 4ae407091..31142875f 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/ArchitectureExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/ArchitectureExtractor.java
@@ -1,7 +1,7 @@
/* Licensed under MIT 2023. */
package edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.Extractor;
public abstract class ArchitectureExtractor extends Extractor {
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/pcm/PcmExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/pcm/PcmExtractor.java
index 3776734e7..a03a7c8db 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/pcm/PcmExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/pcm/PcmExtractor.java
@@ -9,11 +9,11 @@
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureInterface;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureMethod;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.ArchitectureExtractor;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmComponent;
@@ -21,8 +21,6 @@
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmSignature;
-// TODO we currently more or less have two connectors/extractors: this one and the PcmXmlModelConnector
-
/**
* An extractor for PCM. Extracts an AMTL instance.
*/
@@ -83,7 +81,7 @@ private static List extractComponents(PcmModel originalMo
requiredInterfaces.add(modelInterface);
}
ArchitectureComponent modelComponent = new ArchitectureComponent(originalComponent.getEntityName(), originalComponent.getId(), subcomponents,
- providedInterfaces, requiredInterfaces);
+ providedInterfaces, requiredInterfaces, originalComponent.getType());
components.add(modelComponent);
}
return components;
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/UmlExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/UmlExtractor.java
index 05dde90af..3abf798af 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/UmlExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/UmlExtractor.java
@@ -9,11 +9,11 @@
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureInterface;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureMethod;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.ArchitectureExtractor;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.uml.parser.UmlComponent;
@@ -81,7 +81,7 @@ private static List extractComponents(UmlModel originalMo
requiredInterfaces.add(modelInterface);
}
ArchitectureComponent modelComponent = new ArchitectureComponent(originalComponent.getName(), originalComponent.getId(), subcomponents,
- providedInterfaces, requiredInterfaces);
+ providedInterfaces, requiredInterfaces, originalComponent.getType());
components.add(modelComponent);
}
return components;
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/UmlElement.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/UmlElement.java
index 41d5c8fc7..dc18e52c5 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/UmlElement.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/UmlElement.java
@@ -9,11 +9,13 @@ abstract class UmlElement {
protected final String id;
protected final String name;
+ private final String type;
UmlElement(PackagedElement element) {
this.element = element;
this.id = element.getId();
this.name = element.getName();
+ this.type = element.getType();
}
public final String getId() {
@@ -23,4 +25,8 @@ public final String getId() {
public final String getName() {
return name;
}
+
+ public final String getType() {
+ return type;
+ }
}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/xmlelements/PackagedElement.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/xmlelements/PackagedElement.java
index 4f791e07d..b679985c5 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/xmlelements/PackagedElement.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/architecture/uml/parser/xmlelements/PackagedElement.java
@@ -56,4 +56,8 @@ public List getInterfaceRealizations() {
public List getUsages() {
return usages;
}
+
+ public String getType() {
+ return type;
+ }
}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/AllLanguagesExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/AllLanguagesExtractor.java
index 2186371cf..4617e2873 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/AllLanguagesExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/AllLanguagesExtractor.java
@@ -7,9 +7,9 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItem;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ProgrammingLanguage;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.code.java.JavaExtractor;
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/CodeExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/CodeExtractor.java
index e24ff567e..e0b2578fb 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/CodeExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/CodeExtractor.java
@@ -13,8 +13,8 @@
import edu.kit.kastel.mcse.ardoco.core.api.models.CodeModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.Extractor;
public abstract class CodeExtractor extends Extractor {
@@ -32,7 +32,7 @@ protected CodeExtractor(CodeItemRepository codeItemRepository, String path) {
public abstract CodeModel extractModel();
@Override
- public ModelType getModelType() {
+ public final ModelType getModelType() {
return CodeModelType.CODE_MODEL;
}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaExtractor.java
index 552083093..90c4b6431 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaExtractor.java
@@ -19,10 +19,8 @@
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.FileASTRequestor;
-import edu.kit.kastel.mcse.ardoco.core.api.models.CodeModelType;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.code.CodeExtractor;
@@ -54,11 +52,6 @@ public synchronized CodeModel extractModel() {
return this.extractedModel;
}
- @Override
- public ModelType getModelType() {
- return CodeModelType.CODE_MODEL;
- }
-
private static SortedMap parseDirectory(Path dir) {
ASTParser parser = getJavaParser();
final String[] sources = getEntries(dir, ".java");
@@ -93,7 +86,7 @@ private static String[] getEntries(Path dir, String suffix) {
.map(Path::toAbsolutePath)
.map(Path::normalize)
.map(Path::toString)
- .toArray(i -> new String[i]);
+ .toArray(String[]::new);
} catch (IOException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaModel.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaModel.java
index f990cf083..d8da9c8a9 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaModel.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/java/JavaModel.java
@@ -28,11 +28,11 @@
import org.eclipse.jdt.core.dom.Type;
import org.eclipse.jdt.core.dom.TypeDeclaration;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ClassUnit;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItem;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModule;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodePackage;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ControlElement;
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellExtractor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellExtractor.java
index 89eb4a487..553dd38bc 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellExtractor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellExtractor.java
@@ -7,8 +7,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.code.CodeExtractor;
public final class ShellExtractor extends CodeExtractor {
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellVisitor.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellVisitor.java
index 61d94fec8..fc12af04a 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellVisitor.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/connectors/generators/code/shell/ShellVisitor.java
@@ -18,10 +18,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItem;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ProgrammingLanguage;
public class ShellVisitor implements FileVisitor {
@@ -71,6 +71,12 @@ public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IO
String extension = FilenameUtils.getExtension(fileName);
String fileNameWithoutExtension = FilenameUtils.removeExtension(fileName);
+ CodeCompilationUnit sourceFile = extractShellFile(path, fileNameWithoutExtension, extension);
+ codeEndpoints.add(sourceFile);
+ return FileVisitResult.CONTINUE;
+ }
+
+ private CodeCompilationUnit extractShellFile(Path path, String fileNameWithoutExtension, String extension) {
List pathElements = new ArrayList<>();
// relativize path
@@ -81,10 +87,7 @@ public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IO
for (int i = 0; i < relativePath.getNameCount() - 1; i++) {
pathElements.add(relativePath.getName(i).toString());
}
- CodeCompilationUnit sourceFile = new CodeCompilationUnit(codeItemRepository, fileNameWithoutExtension, new TreeSet<>(), pathElements, extension,
- ProgrammingLanguage.SHELL);
- codeEndpoints.add(sourceFile);
- return FileVisitResult.CONTINUE;
+ return new CodeCompilationUnit(codeItemRepository, fileNameWithoutExtension, new TreeSet<>(), pathElements, extension, ProgrammingLanguage.SHELL);
}
private static boolean isShellFile(String fileName, String code) {
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ArCoTLModelProviderInformant.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ArCoTLModelProviderInformant.java
index e7455b2d0..36307f22c 100644
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ArCoTLModelProviderInformant.java
+++ b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ArCoTLModelProviderInformant.java
@@ -4,17 +4,16 @@
import java.util.Optional;
import java.util.SortedMap;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.Extractor;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.code.CodeExtractor;
import edu.kit.kastel.mcse.ardoco.core.pipeline.agent.Informant;
/**
- * The model extractor extracts the instances and relations via an connector. The extracted items are stored in a model
+ * The model extractor extracts the instances and relations via a connector. The extracted items are stored in a model
* extraction state.
*/
public final class ArCoTLModelProviderInformant extends Informant {
@@ -29,7 +28,7 @@ private ArCoTLModelProviderInformant() {
}
/**
- * Instantiates a new model provider that uses the provided {@link ModelConnector} to extract information into the {@link DataRepository}.
+ * Instantiates a new model provider to extract information into the {@link DataRepository}.
*
* @param dataRepository the data repository
* @param extractor the model connector
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/LegacyCodeModelInformant.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/LegacyCodeModelInformant.java
deleted file mode 100644
index 7ffc9d22f..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/LegacyCodeModelInformant.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Licensed under MIT 2023. */
-package edu.kit.kastel.mcse.ardoco.core.models.informants;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.SortedMap;
-
-import org.eclipse.collections.api.factory.Lists;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ClassUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeCompilationUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModule;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodePackage;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.InterfaceUnit;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.ProgrammingLanguage;
-import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
-import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelExtractionStateImpl;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelInstanceImpl;
-import edu.kit.kastel.mcse.ardoco.core.pipeline.agent.Informant;
-
-public class LegacyCodeModelInformant extends Informant {
- public LegacyCodeModelInformant(DataRepository dataRepository) {
- super(LegacyCodeModelInformant.class.getSimpleName(), dataRepository);
- }
-
- @Override
- protected void delegateApplyConfigurationToInternalObjects(SortedMap additionalConfiguration) {
- // empty
- }
-
- @Override
- public void run() {
- var models = DataRepositoryHelper.getModelStatesData(getDataRepository());
- var codeModel = findCodeModel(models);
- if (codeModel == null)
- return;
- List instances = new ArrayList<>();
- fillPackages(codeModel.getAllPackages(), instances);
- fillCompilationUnits(codeModel.getEndpoints(), instances);
- models.addModelExtractionState(codeModel.getId(), new ModelExtractionStateImpl(codeModel.getId(), Metamodel.CODE, Lists.immutable.withAll(instances)));
- }
-
- private void fillPackages(Collection extends CodePackage> packages, List instances) {
- for (var modelElement : packages) {
- String path = modelElement.getName();
- CodeModule parent = modelElement.getParent();
- while (parent != null) {
- path = parent.getName() + "/" + path;
- parent = parent.getParent();
- }
- // Ensure that package is handled as directory
- path += "/";
- instances.add(new ModelInstanceImpl(modelElement.getName(), "Package", path));
- }
- }
-
- private void fillCompilationUnits(Collection extends CodeCompilationUnit> units, List instances) {
- for (var unit : units) {
- String type = findType(unit);
- instances.add(new ModelInstanceImpl(unit.getName(), type, unit.getPath()));
- }
-
- }
-
- private String findType(CodeCompilationUnit unit) {
- // Assumption mostly one class per unit
- var content = unit.getContent().stream().filter(it -> unit.getName().contains(it.getName())).findFirst().orElse(null);
- if (content instanceof ClassUnit) {
- return "Class";
- }
- if (content instanceof InterfaceUnit) {
- return "Interface";
- }
- if (unit.getPath().endsWith("package-info.java")) {
- return "PackageInfo";
- }
- if (unit.getPath().endsWith(".java")) {
- // Default to Class
- return "Class";
- }
- if (unit.getLanguage() == ProgrammingLanguage.SHELL) {
- return "ShellScript";
- }
- throw new IllegalStateException("Unknown type of CodeCompilationUnit");
- }
-
- private CodeModel findCodeModel(ModelStates models) {
- for (var modelId : models.modelIds()) {
- var model = models.getModel(modelId);
- if (model instanceof CodeModel codeModel)
- return codeModel;
- }
- return null;
- }
-}
diff --git a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ModelProviderInformant.java b/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ModelProviderInformant.java
deleted file mode 100644
index 79e6c3744..000000000
--- a/stages/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/core/models/informants/ModelProviderInformant.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Licensed under MIT 2021-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models.informants;
-
-import java.util.SortedMap;
-
-import org.eclipse.collections.api.list.ImmutableList;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
-import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
-import edu.kit.kastel.mcse.ardoco.core.models.ModelExtractionStateImpl;
-import edu.kit.kastel.mcse.ardoco.core.pipeline.agent.Informant;
-
-/**
- * The model extractor extracts the instances and relations via an connector. The extracted items are stored in a model
- * extraction state.
- */
-public final class ModelProviderInformant extends Informant {
- private static final String MODEL_STATES_DATA = "ModelStatesData";
- private ModelConnector modelConnector;
- private ModelExtractionStateImpl modelState = null;
-
- // Needed for Configuration Generation
- @SuppressWarnings("unused")
- private ModelProviderInformant() {
- super(null, null);
- this.modelConnector = null;
- }
-
- /**
- * Instantiates a new model provider that uses the provided {@link ModelConnector} to extract information into the {@link DataRepository}.
- *
- * @param dataRepository the data repository
- * @param modelConnector the model connector
- */
- public ModelProviderInformant(DataRepository dataRepository, ModelConnector modelConnector) {
- super("ModelProvider " + modelConnector.getModelId(), dataRepository);
- this.modelConnector = modelConnector;
- }
-
- @Override
- public void run() {
- if (modelConnector == null) {
- return;
- }
- ImmutableList instances = modelConnector.getInstances();
- modelState = new ModelExtractionStateImpl(modelConnector.getModelId(), modelConnector.getMetamodel(), instances);
-
- addModelStateToDataRepository();
- }
-
- private void addModelStateToDataRepository() {
- var dataRepository = getDataRepository();
- var optionalData = dataRepository.getData(MODEL_STATES_DATA, ModelStates.class);
- ModelStates modelStates;
- modelStates = optionalData.orElseGet(ModelStates::new);
- modelStates.addModelExtractionState(modelConnector.getModelId(), modelState);
- dataRepository.addData(MODEL_STATES_DATA, modelStates);
- }
-
- @Override
- protected void delegateApplyConfigurationToInternalObjects(SortedMap map) {
- // empty
- }
-}
diff --git a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/ArchitectureExtractorTest.java b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/ArchitectureExtractorTest.java
index 09a42c532..6b77747e3 100644
--- a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/ArchitectureExtractorTest.java
+++ b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/ArchitectureExtractorTest.java
@@ -10,10 +10,10 @@
import org.slf4j.LoggerFactory;
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureInterface;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.architecture.Deterministic;
@Deterministic
diff --git a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/java/JavaExtractorTest.java b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/java/JavaExtractorTest.java
index e588cb629..ad9881ccc 100644
--- a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/java/JavaExtractorTest.java
+++ b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/java/JavaExtractorTest.java
@@ -7,8 +7,8 @@
import org.slf4j.LoggerFactory;
import edu.kit.kastel.mcse.ardoco.core.api.models.Entity;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeItemRepository;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.code.CodeModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.code.java.JavaExtractor;
class JavaExtractorTest {
diff --git a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/pcm/PcmExtractorTest.java b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/pcm/PcmExtractorTest.java
index 9da374603..8a66e4004 100644
--- a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/pcm/PcmExtractorTest.java
+++ b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/pcm/PcmExtractorTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.Test;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.PcmExtractor;
import edu.kit.kastel.mcse.ardoco.core.models.generators.ArchitectureExtractorTest;
diff --git a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/uml/UmlExtractorTest.java b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/uml/UmlExtractorTest.java
index e7acc3d81..a919e1c4e 100644
--- a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/uml/UmlExtractorTest.java
+++ b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/generators/uml/UmlExtractorTest.java
@@ -3,7 +3,7 @@
import org.junit.jupiter.api.Test;
-import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.uml.UmlExtractor;
import edu.kit.kastel.mcse.ardoco.core.models.generators.ArchitectureExtractorTest;
diff --git a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/pcm/PcmXmlModelConnectorTest.java b/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/pcm/PcmXmlModelConnectorTest.java
deleted file mode 100644
index 656dc50d8..000000000
--- a/stages/model-provider/src/test/java/edu/kit/kastel/mcse/ardoco/core/models/pcm/PcmXmlModelConnectorTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Licensed under MIT 2022-2023. */
-package edu.kit.kastel.mcse.ardoco.core.models.pcm;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Objects;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.collections.api.list.ImmutableList;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.parser.PcmModel;
-
-class PcmXmlModelConnectorTest {
- private static final Logger logger = LoggerFactory.getLogger(PcmXmlModelConnectorTest.class);
-
- private static PcmXmlModelConnector loadModel(String modelFile) throws ReflectiveOperationException, IOException {
- return new PcmXmlModelConnector(new File(modelFile));
- }
-
- @Test
- @DisplayName("Get all instances from MediaStore")
- void getInstancesFromMediaStoreTest() throws ReflectiveOperationException, IOException {
- var connectorMediaStore = loadModel("src/test/resources/mediastore.repository");
- ImmutableList instances = connectorMediaStore.getInstances();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Listing MediaStore instances:");
- for (ModelInstance instance : instances) {
- String info = instance.toString();
- logger.debug(info);
- logger.debug(String.valueOf(instance.getNameParts()));
- }
- logger.debug("\n");
- }
-
- int expectedNumberOfInstances = 14;
- Assertions.assertEquals(expectedNumberOfInstances, instances.size(), "The number of expected and found instances differs!");
-
- List expectedInstancesNames = List.of("FileStorage", "Reencoding", "DB", "MediaAccess", "Facade", "TagWatermarking", "UserDBAdapter",
- "AudioWatermarking", "UserManagement", "ParallelWatermarking", "MediaManagement", "Cache", "Packaging", "DownloadLoadBalancer");
-
- for (ModelInstance instance : instances) {
- String name = instance.getFullName();
- Assertions.assertTrue(expectedInstancesNames.contains(name), "Found instance does not match one of the expected instances!");
- }
- }
-
- @Test
- @DisplayName("Get all instances from TeaStore")
- void getInstancesFromTeaStoreTest() throws ReflectiveOperationException, IOException, ParserConfigurationException, SAXException {
- var connectorTeaStore = loadModel("src/test/resources/teastore.repository");
- ImmutableList instances = connectorTeaStore.getInstances();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Listing TeaStore instances:");
- for (ModelInstance instance : instances) {
- String info = instance.toString();
- logger.debug(info);
- logger.debug(String.valueOf(instance.getNameParts()));
- }
- logger.debug("\n");
- }
-
- int expectedNumberOfInstances = 11;
- Assertions.assertEquals(expectedNumberOfInstances, instances.size(), "The number of expected and found instances differs!");
-
- }
-
- @Test
- @DisplayName("Get all instances from TEAMMATES")
- void getInstancesFromTeammatesTest() throws ReflectiveOperationException, IOException, ParserConfigurationException, SAXException {
- var connectorTeaStore = loadModel("src/test/resources/teammates.repository");
- ImmutableList instances = connectorTeaStore.getInstances();
-
- Assertions.assertFalse(instances.isEmpty(), "There need to be some instances contained in the model.");
-
- if (logger.isDebugEnabled()) {
- logger.debug("Listing TEAMMATES instances:");
- for (ModelInstance instance : instances) {
- String info = instance.toString();
- logger.debug(info);
- logger.debug(String.valueOf(instance.getNameParts()));
- }
- logger.debug("\n");
- }
-
- }
-
- @Test
- @DisplayName("Simply test loading of MEDIASTORE")
- void testLoadMediaStore() throws Exception {
- InputStream is = Objects.requireNonNull(PcmXmlModelConnectorTest.class.getResourceAsStream("/mediastore.repository"));
- PcmXmlModelConnector connector = new PcmXmlModelConnector(is);
- is.close();
-
- Assertions.assertEquals("_7zbcYHDhEeSqnN80MQ2uGw", connector.getModelId());
- Assertions.assertEquals(Metamodel.ARCHITECTURE, connector.getMetamodel());
- Assertions.assertEquals(14, connector.getInstances().size());
- Assertions.assertTrue(connector.getInstances().allSatisfy(i -> i.getFullType().equals("BasicComponent")));
- }
-
- @Test
- void testCompositeComponent() throws Exception {
- InputStream is = Objects.requireNonNull(PcmXmlModelConnectorTest.class.getResourceAsStream("/teammates-with-composite.repository"));
- PcmModel pcmModel = new PcmModel(is);
- is.close();
- var component = pcmModel.getRepository().getComponents().stream().filter(it -> it.getEntityName().equals("TestComponent1")).findFirst().orElseThrow();
- Assertions.assertEquals("_1lMqsKESEeu-mYqkDskRow", component.getInnerComponents().get(0).getId());
- }
-
-}
diff --git a/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/CompoundRecommendationInformant.java b/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/CompoundRecommendationInformant.java
index a52e2586c..f5f611e85 100644
--- a/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/CompoundRecommendationInformant.java
+++ b/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/CompoundRecommendationInformant.java
@@ -9,7 +9,7 @@
import org.eclipse.collections.api.list.MutableList;
import org.eclipse.collections.api.set.sorted.MutableSortedSet;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
import edu.kit.kastel.mcse.ardoco.core.api.text.Word;
import edu.kit.kastel.mcse.ardoco.core.api.textextraction.MappingKind;
@@ -38,7 +38,7 @@ public void run() {
var textState = DataRepositoryHelper.getTextState(dataRepository);
var recommendationStates = DataRepositoryHelper.getRecommendationStates(dataRepository);
- for (var model : modelStatesData.extractionModelIds()) {
+ for (var model : modelStatesData.modelIds()) {
var modelState = modelStatesData.getModelExtractionState(model);
var recommendationState = recommendationStates.getRecommendationState(modelState.getMetamodel());
@@ -53,7 +53,7 @@ public void run() {
* text-extraction)
*/
private void createRecommendationInstancesFromCompoundNounMappings(TextState textState, RecommendationState recommendationState,
- ModelExtractionState modelState) {
+ LegacyModelExtractionState modelState) {
for (var nounMapping : textState.getNounMappings()) {
if (nounMapping.isCompound()) {
var typeMappings = getRelatedTypeMappings(nounMapping, textState);
@@ -66,7 +66,8 @@ private void createRecommendationInstancesFromCompoundNounMappings(TextState tex
* Find additional compounds and create RecommendedInstances for them. Additional compounds are when a word in a
* NounMapping has another word in front or afterwards and that compounds is a TypeMapping
*/
- private void findMoreCompoundsForRecommendationInstances(TextState textState, RecommendationState recommendationState, ModelExtractionState modelState) {
+ private void findMoreCompoundsForRecommendationInstances(TextState textState, RecommendationState recommendationState,
+ LegacyModelExtractionState modelState) {
for (var nounMapping : textState.getNounMappings()) {
for (var word : nounMapping.getWords()) {
var prevWord = word.getPreWord();
@@ -98,7 +99,7 @@ private void findSpecialNamedEntitiesInNounMappings(ImmutableList n
}
private void addRecommendedInstance(NounMapping nounMapping, ImmutableList typeMappings, RecommendationState recommendationState,
- ModelExtractionState modelState) {
+ LegacyModelExtractionState modelState) {
var nounMappings = Lists.immutable.of(nounMapping);
var types = getSimilarModelTypes(typeMappings, modelState);
if (types.isEmpty()) {
@@ -110,7 +111,7 @@ private void addRecommendedInstance(NounMapping nounMapping, ImmutableList getSimilarModelTypes(ImmutableList typeMappings, ModelExtractionState modelState) {
+ private ImmutableList getSimilarModelTypes(ImmutableList typeMappings, LegacyModelExtractionState modelState) {
MutableSortedSet similarModelTypes = SortedSets.mutable.empty();
var typeIdentifiers = CommonUtilities.getTypeIdentifiers(modelState);
for (var typeMapping : typeMappings) {
@@ -137,7 +138,7 @@ private ImmutableList getRelatedTypeMappings(NounMapping nounMappin
}
private void addRecommendedInstanceIfCompoundWithOtherWord(NounMapping nounMapping, Word word, TextState textState, RecommendationState recommendationState,
- ModelExtractionState modelState) {
+ LegacyModelExtractionState modelState) {
if (word == null) {
return;
}
diff --git a/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/NameTypeInformant.java b/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/NameTypeInformant.java
index 992842334..84d487d9f 100644
--- a/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/NameTypeInformant.java
+++ b/stages/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/core/recommendationgenerator/informants/NameTypeInformant.java
@@ -3,7 +3,7 @@
import java.util.SortedMap;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationState;
import edu.kit.kastel.mcse.ardoco.core.api.recommendationgenerator.RecommendationStates;
@@ -47,7 +47,7 @@ public void run() {
}
private void exec(TextState textState, ModelStates modelStates, RecommendationStates recommendationStates, Word word) {
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
var recommendationState = recommendationStates.getRecommendationState(modelState.getMetamodel());
@@ -65,7 +65,7 @@ private void exec(TextState textState, ModelStates modelStates, RecommendationSt
* @param textExtractionState text extraction state
* @param word the current word
*/
- private void addRecommendedInstanceIfNameBeforeType(TextState textExtractionState, Word word, ModelExtractionState modelState,
+ private void addRecommendedInstanceIfNameBeforeType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
@@ -90,7 +90,7 @@ private void addRecommendedInstanceIfNameBeforeType(TextState textExtractionStat
* @param textExtractionState text extraction state
* @param word the current word
*/
- private void addRecommendedInstanceIfNameAfterType(TextState textExtractionState, Word word, ModelExtractionState modelState,
+ private void addRecommendedInstanceIfNameAfterType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
@@ -114,7 +114,7 @@ private void addRecommendedInstanceIfNameAfterType(TextState textExtractionState
* @param textExtractionState text extraction state
* @param word the current word
*/
- private void addRecommendedInstanceIfNameOrTypeBeforeType(TextState textExtractionState, Word word, ModelExtractionState modelState,
+ private void addRecommendedInstanceIfNameOrTypeBeforeType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
@@ -139,7 +139,7 @@ private void addRecommendedInstanceIfNameOrTypeBeforeType(TextState textExtracti
* @param textExtractionState text extraction state
* @param word the current word
*/
- private void addRecommendedInstanceIfNameOrTypeAfterType(TextState textExtractionState, Word word, ModelExtractionState modelState,
+ private void addRecommendedInstanceIfNameOrTypeAfterType(TextState textExtractionState, Word word, LegacyModelExtractionState modelState,
RecommendationState recommendationState) {
if (textExtractionState == null || word == null) {
return;
diff --git a/stages/text-extraction/src/main/java/edu/kit/kastel/mcse/ardoco/core/textextraction/DefaultTextStateStrategy.java b/stages/text-extraction/src/main/java/edu/kit/kastel/mcse/ardoco/core/textextraction/DefaultTextStateStrategy.java
index 739b62c52..123eb27b8 100644
--- a/stages/text-extraction/src/main/java/edu/kit/kastel/mcse/ardoco/core/textextraction/DefaultTextStateStrategy.java
+++ b/stages/text-extraction/src/main/java/edu/kit/kastel/mcse/ardoco/core/textextraction/DefaultTextStateStrategy.java
@@ -27,7 +27,7 @@ public NounMapping mergeNounMappings(NounMapping nounMapping, MutableList nm.getWords().containsAllIterable(finalNounMappingToMerge.getWords()));
- if (fittingNounMappings.size() == 0) {
+ if (fittingNounMappings.isEmpty()) {
continue;
} else if (fittingNounMappings.size() == 1) {
nounMappingToMerge = fittingNounMappings.get(0);
@@ -46,7 +46,7 @@ public NounMapping mergeNounMappings(NounMapping nounMapping, MutableList nm.getWords().toSet().equals(mergedWords));
+ var mergedNounMapping = textState.getNounMappings().select(nm -> nm.getWords().toSortedSet().equals(mergedWords));
assert (mergedNounMapping.size() == 1);
diff --git a/stages/text-extraction/src/test/java/edu/kit/kastel/mcse/ardoco/core/textextraction/agents/MappingCombinerTest.java b/stages/text-extraction/src/test/java/edu/kit/kastel/mcse/ardoco/core/textextraction/agents/MappingCombinerTest.java
index 3d32c272b..e90d821a0 100644
--- a/stages/text-extraction/src/test/java/edu/kit/kastel/mcse/ardoco/core/textextraction/agents/MappingCombinerTest.java
+++ b/stages/text-extraction/src/test/java/edu/kit/kastel/mcse/ardoco/core/textextraction/agents/MappingCombinerTest.java
@@ -6,6 +6,7 @@
import org.eclipse.collections.api.list.MutableList;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@@ -24,6 +25,7 @@
import edu.kit.kastel.mcse.ardoco.core.textextraction.PhraseConcerningTextStateStrategy;
import edu.kit.kastel.mcse.ardoco.core.textextraction.TextStateImpl;
+@Disabled("Java 21 vs. Mockito")
class MappingCombinerTest implements Claimant {
// Has to be aligned to MappingCombinerInformant
diff --git a/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/config/ConfigManager.java b/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/config/ConfigManager.java
index 8bcf043bb..1ca545ded 100644
--- a/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/config/ConfigManager.java
+++ b/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/config/ConfigManager.java
@@ -11,9 +11,9 @@
/**
* This Singleton manages access to the config file.
*/
-public enum ConfigManager {
+public final class ConfigManager {
- INSTANCE;
+ public static ConfigManager INSTANCE = new ConfigManager();
private final Logger logger = LoggerFactory.getLogger(ConfigManager.class);
@@ -26,7 +26,7 @@ public enum ConfigManager {
private ConfigManager() {
properties = new Properties();
- try (InputStream fileInputStream = ConfigManager.class.getClassLoader().getResourceAsStream(FILE_PATH);) {
+ try (InputStream fileInputStream = ConfigManager.class.getClassLoader().getResourceAsStream(FILE_PATH)) {
properties.load(fileInputStream);
} catch (IOException e) {
logger.warn("Could not load config file. ", e);
diff --git a/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/textprocessor/TextProcessorService.java b/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/textprocessor/TextProcessorService.java
index f1c6412ef..0dc902ebe 100644
--- a/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/textprocessor/TextProcessorService.java
+++ b/stages/text-preprocessing/src/main/java/edu/kit/kastel/mcse/ardoco/core/text/providers/informants/corenlp/textprocessor/TextProcessorService.java
@@ -5,8 +5,6 @@
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import org.jetbrains.annotations.NotNull;
-
import edu.kit.kastel.mcse.ardoco.core.api.text.Text;
import edu.kit.kastel.mcse.ardoco.core.text.providers.informants.corenlp.config.ConfigManager;
import edu.kit.kastel.mcse.ardoco.core.textproviderjson.converter.DtoToObjectConverter;
@@ -50,7 +48,6 @@ private String sendAuthenticatedPostRequest(String requestUrl, String encodedTex
return httpCommunicator.sendAuthenticatedPostRequest(requestUrl, body);
}
- @NotNull
private static String getRequestBodyString(String encodedText) {
return "{\"text\": \"" + encodedText + "\"}";
}
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/TestUtil.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/TestUtil.java
index 77f035686..9a6691d53 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/TestUtil.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/TestUtil.java
@@ -128,8 +128,9 @@ public static int calculateTrueNegativesForInconsistencies(ArDoCoResult arDoCoRe
* @param name Name to show in the output
* @param results the results
*/
- public static void logResults(Logger logger, String name, EvaluationResults results) {
- logger.info(createResultLogString(name, results));
+ public static void logResults(Logger logger, String name, EvaluationResults> results) {
+ if (logger.isInfoEnabled())
+ logger.info(createResultLogString(name, results));
}
/**
@@ -140,7 +141,7 @@ public static void logResults(Logger logger, String name, EvaluationResults resu
* @param results the results
* @return a String containing the name and the results (precision, recall, F1) line by line
*/
- public static String createResultLogString(String name, EvaluationResults results) {
+ public static String createResultLogString(String name, EvaluationResults> results) {
return String.format(Locale.ENGLISH, "%n%s:%n%s", name, results);
}
@@ -152,7 +153,7 @@ public static String createResultLogString(String name, EvaluationResults result
* @param name Name to show in the output
* @param results the results
*/
- public static void logExplicitResults(Logger logger, String name, EvaluationResults results) {
+ public static void logExplicitResults(Logger logger, String name, EvaluationResults> results) {
var tp = results.truePositives().size();
var fp = results.falsePositives().size();
var fn = results.falseNegatives().size();
@@ -171,12 +172,12 @@ public static void logExplicitResults(Logger logger, String name, EvaluationResu
* @param results the results
* @param expectedResults the expected results
*/
- public static void logResultsWithExpected(Logger logger, String name, EvaluationResults results, ExpectedResults expectedResults) {
+ public static void logResultsWithExpected(Logger logger, String name, EvaluationResults> results, ExpectedResults expectedResults) {
var infoString = String.format(Locale.ENGLISH, "%n%s:%n%s", name, results.getResultStringWithExpected(expectedResults));
logger.info(infoString);
}
- public static void logExtendedResultsWithExpected(Logger logger, Object testClass, String name, EvaluationResults results,
+ public static void logExtendedResultsWithExpected(Logger logger, Object testClass, String name, EvaluationResults> results,
ExpectedResults expectedResults) {
var infoString = String.format(Locale.ENGLISH, "%n%s (%s):%n%s", name, testClass.getClass().getSimpleName(), results
.getExtendedResultStringWithExpected(expectedResults));
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/ConfigurationTestBase.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/ConfigurationTestBase.java
index e617c8829..4b7174eeb 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/ConfigurationTestBase.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/ConfigurationTestBase.java
@@ -25,6 +25,8 @@
@SuppressWarnings({ "java:S106", "java:S3011" })
public abstract class ConfigurationTestBase {
+ private static final String ARDOCO = "edu.kit.kastel.mcse.ardoco";
+
protected abstract void assertFalse(boolean result, String message);
protected abstract void fail(String message);
@@ -37,10 +39,10 @@ public abstract class ConfigurationTestBase {
*/
protected void showCurrentConfiguration() throws Exception {
Map configs = new TreeMap<>();
- var reflectAccess = new Reflections("edu.kit.kastel.mcse.ardoco");
+ var reflectAccess = new Reflections(ARDOCO);
var classesThatMayBeConfigured = reflectAccess.getSubTypesOf(AbstractConfigurable.class)
.stream()
- .filter(c -> c.getPackageName().startsWith("edu.kit.kastel.mcse.ardoco"))
+ .filter(c -> c.getPackageName().startsWith(ARDOCO))
.filter(c -> !Modifier.isAbstract(c.getModifiers()))
.filter(c -> !c.getPackageName().contains("tests"))
.toList();
@@ -58,11 +60,11 @@ protected void showCurrentConfiguration() throws Exception {
System.out.println("-".repeat(50));
}
- protected void testValidityOfConfigurableFields() throws Exception {
- var reflectAccess = new Reflections("edu.kit.kastel.mcse.ardoco");
+ protected void testValidityOfConfigurableFields() {
+ var reflectAccess = new Reflections(ARDOCO);
var classesThatMayBeConfigured = reflectAccess.getSubTypesOf(AbstractConfigurable.class)
.stream()
- .filter(c -> c.getPackageName().startsWith("edu.kit.kastel.mcse.ardoco"))
+ .filter(c -> c.getPackageName().startsWith(ARDOCO))
.filter(c -> !Modifier.isAbstract(c.getModifiers()))
.filter(c -> !c.getPackageName().contains("tests"))
.toList();
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/EvaluationMetrics.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/EvaluationMetrics.java
index f0ae1f21c..2aa8c85b6 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/EvaluationMetrics.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/EvaluationMetrics.java
@@ -4,12 +4,7 @@
import java.math.BigDecimal;
import java.math.MathContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class EvaluationMetrics {
- private static Logger logger = LoggerFactory.getLogger(EvaluationMetrics.class);
-
private EvaluationMetrics() throws IllegalAccessException {
throw new IllegalAccessException();
}
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/GoldStandard.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/GoldStandard.java
index 168518e07..b07c25006 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/GoldStandard.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/GoldStandard.java
@@ -2,7 +2,7 @@
package edu.kit.kastel.mcse.ardoco.core.tests.eval;
import java.io.File;
-import java.io.FileNotFoundException;
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
@@ -12,25 +12,25 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelElement;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
public class GoldStandard {
private Logger logger = LoggerFactory.getLogger(GoldStandard.class);
private File goldStandard;
- private ModelConnector model;
+ private ArchitectureModel model;
- private MutableList> sentence2instance = Lists.mutable.empty();
+ private MutableList> sentence2instance = Lists.mutable.empty();
- public GoldStandard(File goldStandard, ModelConnector model) {
+ public GoldStandard(File goldStandard, ArchitectureModel model) {
this.goldStandard = goldStandard;
this.model = model;
load();
}
private void load() {
- try (Scanner scan = new Scanner(goldStandard, StandardCharsets.UTF_8.name())) {
+ try (Scanner scan = new Scanner(goldStandard, StandardCharsets.UTF_8)) {
while (scan.hasNextLine()) {
String line = scan.nextLine();
if (line == null || line.isBlank() || line.startsWith("modelElement") || line.contains("modelElementID")) {
@@ -39,7 +39,7 @@ private void load() {
}
String[] idXline = line.strip().split(",", -1);
- ModelInstance instance = model.getInstances().select(i -> i.getUid().equals(idXline[0])).getFirst();
+ ModelElement instance = Lists.immutable.withAll(model.getContent()).select(i -> i.getId().equals(idXline[0])).getFirst();
if (instance == null) {
System.err.println("No instance found for id \"" + idXline[0] + "\"");
continue;
@@ -50,21 +50,21 @@ private void load() {
}
sentence2instance.get(sentence).add(instance);
}
- } catch (FileNotFoundException e) {
+ } catch (IOException e) {
logger.warn(e.getMessage(), e.getCause());
}
}
- public ImmutableList getModelInstances(int sentenceNo) {
+ public ImmutableList getModelInstances(int sentenceNo) {
// Index starts at 1
return sentence2instance.get(sentenceNo).toImmutable();
}
- public ImmutableList getSentencesWithElement(ModelInstance elem) {
+ public ImmutableList getSentencesWithElement(ModelElement elem) {
MutableList sentences = Lists.mutable.empty();
for (int i = 0; i < sentence2instance.size(); i++) {
var instances = sentence2instance.get(i);
- if (instances.anySatisfy(e -> e.getUid().equals(elem.getUid()))) {
+ if (instances.anySatisfy(e -> e.getId().equals(elem.getId()))) {
sentences.add(i);
}
}
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/Project.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/Project.java
index 916465e82..3a5d2ac68 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/Project.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/Project.java
@@ -16,7 +16,7 @@
import org.slf4j.LoggerFactory;
import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
import edu.kit.kastel.mcse.ardoco.core.execution.ConfigurationHelper;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.results.ExpectedResults;
@@ -221,11 +221,11 @@ public ImmutableList getTlrGoldStandard() {
/**
* Returns the {@link GoldStandard} for this project for the given model connector.
*
- * @param pcmModel the model connector (pcm)
+ * @param architectureModel the model
* @return the {@link GoldStandard} for this project
*/
- public GoldStandard getTlrGoldStandard(ModelConnector pcmModel) {
- return new GoldStandard(getTlrGoldStandardFile(), pcmModel);
+ public GoldStandard getTlrGoldStandard(ArchitectureModel architectureModel) {
+ return new GoldStandard(getTlrGoldStandardFile(), architectureModel);
}
public MutableList getMissingTextForModelElementGoldStandard() {
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/helper/CombineGoldStandards.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/helper/CombineGoldStandards.java
index f15d3fc13..fd12412c8 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/helper/CombineGoldStandards.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/helper/CombineGoldStandards.java
@@ -63,6 +63,8 @@ private static void merge(File text1file, File gs1file, File text2file, File gs2
}
private static List read(File file) throws FileNotFoundException {
- return Arrays.stream(new Scanner(file).useDelimiter("\\A").next().strip().split("\\n")).map(String::strip).toList();
+ try (var scan = new Scanner(file).useDelimiter("\\A")) {
+ return Arrays.stream(scan.next().strip().split("\\n")).map(String::strip).toList();
+ }
}
}
diff --git a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/results/EvaluationResults.java b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/results/EvaluationResults.java
index c4aaab170..e6ab83214 100644
--- a/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/results/EvaluationResults.java
+++ b/tests/tests-base/src/main/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/results/EvaluationResults.java
@@ -90,7 +90,7 @@ public static EvaluationResults createEvaluationResults(ResultMatrix m
phiOverPhiMax = EvaluationMetrics.calculatePhiOverPhiMax(nrTruePos, nrFalsePos, nrFalseNeg, nrTrueNeg);
}
- return new EvaluationResults(precision, recall, f1, matrix.truePositives(), matrix.trueNegatives(), matrix.falseNegatives(), matrix.falsePositives(),
+ return new EvaluationResults<>(precision, recall, f1, matrix.truePositives(), matrix.trueNegatives(), matrix.falseNegatives(), matrix.falsePositives(),
accuracy, phiCoefficient, specificity, phiCoefficientMax, phiOverPhiMax);
}
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
index 90d0369c1..0f2207af9 100644
--- a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
+++ b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
@@ -37,7 +37,7 @@ public void showCurrentConfiguration() throws Exception {
@Override
@Test
- public void testValidityOfConfigurableFields() throws Exception {
+ public void testValidityOfConfigurableFields() {
super.testValidityOfConfigurableFields();
}
}
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/baseline/InconsistencyBaselineInformant.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/baseline/InconsistencyBaselineInformant.java
index 16ff6f26d..ea611b098 100644
--- a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/baseline/InconsistencyBaselineInformant.java
+++ b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/baseline/InconsistencyBaselineInformant.java
@@ -36,7 +36,7 @@ public void run() {
var connectionStates = DataRepositoryHelper.getConnectionStates(dataRepository);
var sentences = Sets.mutable.fromStream(text.getSentences().stream().map(Sentence::getSentenceNumber));
- for (var model : modelStates.extractionModelIds()) {
+ for (var model : modelStates.modelIds()) {
var modelState = modelStates.getModelExtractionState(model);
Metamodel metamodel = modelState.getMetamodel();
var traceLinks = connectionStates.getConnectionState(metamodel).getTraceLinks();
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/InconsistencyDetectionEvaluationIT.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/InconsistencyDetectionEvaluationIT.java
index 1e5a2e29c..859e6781d 100644
--- a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/InconsistencyDetectionEvaluationIT.java
+++ b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/InconsistencyDetectionEvaluationIT.java
@@ -32,11 +32,13 @@
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.InconsistentSentence;
import edu.kit.kastel.mcse.ardoco.core.api.inconsistency.ModelInconsistency;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelElement;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureItem;
import edu.kit.kastel.mcse.ardoco.core.api.output.ArDoCoResult;
import edu.kit.kastel.mcse.ardoco.core.common.util.FilePrinter;
import edu.kit.kastel.mcse.ardoco.core.inconsistency.types.MissingModelInstanceInconsistency;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
+import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.PcmExtractor;
import edu.kit.kastel.mcse.ardoco.core.tests.TestUtil;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.Project;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.results.EvaluationResults;
@@ -103,7 +105,7 @@ void missingModelElementInconsistencyHistoricIT(Project project) {
private void runMissingModelElementInconsistencyEval(Project project) {
logger.info("Start evaluation of MME-inconsistency for {}", project.name());
- Map runs = produceRuns(project);
+ Map runs = produceRuns(project);
var results = calculateEvaluationResults(project, runs);
@@ -147,7 +149,7 @@ private void runMissingModelElementInconsistencyBaselineEval(Project project) {
ranBaseline = true;
HoldBackRunResultsProducer holdBackRunResultsProducer = new HoldBackRunResultsProducer();
- Map runs = holdBackRunResultsProducer.produceHoldBackRunResults(project, true);
+ Map runs = holdBackRunResultsProducer.produceHoldBackRunResults(project, true);
Assertions.assertTrue(runs != null && runs.size() > 0);
@@ -202,10 +204,10 @@ private void runMissingTextInconsistencyEval(Project project) {
writeOutResults(project, results);
}
- private static Map produceRuns(Project project) {
+ private static Map produceRuns(Project project) {
HoldBackRunResultsProducer holdBackRunResultsProducer = new HoldBackRunResultsProducer();
- Map runs = holdBackRunResultsProducer.produceHoldBackRunResults(project, false);
+ Map runs = holdBackRunResultsProducer.produceHoldBackRunResults(project, false);
ArDoCoResult baseArDoCoResult = runs.get(null);
saveOutput(project, baseArDoCoResult);
@@ -260,12 +262,12 @@ void overAllResultsIT() {
}
}
- private MutableList> calculateEvaluationResults(Project project, Map runs) {
+ private MutableList> calculateEvaluationResults(Project project, Map runs) {
MutableList> results = Lists.mutable.empty();
for (var run : runs.entrySet()) {
- ModelInstance modelInstance = run.getKey();
+ ModelElement modelInstance = run.getKey();
ArDoCoResult arDoCoResult = run.getValue();
var runEvalResults = evaluateRun(project, modelInstance, arDoCoResult);
if (runEvalResults != null) {
@@ -279,7 +281,7 @@ private MutableList> calculateEvaluationResults(Projec
return results;
}
- private EvaluationResults evaluateRun(Project project, ModelInstance removedElement, ArDoCoResult arDoCoResult) {
+ private EvaluationResults evaluateRun(Project project, ModelElement removedElement, ArDoCoResult arDoCoResult) {
var modelId = arDoCoResult.getModelIds().get(0);
ImmutableList inconsistencies = arDoCoResult.getInconsistenciesOfTypeForModel(modelId,
@@ -301,10 +303,10 @@ private static EvaluationResults calculateEvaluationResults(ArDoCoResult
return TestUtil.compareInconsistencies(arDoCoResult, actualSentences, expectedLines);
}
- private static PcmXmlModelConnector getPcmModel(Project project) {
+ private static ArchitectureModel getPcmModel(Project project) {
try {
- return new PcmXmlModelConnector(project.getModelFile());
- } catch (IOException e) {
+ return new PcmExtractor(project.getModelFile().getAbsolutePath()).extractModel();
+ } catch (Exception e) {
throw new RuntimeException(e);
}
}
@@ -330,7 +332,7 @@ private void checkResults(EvaluationResults results, ExpectedResults exp
.phiCoefficient() + " is below the expected minimum value " + expectedResults.phiCoefficient()));
}
- private void writeOutResults(Project project, List> results, Map runs) {
+ private void writeOutResults(Project project, List> results, Map runs) {
var outputs = createOutput(project, results, runs);
var outputBuilder = outputs.getOne();
var detailedOutputBuilder = outputs.getTwo();
@@ -392,7 +394,7 @@ private static void saveOutput(Project project, ArDoCoResult arDoCoResult) {
}
private static Pair createOutput(Project project, List> results,
- Map runs) {
+ Map runs) {
StringBuilder outputBuilder = createStringBuilderWithHeader(project);
var resultCalculatorStringBuilderPair = inspectResults(results, runs, outputBuilder);
var resultCalculator = resultCalculatorStringBuilderPair.getOne();
@@ -461,20 +463,20 @@ private static StringBuilder createStringBuilderWithHeader(Project project) {
}
private static Pair>, StringBuilder> inspectResults(List> results,
- Map runs, StringBuilder outputBuilder) {
+ Map runs, StringBuilder outputBuilder) {
var detailedOutputBuilder = new StringBuilder();
MutableList> resultsWithWeight = Lists.mutable.empty();
int counter = 0;
for (var run : runs.entrySet()) {
ArDoCoResult arDoCoResult = run.getValue();
- ModelInstance instance = run.getKey();
+ ArchitectureItem instance = (ArchitectureItem) run.getKey();
if (instance == null) {
inspectBaseCase(outputBuilder, arDoCoResult);
} else {
outputBuilder.append("###").append(LINE_SEPARATOR);
detailedOutputBuilder.append("###").append(LINE_SEPARATOR);
- outputBuilder.append("Removed Instance: ").append(instance.getFullName());
- detailedOutputBuilder.append("Removed Instance: ").append(instance.getFullName());
+ outputBuilder.append("Removed Instance: ").append(instance.getName());
+ detailedOutputBuilder.append("Removed Instance: ").append(instance.getName());
outputBuilder.append(LINE_SEPARATOR);
detailedOutputBuilder.append(LINE_SEPARATOR);
var result = results.get(counter++);
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackArCoTLModelProvider.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackArCoTLModelProvider.java
new file mode 100644
index 000000000..e101a4586
--- /dev/null
+++ b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackArCoTLModelProvider.java
@@ -0,0 +1,94 @@
+/* Licensed under MIT 2023. */
+package edu.kit.kastel.mcse.ardoco.core.tests.integration.inconsistencyhelper;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+
+import org.eclipse.collections.api.factory.Lists;
+import org.eclipse.collections.api.list.ImmutableList;
+
+import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelElement;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelType;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.ArchitectureModel;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
+import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.architecture.ArchitectureComponent;
+import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
+import edu.kit.kastel.mcse.ardoco.core.models.ArCoTLModelProviderAgent;
+import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.Extractor;
+import edu.kit.kastel.mcse.ardoco.core.models.connectors.generators.architecture.pcm.PcmExtractor;
+
+public class HoldBackArCoTLModelProvider {
+
+ private final File inputArchitectureModel;
+ private int currentHoldBackIndex = -1;
+ private final ArchitectureModel initialModel;
+ private final ImmutableList components;
+
+ public HoldBackArCoTLModelProvider(File inputArchitectureModel) {
+ this.inputArchitectureModel = inputArchitectureModel;
+ var model = getExtractor().extractModel();
+ assert model instanceof ArchitectureModel;
+ initialModel = (ArchitectureModel) model;
+ components = Lists.immutable.fromStream(initialModel.getContent()
+ .stream()
+ .filter(it -> it instanceof ArchitectureComponent)
+ .map(it -> (ArchitectureComponent) it));
+ }
+
+ private Extractor getExtractor() {
+ return new PcmExtractor(inputArchitectureModel.getAbsolutePath());
+ }
+
+ /**
+ * Set the index of the element that should be hold back. Set the index to <0 if nothing should be held back.
+ *
+ * @param currentHoldBackIndex the index of the element to be hold back. If negative, nothing is held back
+ */
+ public void setCurrentHoldBackIndex(int currentHoldBackIndex) {
+ this.currentHoldBackIndex = currentHoldBackIndex;
+ }
+
+ /**
+ * Returns the number of actual instances (including all held back elements)
+ *
+ * @return the number of actual instances (including all held back elements)
+ */
+ public int numberOfActualInstances() {
+ return components.size();
+ }
+
+ /**
+ * Returns the ModelInstance that is held back. If nothing is held back, returns null
+ *
+ * @return the ModelInstance that is held back. If nothing is held back, returns null
+ */
+ public ModelElement getCurrentHoldBack() {
+ if (currentHoldBackIndex < 0) {
+ return null;
+ }
+ return components.get(currentHoldBackIndex);
+ }
+
+ public ArCoTLModelProviderAgent get(SortedMap additionalConfigs, DataRepository dataRepository) {
+ ArCoTLModelProviderAgent agent = new ArCoTLModelProviderAgent(dataRepository, List.of(new Extractor("") {
+ @Override
+ public Model extractModel() {
+ var elements = new ArrayList<>(initialModel.getContent());
+ var elementToRemove = getCurrentHoldBack();
+ elements.remove(elementToRemove);
+ return new ArchitectureModel(elements);
+ }
+
+ @Override
+ public ModelType getModelType() {
+ return ArchitectureModelType.PCM;
+ }
+ }));
+ agent.applyConfiguration(additionalConfigs);
+ return agent;
+ }
+
+}
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackRunResultsProducer.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackRunResultsProducer.java
index cb2f70f64..5a4f2210a 100644
--- a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackRunResultsProducer.java
+++ b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldBackRunResultsProducer.java
@@ -4,14 +4,14 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.SortedMap;
import org.junit.jupiter.api.Assertions;
import edu.kit.kastel.mcse.ardoco.core.api.PreprocessingData;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
+import edu.kit.kastel.mcse.ardoco.core.api.models.ModelElement;
import edu.kit.kastel.mcse.ardoco.core.api.output.ArDoCoResult;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
import edu.kit.kastel.mcse.ardoco.core.common.util.DataRepositoryHelper;
@@ -20,8 +20,6 @@
import edu.kit.kastel.mcse.ardoco.core.execution.ArDoCo;
import edu.kit.kastel.mcse.ardoco.core.execution.ConfigurationHelper;
import edu.kit.kastel.mcse.ardoco.core.inconsistency.InconsistencyChecker;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.models.informants.ModelProviderInformant;
import edu.kit.kastel.mcse.ardoco.core.recommendationgenerator.RecommendationGenerator;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.Project;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.baseline.InconsistencyBaseline;
@@ -31,7 +29,6 @@
public class HoldBackRunResultsProducer {
private File inputText;
private File inputModel;
- private PcmXmlModelConnector pcmModel;
public HoldBackRunResultsProducer() {
super();
@@ -47,17 +44,17 @@ public HoldBackRunResultsProducer() {
* @return a map containing the mapping from ModelElement that was held back to the DataStructure that was produced
* when running ArDoCo without the ModelElement
*/
- public Map produceHoldBackRunResults(Project project, boolean useBaselineApproach) {
- Map runs = new HashMap();
+ public Map produceHoldBackRunResults(Project project, boolean useBaselineApproach) {
+ Map runs = new LinkedHashMap<>();
inputModel = project.getModelFile();
inputText = project.getTextFile();
- var holdElementsBackModelConnector = constructHoldElementsBackModelConnector();
+ HoldBackArCoTLModelProvider holdBackArCoTLModelProvider = new HoldBackArCoTLModelProvider(inputModel);
ArDoCo arDoCoBaseRun;
try {
- arDoCoBaseRun = definePipelineBase(project, inputText, holdElementsBackModelConnector, useBaselineApproach);
+ arDoCoBaseRun = definePipelineBase(project, inputText, holdBackArCoTLModelProvider, useBaselineApproach);
} catch (IOException e) {
Assertions.fail(e);
return runs;
@@ -66,26 +63,17 @@ public Map produceHoldBackRunResults(Project projec
var baseRunData = new ArDoCoResult(arDoCoBaseRun.getDataRepository());
runs.put(null, baseRunData);
- for (int i = 0; i < holdElementsBackModelConnector.numberOfActualInstances(); i++) {
- holdElementsBackModelConnector.setCurrentHoldBackIndex(i);
- var currentHoldBack = holdElementsBackModelConnector.getCurrentHoldBack();
- var currentRun = defineArDoCoWithPreComputedData(baseRunData, holdElementsBackModelConnector, useBaselineApproach);
+ for (int i = 0; i < holdBackArCoTLModelProvider.numberOfActualInstances(); i++) {
+ holdBackArCoTLModelProvider.setCurrentHoldBackIndex(i);
+ var currentHoldBack = holdBackArCoTLModelProvider.getCurrentHoldBack();
+ var currentRun = defineArDoCoWithPreComputedData(baseRunData, holdBackArCoTLModelProvider, useBaselineApproach);
currentRun.run();
runs.put(currentHoldBack, new ArDoCoResult(currentRun.getDataRepository()));
}
return runs;
}
- private HoldElementsBackModelConnector constructHoldElementsBackModelConnector() {
- try {
- pcmModel = new PcmXmlModelConnector(inputModel);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- return new HoldElementsBackModelConnector(pcmModel);
- }
-
- private static ArDoCo definePipelineBase(Project project, File inputText, HoldElementsBackModelConnector holdElementsBackModelConnector,
+ private static ArDoCo definePipelineBase(Project project, File inputText, HoldBackArCoTLModelProvider holdElementsBackModelConnector,
boolean useInconsistencyBaseline) throws FileNotFoundException {
ArDoCo arDoCo = new ArDoCo(project.name().toLowerCase());
var dataRepository = arDoCo.getDataRepository();
@@ -106,7 +94,7 @@ private static ArDoCo definePipelineBase(Project project, File inputText, HoldEl
return arDoCo;
}
- private static ArDoCo defineArDoCoWithPreComputedData(ArDoCoResult precomputedResults, HoldElementsBackModelConnector holdElementsBackModelConnector,
+ private static ArDoCo defineArDoCoWithPreComputedData(ArDoCoResult precomputedResults, HoldBackArCoTLModelProvider holdElementsBackModelConnector,
boolean useInconsistencyBaseline) {
var projectName = precomputedResults.getProjectName();
ArDoCo arDoCo = new ArDoCo(projectName);
@@ -131,9 +119,9 @@ private static ArDoCo defineArDoCoWithPreComputedData(ArDoCoResult precomputedRe
return arDoCo;
}
- private static void addMiddleSteps(HoldElementsBackModelConnector holdElementsBackModelConnector, ArDoCo arDoCo, DataRepository dataRepository,
+ private static void addMiddleSteps(HoldBackArCoTLModelProvider holdElementsBackModelConnector, ArDoCo arDoCo, DataRepository dataRepository,
SortedMap additionalConfigs) {
- arDoCo.addPipelineStep(new ModelProviderInformant(dataRepository, holdElementsBackModelConnector));
+ arDoCo.addPipelineStep(holdElementsBackModelConnector.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(TextExtraction.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(RecommendationGenerator.get(additionalConfigs, dataRepository));
arDoCo.addPipelineStep(ConnectionGenerator.get(additionalConfigs, dataRepository));
diff --git a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldElementsBackModelConnector.java b/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldElementsBackModelConnector.java
deleted file mode 100644
index 9b7471c61..000000000
--- a/tests/tests-inconsistency/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/inconsistencyhelper/HoldElementsBackModelConnector.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Licensed under MIT 2022-2023. */
-package edu.kit.kastel.mcse.ardoco.core.tests.integration.inconsistencyhelper;
-
-import org.eclipse.collections.api.list.ImmutableList;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.Metamodel;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
-
-/**
- * This class represents a special {@link ModelConnector} that can be manipulated to hold back a single element when
- * accessing the instances. By setting the index of the element that should be hold back, this element is then removed
- * from results of the typical {@link ModelConnector} methods. By setting the index to a negative number, all elements
- * will be returned. This {@link ModelConnector} does not implement own logic for getting elements etc., but uses an
- * existing {@link ModelConnector} like {@link PcmXmlModelConnector} instead. You
- * can set this connector via the constructor.
- */
-public class HoldElementsBackModelConnector implements ModelConnector {
-
- private final ModelConnector actualModelConnector;
- private int currentHoldBackIndex = -1;
-
- /**
- * Constructor that uses the provided {@link ModelConnector} as underlying connector.
- *
- * @param actualModelConnector the connector that is used for actually retrieving elements
- */
- public HoldElementsBackModelConnector(ModelConnector actualModelConnector) {
- this.actualModelConnector = actualModelConnector;
- }
-
- @Override
- public String getModelId() {
- return actualModelConnector.getModelId();
- }
-
- @Override
- public Metamodel getMetamodel() {
- return actualModelConnector.getMetamodel();
- }
-
- @Override
- public ImmutableList getInstances() {
- var actualInstances = actualModelConnector.getInstances();
- if (currentHoldBackIndex < 0) {
- return actualInstances;
- }
- return actualInstances.newWithout(actualInstances.get(currentHoldBackIndex));
- }
-
- /**
- * Set the index of the element that should be hold back. Set the index to <0 if nothing should be held back.
- *
- * @param currentHoldBackIndex the index of the element to be hold back. If negative, nothing is held back
- */
- public void setCurrentHoldBackIndex(int currentHoldBackIndex) {
- this.currentHoldBackIndex = currentHoldBackIndex;
- }
-
- /**
- * Returns the ModelInstance that is held back. If nothing is held back, returns null
- *
- * @return the ModelInstance that is held back. If nothing is held back, returns null
- */
- public ModelInstance getCurrentHoldBack() {
- if (currentHoldBackIndex < 0) {
- return null;
- }
- return actualModelConnector.getInstances().get(currentHoldBackIndex);
- }
-
- /**
- * Returns the number of actual instances (including all held back elements)
- *
- * @return the number of actual instances (including all held back elements)
- */
- public int numberOfActualInstances() {
- return actualModelConnector.getInstances().size();
- }
-}
diff --git a/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ArchitectureModelProviderTest.java b/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ArchitectureModelProviderTest.java
deleted file mode 100644
index bb7c452da..000000000
--- a/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ArchitectureModelProviderTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Licensed under MIT 2022-2023. */
-package edu.kit.kastel.mcse.ardoco.core.tests;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-
-import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelInstance;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.PcmXmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.models.connectors.UmlModelConnector;
-import edu.kit.kastel.mcse.ardoco.core.tests.eval.Project;
-
-class ArchitectureModelProviderTest {
-
- @DisplayName("Test Model Providers")
- @ParameterizedTest(name = "Testing for {0}")
- @EnumSource(value = Project.class)
- void pcmUmlIT(Project project) {
- var pcmFile = project.getModelFile(ArchitectureModelType.PCM);
- var umlFile = project.getModelFile(ArchitectureModelType.UML);
-
- PcmXmlModelConnector modelProviderPcm = null;
- UmlModelConnector modelProviderUml = null;
- try {
- modelProviderPcm = new PcmXmlModelConnector(pcmFile);
- modelProviderUml = new UmlModelConnector(umlFile);
- } catch (IOException e) {
- Assertions.fail("Cannot load models", e);
- }
-
- var pcmInstances = modelProviderPcm.getInstances();
- var umlInstances = modelProviderUml.getInstances();
-
- var fullNameArrayPcm = pcmInstances.collect(ModelInstance::getFullName).toSortedList();
- var fullNameArrayUml = umlInstances.collect(ModelInstance::getFullName).toSortedList();
- var idArrayPcm = pcmInstances.collect(ModelInstance::getUid).toSortedList();
- var idArrayUml = umlInstances.collect(ModelInstance::getUid).toSortedList();
-
- Assertions.assertAll(//
- () -> Assertions.assertIterableEquals(fullNameArrayPcm, fullNameArrayUml), //
- () -> Assertions.assertIterableEquals(idArrayPcm, idArrayUml) //
- );
- }
-}
diff --git a/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java b/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
index b2ed87110..52874cc42 100644
--- a/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
+++ b/tests/tests-misc/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
@@ -41,7 +41,7 @@ public void showCurrentConfiguration() throws Exception {
}
@Test
- public void testValidityOfConfigurableFields() throws Exception {
+ public void testValidityOfConfigurableFields() {
super.testValidityOfConfigurableFields();
}
diff --git a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
index 34199c35d..fbe2ae40f 100644
--- a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
+++ b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/ConfigurationTest.java
@@ -37,7 +37,7 @@ public void showCurrentConfiguration() throws Exception {
@Test
@Override
- public void testValidityOfConfigurableFields() throws Exception {
+ public void testValidityOfConfigurableFields() {
super.testValidityOfConfigurableFields();
}
}
diff --git a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadCodeTraceabilityLinkRecoveryEvaluation.java b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadCodeTraceabilityLinkRecoveryEvaluation.java
index b14a825a0..18d0cb604 100644
--- a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadCodeTraceabilityLinkRecoveryEvaluation.java
+++ b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadCodeTraceabilityLinkRecoveryEvaluation.java
@@ -10,7 +10,6 @@
import org.eclipse.collections.api.factory.Lists;
import org.eclipse.collections.api.list.ImmutableList;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ArchitectureModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.CodeModelType;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.api.models.arcotl.Model;
@@ -39,13 +38,12 @@ protected ArDoCoRunner getAndSetupRunner(CodeProject codeProject) {
String name = codeProject.name().toLowerCase();
Project textProject = codeProject.getProject();
File textInput = textProject.getTextFile();
- File inputArchitectureModel = codeProject.getProject().getModelFile();
File inputCode = getInputCode(codeProject);
SortedMap additionalConfigsMap = new TreeMap<>();
File outputDir = new File(OUTPUT);
var runner = new ArDoCoForSadCodeTraceabilityLinkRecovery(name);
- runner.setUp(textInput, inputArchitectureModel, ArchitectureModelType.PCM, inputCode, additionalConfigsMap, outputDir);
+ runner.setUp(textInput, inputCode, additionalConfigsMap, outputDir);
return runner;
}
diff --git a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadSamTraceabilityLinkRecoveryEvaluation.java b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadSamTraceabilityLinkRecoveryEvaluation.java
index 76b4b98ee..a034b2a8f 100644
--- a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadSamTraceabilityLinkRecoveryEvaluation.java
+++ b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/SadSamTraceabilityLinkRecoveryEvaluation.java
@@ -222,7 +222,7 @@ private static void printDetailedDebug(EvaluationResults results, DataRe
var sentences = data.getData(PreprocessingData.ID, PreprocessingData.class).orElseThrow().getText().getSentences();
var modelStates = data.getData(ModelStates.ID, ModelStates.class).orElseThrow();
- for (String modelId : modelStates.extractionModelIds()) {
+ for (String modelId : modelStates.modelIds()) {
var instances = modelStates.getModelExtractionState(modelId).getInstances();
var falseNegativeOutput = createOutputStrings(falseNegatives, sentences, instances);
diff --git a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/TLRUtil.java b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/TLRUtil.java
index c5afe0bc3..00d2f8f44 100644
--- a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/TLRUtil.java
+++ b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/TLRUtil.java
@@ -8,7 +8,7 @@
import edu.kit.kastel.mcse.ardoco.core.api.connectiongenerator.ConnectionState;
import edu.kit.kastel.mcse.ardoco.core.api.connectiongenerator.ConnectionStates;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.models.ModelStates;
import edu.kit.kastel.mcse.ardoco.core.data.DataRepository;
import edu.kit.kastel.mcse.ardoco.core.tests.eval.results.EvaluationResults;
@@ -33,10 +33,10 @@ public static ImmutableList getTraceLinks(DataRepository data) {
var connectionStates = data.getData(ConnectionStates.ID, ConnectionStates.class).orElseThrow();
var modelStates = data.getData(ModelStates.ID, ModelStates.class).orElseThrow();
- List connectionStatesList = modelStates.extractionModelIds()
+ List connectionStatesList = modelStates.modelIds()
.stream()
.map(modelStates::getModelExtractionState)
- .map(ModelExtractionState::getMetamodel)
+ .map(LegacyModelExtractionState::getMetamodel)
.map(connectionStates::getConnectionState)
.toList();
for (var connectionState : connectionStatesList) {
diff --git a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/files/TLSummaryFile.java b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/files/TLSummaryFile.java
index 7c605bfcd..6586b35b2 100644
--- a/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/files/TLSummaryFile.java
+++ b/tests/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/tlrhelper/files/TLSummaryFile.java
@@ -13,7 +13,7 @@
import org.eclipse.collections.api.factory.Lists;
import org.eclipse.collections.api.tuple.Pair;
-import edu.kit.kastel.mcse.ardoco.core.api.models.ModelExtractionState;
+import edu.kit.kastel.mcse.ardoco.core.api.models.LegacyModelExtractionState;
import edu.kit.kastel.mcse.ardoco.core.api.output.ArDoCoResult;
import edu.kit.kastel.mcse.ardoco.core.api.text.Text;
import edu.kit.kastel.mcse.ardoco.core.common.util.CommonUtilities;
@@ -130,7 +130,7 @@ private static String createFalseLinkOutput(ArDoCoResult data, Text text, TestLi
return builder.toString();
}
- static String format(TestLink link, Text text, ModelExtractionState modelState) {
+ static String format(TestLink link, Text text, LegacyModelExtractionState modelState) {
var model = modelState.getInstances().stream().filter(m -> m.getUid().equals(link.modelId())).findAny().orElse(null);
var sentence = text.getSentences().stream().filter(s -> s.getSentenceNumber() == link.sentenceNr()).findAny().orElse(null);