Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:1
FROM alpine:3.14
FROM alpine:3.15

# Prepare the environment
RUN apk add maven
Expand All @@ -12,13 +12,13 @@ COPY pom.xml .
RUN mvn package || exit


FROM alpine:3.14
FROM alpine:3.15

# Create a user
RUN adduser --disabled-password --home /home/user --gecos '' user

RUN apk add --no-cache --upgrade bash
RUN apk add --update openjdk11 unzip
RUN apk add --update openjdk17 unzip
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
RUN apk add --no-cache tesseract-ocr python3 py3-pip py3-numpy && \
Expand Down
1 change: 0 additions & 1 deletion experiment.bat
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
@echo Starting %*
@if not exist "results" mkdir results

@docker run --rm -v "%cd%/results":"/home/user/results" match-experiments %*

Expand Down
24 changes: 4 additions & 20 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,15 @@

<groupId>de.variantsync.matching</groupId>
<artifactId>RaQuN</artifactId>
<version>1.0</version>
<version>1.1</version>

<properties>
<!-- Adjust your java version here (It might not work for Java Versions < 11 -->
<java.version>11</java.version>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.jupiter.version>5.6.0</junit.jupiter.version>
</properties>

<!--
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
INFO: If you want to run RaQuN as jar file you should run the RaQuN-1.0-jar-with-dependencies.jar
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-->
<build>
<plugins>
<plugin>
Expand All @@ -31,18 +26,6 @@
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>de.variantsync.matching.experiments.RQ1Runner</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
Expand All @@ -53,10 +36,11 @@
<goal>single</goal>
</goals>
<configuration>
<finalName>RaQuN</finalName>
<finalName>RaQuN-${project.version}</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
<execution>
Expand Down
38 changes: 19 additions & 19 deletions src/main/java/de/variantsync/matching/emf2csv/Architecture2CSV.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,45 @@
*/
public class Architecture2CSV {

public static void main(String[] args) throws Exception {
public static void main(final String[] args) throws Exception {
System.out.println("Running Architecture2CSV...");

if (args.length != 1) {
System.err.println("Required arguments: <model-directory>");
System.exit(0);
}

File inFolder = new File(args[0]);
final File inFolder = new File(args[0]);
if (!inFolder.exists() || !inFolder.isDirectory()) {
System.err.println("Directory does not exist: " + inFolder.getAbsolutePath());
System.exit(0);
}
System.out.println("Model Directory: " + inFolder.getAbsolutePath());

File outFile = new File("csv-models/" + inFolder.getName() + ".csv");
final File outFile = new File("csv-models/" + inFolder.getName() + ".csv");
outFile.getParentFile().mkdirs();

List<EClass> elementTypes = new ArrayList<EClass>();
final List<EClass> elementTypes = new ArrayList<EClass>();
elementTypes.add(ArchitecturePackage.eINSTANCE.getComponent());
elementTypes.add(ArchitecturePackage.eINSTANCE.getConnector());

convert(inFolder, outFile, elementTypes);
}

private static void convert(File inFolder, File outFile, List<EClass> elementTypes) throws Exception {
List<String[]> allElementRecords = new ArrayList<String[]>();
private static void convert(final File inFolder, final File outFile, final List<EClass> elementTypes) throws Exception {
final List<String[]> allElementRecords = new ArrayList<>();

File modelFiles[] = inFolder.listFiles();
for (File file : modelFiles) {
final File[] modelFiles = inFolder.listFiles();
for (final File file : modelFiles) {
System.out.println("Processing " + file.getAbsolutePath());
Architecture model = ModelUtil.loadArchitectureModel(file.getAbsolutePath());
final Architecture model = ModelUtil.loadArchitectureModel(file.getAbsolutePath());
String modelId = file.getName();
modelId = modelId.substring(0, modelId.length() - 5);

// Elements
for (EClass elementType : elementTypes) {
for (Element element : ModelUtil.getAllElements(model, elementType)) {
String[] elementRecord = new String[4];
for (final EClass elementType : elementTypes) {
for (final Element element : ModelUtil.getAllElements(model, elementType)) {
final String[] elementRecord = new String[4];
elementRecord[0] = modelId;
elementRecord[1] = ModelUtil.getXmiId(element);
elementRecord[2] = element.getName();
Expand All @@ -84,24 +84,24 @@ private static void convert(File inFolder, File outFile, List<EClass> elementTyp
writeCSV(allElementRecords, outFile.getAbsolutePath());
}

private static String getComponentPropertyString(Component component) {
private static String getComponentPropertyString(final Component component) {
String propertyString = "Component";

for (Port port : component.getPorts()) {
for (final Port port : component.getPorts()) {
propertyString += ";" + port.getName();

for (Connector c : port.getOutgoings()) {
for (final Connector c : port.getOutgoings()) {
propertyString += ";out_" + c.getName();
}
for (Connector c : port.getIncomings()) {
for (final Connector c : port.getIncomings()) {
propertyString += ";in_" + c.getName();
}
}

return propertyString;
}

private static String getConnectorPropertyString(Connector connector) {
private static String getConnectorPropertyString(final Connector connector) {
String propertyString = "Connector";

propertyString += ";" + connector.getType().toString();
Expand All @@ -112,9 +112,9 @@ private static String getConnectorPropertyString(Connector connector) {
return propertyString;
}

private static void writeCSV(List<String[]> stringArray, String path) throws Exception {
private static void writeCSV(final List<String[]> stringArray, final String path) throws Exception {
System.out.println("Writing Output CSV: " + path);
CSVWriter writer = new CSVWriter(new FileWriter(path.toString()), ',', Character.MIN_VALUE);
final CSVWriter writer = new CSVWriter(new FileWriter(path.toString()), ',', Character.MIN_VALUE);
writer.writeAll(stringArray);
writer.close();
}
Expand Down
56 changes: 26 additions & 30 deletions src/main/java/de/variantsync/matching/emf2csv/ModelUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,25 @@ public class ModelUtil {

static {
// Register the proper EMF resource factories
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
Map<String, Object> m = reg.getExtensionToFactoryMap();
final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
final Map<String, Object> m = reg.getExtensionToFactoryMap();
m.put("xmi", new XMIResourceFactoryImpl());
m.put("arch", new XMIResourceFactoryImpl());
m.put("ecore", new EcoreResourceFactoryImpl());
}

public static List<Feature> getAllFeatures(Class clazz) {
List<Feature> properties = new ArrayList<Feature>();
public static List<Feature> getAllFeatures(final Class clazz) {
final List<Feature> properties = new ArrayList<>();
properties.addAll(clazz.getAttributes());
properties.addAll(clazz.getOperations());

return properties;
}

public static List<NamedElement> getAllElements(Model model, EClass eClass) {
List<NamedElement> elements = new ArrayList<NamedElement>();
for (Iterator<EObject> iterator = model.eAllContents(); iterator.hasNext();) {
EObject eObject = (EObject) iterator.next();
public static List<NamedElement> getAllElements(final Model model, final EClass eClass) {
final List<NamedElement> elements = new ArrayList<>();
for (final Iterator<EObject> iterator = model.eAllContents(); iterator.hasNext();) {
final EObject eObject = iterator.next();
if (eObject.eClass() == eClass) {
elements.add((NamedElement) eObject);
}
Expand All @@ -59,10 +59,10 @@ public static List<NamedElement> getAllElements(Model model, EClass eClass) {
return elements;
}

public static List<Element> getAllElements(Architecture model, EClass eClass) {
List<Element> elements = new ArrayList<Element>();
for (Iterator<EObject> iterator = model.eAllContents(); iterator.hasNext();) {
EObject eObject = (EObject) iterator.next();
public static List<Element> getAllElements(final Architecture model, final EClass eClass) {
final List<Element> elements = new ArrayList<>();
for (final Iterator<EObject> iterator = model.eAllContents(); iterator.hasNext();) {
final EObject eObject = iterator.next();
if (eObject.eClass() == eClass) {
elements.add((Element) eObject);
}
Expand All @@ -71,43 +71,39 @@ public static List<Element> getAllElements(Architecture model, EClass eClass) {
return elements;
}

public static String getXmiId(EObject eObject) {
public static String getXmiId(final EObject eObject) {
assert (eObject != null && eObject.eResource() instanceof XMIResource);

String objectID = ((XMIResource) eObject.eResource()).getID(eObject);

return objectID;
return ((XMIResource) eObject.eResource()).getID(eObject);
}

public static Model loadModel(String path) {
ResourceSet resourceSet = new ResourceSetImpl();
public static Model loadModel(final String path) {
final ResourceSet resourceSet = new ResourceSetImpl();
UMLResourcesUtil.init(resourceSet);
Resource resource = resourceSet.getResource(URI.createFileURI(path), true);
Model model = (Model) resource.getContents().get(0);
final Resource resource = resourceSet.getResource(URI.createFileURI(path), true);

return model;
return (Model) resource.getContents().get(0);
}

public static Architecture loadArchitectureModel(String path) {
ResourceSet resourceSet = new ResourceSetImpl();
public static Architecture loadArchitectureModel(final String path) {
final ResourceSet resourceSet = new ResourceSetImpl();
UMLResourcesUtil.init(resourceSet);
Resource resource = resourceSet.getResource(URI.createFileURI(path), true);
Architecture model = (Architecture) resource.getContents().get(0);
final Resource resource = resourceSet.getResource(URI.createFileURI(path), true);

return model;
return (Architecture) resource.getContents().get(0);
}

public static void saveModel(Model model, String path) {
public static void saveModel(final Model model, final String path) {
System.out.println(path);
ResourceSet resourceSet = new ResourceSetImpl();
final ResourceSet resourceSet = new ResourceSetImpl();
UMLResourcesUtil.init(resourceSet);
Resource resource = resourceSet.createResource(URI.createFileURI(path));
final Resource resource = resourceSet.createResource(URI.createFileURI(path));
resource.getContents().add(model);

// now save the content.
try {
resource.save(Collections.EMPTY_MAP);
} catch (IOException e) {
} catch (final IOException e) {
e.printStackTrace();
}
}
Expand Down
Loading