diff --git a/src/main/java/org/rosi_project/model_sync/modelrepresentation/ModelJoinCreation.java b/src/main/java/org/rosi_project/model_sync/modelrepresentation/ModelJoinCreation.java index 42a359a07ce94bc7226353bf9c8edd7f9bcb68f5..6c3b0938af7132475450e31800a88d2b9f92ca54 100644 --- a/src/main/java/org/rosi_project/model_sync/modelrepresentation/ModelJoinCreation.java +++ b/src/main/java/org/rosi_project/model_sync/modelrepresentation/ModelJoinCreation.java @@ -3,6 +3,7 @@ package org.rosi_project.model_sync.modelrepresentation; import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.attributes; import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.outgoing; import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.supertype; +import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.subtype; import static org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder.naturalJoin; import java.io.File; @@ -13,10 +14,20 @@ import org.rosi_project.model_sync.model_join.representation.grammar.ModelJoinEx import org.rosi_project.model_sync.model_join.representation.util.ModelJoinBuilder; import org.rosi_project.model_sync.model_join.representation.writer.*; +/** + * Create different ModelJoin Queries. + * + * @author Christopher + */ public class ModelJoinCreation { public static void main(String[] args) { - + ModelJoinCreation mjc = new ModelJoinCreation(); + //mjc.createModelJoinQueriesForSimpleLibrary(); + mjc.createModelJoinQueriesForShrinkingEclipseLibrary(); + } + + public void createModelJoinQueriesForSimpleLibrary () { ClassResource library = ClassResource.from("lib", "Library"); ClassResource employee = ClassResource.from("lib", "Employee"); ClassResource person = ClassResource.from("lib", "Person"); @@ -100,5 +111,40 @@ public class ModelJoinCreation { FileBasedModelJoinWriter writerManager = new FileBasedModelJoinWriter(fileManager); writerManager.write(mjManager); } + + public void createModelJoinQueriesForShrinkingEclipseLibrary () { + ClassResource library = ClassResource.from("eclipse", "Library"); + ClassResource book = ClassResource.from("eclipse", "Book"); + ClassResource circulatingItem = ClassResource.from("eclipse", "CirculatingItem"); + ClassResource item = ClassResource.from("eclipse", "Item"); + + AttributePath libraryName = AttributePath.from(library, "name"); + AttributePath libraryStock = AttributePath.from(library, "stock"); + AttributePath itemTitle = AttributePath.from(item, "title"); + AttributePath bookPages = AttributePath.from(book, "pages"); + + ModelJoinExpression mj = ModelJoinBuilder.createNewModelJoin() + .add(naturalJoin() + .join(library) + .with(library) + .as(library) + .keep(attributes(libraryName)) + .keep(outgoing(libraryStock) + .as(circulatingItem) + .keep(attributes(itemTitle)) + .keep(subtype(book) + .as(book) + .keep(attributes(bookPages)) + .buildExpression()) + .buildExpression() + ) + .done()) + .build(); + + File file = new File("shrinkingEclipse.modeljoin"); + + FileBasedModelJoinWriter writer = new FileBasedModelJoinWriter(file); + writer.write(mj); + } }