Преглед на файлове

#366 : AbstractSGraphModelGenerator might be used for other model
elements also (see AbstractSExecModelGenerator &
AbstractSCTUnitGenerator)

Johannes Dicks преди 9 години
родител
ревизия
fa61f3c3bc
променени са 1 файла, в които са добавени 22 реда и са изтрити 8 реда
  1. 22 8
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSGraphModelGenerator.java

+ 22 - 8
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractSGraphModelGenerator.java

@@ -61,21 +61,26 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 		super();
 	}
 
+	//FIXME this is not nice...
 	@Override
 	protected void finalize() throws Throwable {
-		log.close();
+		if(log!=null)
+			log.close();
 		super.finalize();
 	}
 
 	public final void generate(GeneratorEntry entry) {
 		getInjector(entry).injectMembers(this);
 
-		EObject element = entry.getElementRef();
-		if (element == null || !(element instanceof Statechart)) {
-			log.writeToConsole("No Statechart selected in genmodel (" + entry + ")");
-			return;
+		boolean canHandle = false;
+		canHandle = canHandle(entry);
+		if (canHandle) {
+			doGenerate(entry);
 		}
-		Statechart statechart = (Statechart) element;
+	}
+
+	protected void doGenerate(GeneratorEntry entry) {
+		Statechart statechart = (Statechart) entry.getElementRef();
 		try {
 			log.writeToConsole(String.format("Generating Statechart %s ...", statechart.getName()));
 			prepareGenerator(entry);
@@ -89,6 +94,16 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 		}
 	}
 
+	protected boolean canHandle(GeneratorEntry entry) {
+		boolean canHandle=false;
+		EObject elementRef = entry.getElementRef();
+		if (elementRef == null || !(elementRef instanceof Statechart)) {
+			log.writeToConsole("No Statechart selected in genmodel (" + entry + ")");
+			canHandle = true;
+		}
+		return canHandle;
+	}
+
 	/**
 	 * override this method to do any setup needed before generation
 	 */
@@ -105,7 +120,7 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 	private Injector injector;
 
 	protected Injector createInjector(GeneratorEntry entry) {
-		//FIXME !!! right injector, why? 
+		// FIXME !!! right injector, why?
 		return DomainRegistry.getDomainDescriptor(entry.getElementRef()).getDomainInjectorProvider()
 				.getSequencerInjector(getOverridesModule(entry));
 	}
@@ -129,5 +144,4 @@ public abstract class AbstractSGraphModelGenerator implements ISCTGenerator {
 		}
 		return injector;
 	}
-
 }