Skip to content
Snippets Groups Projects
Commit 499bdca3 authored by Chrissi's avatar Chrissi
Browse files

add combined combination

parent cf400714
Branches
No related tags found
No related merge requests found
package org.rosi_project.model_sync.generator
object Creation extends Enumeration {
val rsum, rsync = Value
val rolesum, rolesync, rolecomb = Value
//val rsum, rsync = Value
}
\ No newline at end of file
......@@ -7,7 +7,6 @@ import org.rosi_project.model_sync.generator.io.{ ClassWritingException, ModelIm
import scala.reflect.io.File
import org.rosi_project.model_sync.generator.acr_model.SModel
import org.rosi_project.model_sync.model_join.representation.parser.legacy.DefaultModelJoinParser
import org.rosi_project.model_sync.generator.acr_model.STypeRegistry
import org.rosi_project.model_sync.model_join.representation.parser.antlr.AntlrBackedModelJoinParser
import org.rosi_project.model_sync.generator.util.ClassAndInstance
......@@ -50,25 +49,30 @@ class Generator(config: GeneratorConfig) {
})
//create the new classes for rsum and rsync
if (config.getCreate == Creation.rsync) {
if (config.getCreate == Creation.rolesync) {
sModels.foreach(sm => {
if (sm._2.obj != null) {
new SModelSyncInstanceService prepareModel(sm._1, sm._2)
}
new SModelSyncPreparationService prepareModel (sm._1)
new SModelAllGetterSetterPreparationService prepareModel (sm._1)
new SModelOnlySyncService prepareModel (sm._1)
new SModelSyncUiPreparationService prepareModel (sm._1, config.getModelConfigFromEcore(sm._1.getSourceName))
})
}
if (config.getCreate == Creation.rsum) {
if (config.getCreate == Creation.rolesum) {
sModels.foreach(sm => {
//create core stuff
new SModelSUMCorePreparationService prepareModel (sm._1)
//create join stuff
/*val modelJoinFile = config.getModelJoinFile
if (modelJoinFile != null && modelJoinFile.exists()) {
val expression = DefaultModelJoinParser.read(modelJoinFile).get
new SModelJoinPreparationService prepareModel(sm, expression)
}*/
//create view and query stuff
new SModelSUMPreparationService prepareModel (sm._1)
})
}
if (config.getCreate == Creation.rolecomb) {
sModels.foreach(sm => {
//create core stuff
new SModelSUMCorePreparationService prepareModel (sm._1)
//add sync stuff
new SModelOnlySyncService prepareModel (sm._1)
//create view and query stuff
new SModelSUMPreparationService prepareModel (sm._1)
})
......@@ -86,7 +90,7 @@ class Generator(config: GeneratorConfig) {
}
})
if (config.getCreate == Creation.rsum) {
if (config.getCreate != Creation.rolesync) {
//create join stuff
val modelJoinFile = config.getModelJoinFile
if (modelJoinFile != null && modelJoinFile.exists()) {
......
......@@ -15,7 +15,7 @@ case class GeneratorConfig(sources: Seq[String] = Seq(),
modelJoin: String = null, //can be more than one
syncLanguage: String = null) { //can be more than one
private var create = Creation.rsync
private var create = Creation.rolesync
def setCreate(d: Creation.Value): Unit = {
create = d
......
package org.rosi_project.model_sync.generator
import org.rosi_project.model_sync.generator.acr_model.SModel
import org.rosi_project.model_sync.generator.sync.{GetterSetterGeneratingVisitor, SyncEnhancingVisitor}
import org.rosi_project.model_sync.generator.sync.GetterSetterGeneratingVisitor
/** Simple service to perform all the necessary adaptions of an [[SModel]] to make applicable for
* synchronization.
*
* @author Rico Bergmann
*/
class SModelSyncPreparationService {
class SModelAllGetterSetterPreparationService {
/** Augments a [[SModel]] with the necessary methods and statements to make it usable in a
* synchronization context.
......@@ -18,8 +18,6 @@ class SModelSyncPreparationService {
def prepareModel(sModel: SModel): Unit = {
val getterSetterVisitor = new GetterSetterGeneratingVisitor
sModel.accept(getterSetterVisitor)
val syncNotificationVisitor = new SyncEnhancingVisitor()
sModel.accept(syncNotificationVisitor)
}
}
package org.rosi_project.model_sync.generator
import org.rosi_project.model_sync.generator.acr_model.SModel
import org.rosi_project.model_sync.generator.sync.SyncEnhancingVisitor
/** Simple service to perform only extension and method statement add.
*
* @author Christopher Werner
*/
class SModelOnlySyncService {
/** Augments a [[SModel]] with the necessary methods and statements to make it usable in a
* synchronization context.
*
* @param sModel the model to augment
*/
def prepareModel(sModel: SModel): Unit = {
val syncNotificationVisitor = new SyncEnhancingVisitor
sModel.accept(syncNotificationVisitor)
}
}
\ No newline at end of file
......@@ -22,7 +22,7 @@ class SyncEnhancingVisitor() extends SModelVisitor {
override def visit(sClass: SClass): Unit = {
//TODO: do not have in mind trait extends abstract extends trait hierarchy
if (sClass.isRootClass && !sClass.isInterface) {
if (sClass.isRootClass && !sClass.isInterface && !sClass.isInstanceOf[SRelationalCompartmentClass]) {
sClass.addParent(PredefSyncTypes.PLAYER_SYNC_STYPE)
}
}
......
......@@ -10,7 +10,7 @@ object ApplicationTest extends App {
//runCombinedTest(Creation.rsum)
//runShrinkingModel(Creation.rsum)
runTTC2019(Creation.rsync)
runTTC2019(Creation.rolecomb)
//runAllTests(Creation.rsum)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment