From 769b900ed48916536eeb61391dd69d0905fce9f3 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sat, 3 Mar 2018 16:24:38 -0500 Subject: Generation is executed in a job --- .../application/execution/ScriptExecutor.xtend | 55 ++++++++++++++++++---- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend') diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend index 37e64d98..d8a37184 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend @@ -26,6 +26,9 @@ import java.util.LinkedHashMap import java.util.Optional import org.eclipse.emf.common.util.URI import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.DocumentLevelSpecification +import org.eclipse.core.runtime.jobs.Job +import org.eclipse.core.runtime.IProgressMonitor +import org.eclipse.core.runtime.Status class ScriptExecutor { val parser = new ApplicationConfigurationParser @@ -37,15 +40,30 @@ class ScriptExecutor { * Executes a script */ public def executeScript(URI uri) { - val script = parser.parse(uri) - script.executeScript + val job = new Job('''Model Generation: «uri.lastSegment»''') { + override protected run(IProgressMonitor monitor) { + try{ + monitor.subTask('''Loading script''') + val script = parser.parse(uri) + script.executeScript(monitor) + return Status.OK_STATUS; + } catch(Exception e) { + return Status.OK_STATUS + } + } + } + job.setUser(true); + job.schedule(); } - public def executeScript(ConfigurationScript script) { + public def executeScript(ConfigurationScript script, IProgressMonitor monitor) { script.activateAllEPackageReferences val tasks = script.commands.filter(Task) - for(task : tasks.filterNull) { - task.execute + + for(taskIndex : 0..1» «taskIndex+1»«ENDIF»: «task.name»''',task.totalWork) + task.execute(monitor) } } @@ -75,12 +93,33 @@ class ScriptExecutor { // } } - def public dispatch execute(GenerationTask task) { + def public dispatch execute(GenerationTask task, IProgressMonitor monitor) { val generationTaskExecutor = new GenerationTaskExecutor - generationTaskExecutor.executeGenerationTask(task,this) + generationTaskExecutor.executeGenerationTask(task,this,monitor) + } + + def public dispatch execute(Task task, IProgressMonitor monitor) { + throw new IllegalArgumentException('''Unsupported task type: «task.class.simpleName»!''') } - def public dispatch execute(Task task) { + /** + * Mapping time = 100 + * Solving = 1000 * runs + * Visualisation = runs * number * 100 + */ + def protected dispatch getTotalWork(GenerationTask task) { + val runs = if(task.runSpecified) { task.runs } else { 1 } + val number = if(task.numberSpecified) { task.number } else { 1 } + return 100 + runs*1000 +runs*number*100 + } + def protected dispatch getTotalWork(Task task) { + throw new IllegalArgumentException('''Unsupported task type: «task.class.simpleName»!''') + } + + def protected dispatch getName(GenerationTask task) { + '''Model Generation''' + } + def protected dispatch getName(Task task) { throw new IllegalArgumentException('''Unsupported task type: «task.class.simpleName»!''') } -- cgit v1.2.3-54-g00ecf