Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import de.monticore.cdbasis._ast.ASTCDClass;
import de.monticore.cdbasis._ast.ASTCDCompilationUnit;
import de.monticore.cdbasis._ast.ASTCDType;
import de.monticore.cddiff.CDDiffUtil;
import de.monticore.cddiff.ow2cw.ReductionTrafo;
import de.monticore.cddiff.syn2semdiff.datastructures.*;
import de.monticore.cddiff.syn2semdiff.helpers.ODGenHelper;
Expand Down Expand Up @@ -203,15 +204,28 @@ else if (astodArtifact.isPresent() && diffLimit == 0) {
}
comment.append(System.lineSeparator()).append("// is/are added in ").append(attribute.a
.getSymbol().getInternalQualifiedName());
Optional<ASTODArtifact> astodArtifact = generateArtifact(attribute.a, comment);
if (astodArtifact.isPresent() && diffLimit != 0 && artifactList.size() < diffLimit) {
artifactList.add(astodArtifact.get());
if (artifactList.size() == diffLimit) {
return artifactList;
}

Optional<ASTCDClass> srcClass;

if (CDDiffUtil.getAllTypesFromCD(syntaxDiff.getSrcCD()).contains(attribute.a)) {
srcClass = Optional.of(attribute.a);
}
else if (astodArtifact.isPresent() && diffLimit == 0) {
artifactList.add(astodArtifact.get());
else {
srcClass = syntaxDiff.getMatchedClasses().stream().filter(p -> p.b.equals(
attribute.a)).map(p -> p.a).findFirst();
}

if (srcClass.isPresent()) {
Optional<ASTODArtifact> astodArtifact = generateArtifact(srcClass.get(), comment);
if (astodArtifact.isPresent() && diffLimit != 0 && artifactList.size() < diffLimit) {
artifactList.add(astodArtifact.get());
if (artifactList.size() == diffLimit) {
return artifactList;
}
}
else if (astodArtifact.isPresent() && diffLimit == 0) {
artifactList.add(astodArtifact.get());
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ public ODGenHelper(ASTCDCompilationUnit srcCD, Syn2SemDiffHelper syn2SemDiffHelp
* @return List of types as Strings.
*/
public List<String> getSuperTypes(ASTCDClass astcdClass) {
List<ASTCDType> typeList = new ArrayList<>(CDDiffUtil.getAllSuperTypes(astcdClass, srcCD
.getCDDefinition()));
List<ASTCDType> typeList = new ArrayList<>(CDDiffUtil.getAllSuperTypes(astcdClass));
List<String> typesString = new ArrayList<>();
for (int i = typeList.size() - 1; i >= 0; i--) {
String type = typeList.get(i).getSymbol().getInternalQualifiedName();
Expand Down Expand Up @@ -105,7 +104,7 @@ public static ASTCDClass getCDClass(ASTCDCompilationUnit compilationUnit, String
public int getClassSize(ASTCDClass astcdClass) {
int attributeCount = syn2SemDiffHelper.getAllAttr(astcdClass).b.size();
int associationCount = syn2SemDiffHelper.getAssociationCount(astcdClass, true);
int otherAssocsCount = syn2SemDiffHelper.getOtherAssocs(astcdClass, true, false).size();
int otherAssocsCount = syn2SemDiffHelper.getOtherAssocs(astcdClass, true, false, false).size();
return attributeCount + associationCount + otherAssocsCount;
}

Expand Down Expand Up @@ -216,10 +215,9 @@ else if (subAssoc.getSide().equals(ClassSide.Right) && superAssoc.getSide().equa

public List<AssocStruct> getTgtAssocs(ASTCDClass astcdClass) {
List<AssocStruct> assocStructs = new ArrayList<>();
Set<ASTCDClass> superClassSet = CDDiffUtil.getAllSuperclasses(astcdClass, srcCD
.getCDDefinition().getCDClassesList());
for (ASTCDClass superClass : superClassSet) {
assocStructs.addAll(syn2SemDiffHelper.getOtherAssocs(superClass, true, false));
Set<ASTCDType> superClassSet = CDDiffUtil.getAllSuperTypes(astcdClass);
for (ASTCDType superClass : superClassSet) {
assocStructs.addAll(syn2SemDiffHelper.getOtherAssocs(superClass, true, false, false));
}
List<AssocStruct> copy = new ArrayList<>(assocStructs);
for (AssocStruct assocStruct : copy) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package de.monticore.cddiff.syn2semdiff.odgen;

import de.monticore.cddiff.syn2semdiff.datastructures.AssocDirection;
import de.monticore.expressions.expressionsbasis.ExpressionsBasisMill;
import de.monticore.od4report.OD4ReportMill;
import de.monticore.odbasis.ODBasisMill;
import de.monticore.odbasis._ast.ASTODAttribute;
Expand All @@ -13,6 +14,7 @@
import de.monticore.odlink._ast.ASTODLinkBuilder;
import de.monticore.odlink._ast.ASTODLinkLeftSideBuilder;
import de.monticore.odlink._ast.ASTODLinkRightSideBuilder;
import de.monticore.umlmodifier._ast.ASTModifier;
import de.se_rwth.commons.logging.Log;
import java.util.*;

Expand Down Expand Up @@ -79,10 +81,13 @@ public ASTODObject buildObj(String id, String type, Collection<String> types,

objectBuilder.setName(id);

objectBuilder.setModifier(OD4ReportMill.modifierBuilder().setStereotype(OD4ReportMill
ASTModifier modifier = OD4ReportMill.modifierBuilder().setStereotype(OD4ReportMill
.stereotypeBuilder().addValues(OD4ReportMill.stereoValueBuilder().setName("instanceof")
.setContent(String.join(", ", types)).setText(OD4ReportMill.stringLiteralBuilder()
.setSource(String.join(", ", types)).build()).build()).build()).build());
.setExpression(ExpressionsBasisMill.literalExpressionBuilder().setLiteral(OD4ReportMill
.stringLiteralBuilder().setSource(String.join(", ", types)).build()).build())
.build()).build()).build();

objectBuilder.setModifier(modifier);

objectBuilder.setMCObjectType(ODBasisMill.mCQualifiedTypeBuilder().setMCQualifiedName(
ODBasisMill.mCQualifiedNameBuilder().setPartsList(Collections.singletonList(type)).build())
Expand Down
Loading
Loading