aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui
diff options
context:
space:
mode:
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui')
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.classpath8
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.project34
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/META-INF/MANIFEST.MF25
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/bin/.gitignore1
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/build.properties5
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/plugin.xml25
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/Activator.java44
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/ReliabilityAnalysisHandler.xtend128
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/.gitignore3
10 files changed, 280 insertions, 0 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.classpath b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.classpath
new file mode 100644
index 00000000..428337e5
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.classpath
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.project b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.project
new file mode 100644
index 00000000..98f85839
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.faulttree.ui</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.settings/org.eclipse.jdt.core.prefs b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/META-INF/MANIFEST.MF b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..59c1c5f7
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Ui
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.faulttree.ui;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-Activator: hu.bme.mit.inf.dslreasoner.faulttree.ui.Activator
7Require-Bundle: org.eclipse.ui,
8 org.eclipse.core.runtime,
9 com.google.guava,
10 org.eclipse.xtext.xbase.lib,
11 org.eclipse.xtend.lib,
12 org.eclipse.xtend.lib.macro,
13 org.eclipse.core.resources,
14 org.eclipse.emf.ecore,
15 org.eclipse.viatra.query.runtime,
16 org.eclipse.viatra.query.runtime.rete,
17 org.eclipse.viatra.query.runtime.localsearch,
18 hu.bme.mit.inf.dslreasoner.logic.model,
19 hu.bme.mit.inf.dslreasoner.faulttree.components,
20 hu.bme.mit.inf.dslreasoner.faulttree.transformation,
21 hu.bme.mit.inf.dslreasoner.application,
22 hu.bme.mit.inf.dslreasoner.application.ui
23Bundle-RequiredExecutionEnvironment: JavaSE-1.8
24Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.faulttree.ui
25Bundle-ActivationPolicy: lazy
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/bin/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/bin/.gitignore
new file mode 100644
index 00000000..1c0a02cd
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/bin/.gitignore
@@ -0,0 +1 @@
/hu/
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/build.properties b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/build.properties
new file mode 100644
index 00000000..e9863e28
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/build.properties
@@ -0,0 +1,5 @@
1source.. = src/
2output.. = bin/
3bin.includes = META-INF/,\
4 .,\
5 plugin.xml
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/plugin.xml b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/plugin.xml
new file mode 100644
index 00000000..8a01c50c
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/plugin.xml
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<?eclipse version="3.4"?>
3<plugin>
4 <extension
5 point="org.eclipse.ui.menus">
6 <menuContribution
7 allPopups="false"
8 locationURI="popup:hu.bme.mit.inf.dslreasoner.application.ui.menu?after=hu.bme.mit.inf.dslreasoner.application.ui.executescript">
9 <command
10 commandId="hu.bme.mit.inf.dslreasoner.faulttree.ui.reliabilityanalysis"
11 label="Reliability Analysis..."
12 style="push">
13 </command>
14 </menuContribution>
15 </extension>
16 <extension
17 point="org.eclipse.ui.commands">
18 <command
19 defaultHandler="hu.bme.mit.inf.dslreasoner.faulttree.ui.handler.ReliabilityAnalysisHandler"
20 id="hu.bme.mit.inf.dslreasoner.faulttree.ui.reliabilityanalysis"
21 name="Execute Reliability Analysis">
22 </command>
23 </extension>
24
25</plugin>
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/Activator.java b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/Activator.java
new file mode 100644
index 00000000..4363fc63
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/Activator.java
@@ -0,0 +1,44 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.ui;
2
3import org.eclipse.ui.plugin.AbstractUIPlugin;
4import org.osgi.framework.BundleContext;
5
6/**
7 * The activator class controls the plug-in life cycle
8 */
9public class Activator extends AbstractUIPlugin {
10
11 // The plug-in ID
12 public static final String PLUGIN_ID = "hu.bme.mit.inf.dslreasoner.faulttree.ui"; //$NON-NLS-1$
13
14 // The shared instance
15 private static Activator plugin;
16
17 /**
18 * The constructor
19 */
20 public Activator() {
21 }
22
23 @Override
24 public void start(BundleContext context) throws Exception {
25 super.start(context);
26 plugin = this;
27 }
28
29 @Override
30 public void stop(BundleContext context) throws Exception {
31 plugin = null;
32 super.stop(context);
33 }
34
35 /**
36 * Returns the shared instance
37 *
38 * @return the shared instance
39 */
40 public static Activator getDefault() {
41 return plugin;
42 }
43
44}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/ReliabilityAnalysisHandler.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/ReliabilityAnalysisHandler.xtend
new file mode 100644
index 00000000..5fa89148
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/src/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/ReliabilityAnalysisHandler.xtend
@@ -0,0 +1,128 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.ui.handler
2
3import hu.bme.mit.inf.dslreasoner.application.execution.EclipseBasedProgressMonitor
4import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.CftModel
5import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.TransformationDefinition
6import hu.bme.mit.inf.dslreasoner.faulttree.transformation.cft2ft.Cft2FtTransformation
7import hu.bme.mit.inf.dslreasoner.faulttree.transformation.ecore2cft.Ecore2CftTransformation
8import hu.bme.mit.inf.dslreasoner.faulttree.transformation.solver.FtAnalysisObjective
9import hu.bme.mit.inf.dslreasoner.faulttree.transformation.solver.ReliabilityResult
10import hu.bme.mit.inf.dslreasoner.faulttree.transformation.solver.StormDftConfiguration
11import hu.bme.mit.inf.dslreasoner.faulttree.transformation.solver.StormDftSolver
12import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
13import hu.bme.mit.inf.dslreasoner.workspace.ProjectWorkspace
14import org.eclipse.core.commands.AbstractHandler
15import org.eclipse.core.commands.ExecutionEvent
16import org.eclipse.core.commands.ExecutionException
17import org.eclipse.core.resources.IFile
18import org.eclipse.core.resources.IProject
19import org.eclipse.core.resources.IResource
20import org.eclipse.core.runtime.IProgressMonitor
21import org.eclipse.core.runtime.NullProgressMonitor
22import org.eclipse.emf.common.util.URI
23import org.eclipse.emf.ecore.resource.Resource
24import org.eclipse.emf.ecore.resource.ResourceSet
25import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
26import org.eclipse.swt.widgets.MessageBox
27import org.eclipse.ui.PlatformUI
28import org.eclipse.ui.handlers.HandlerUtil
29import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine
30import org.eclipse.viatra.query.runtime.emf.EMFScope
31
32class ReliabilityAnalysisHandler extends AbstractHandler {
33
34 override execute(ExecutionEvent event) throws ExecutionException {
35 val selection = HandlerUtil.getCurrentStructuredSelection(event)
36 val resourceSet = new ResourceSetImpl
37 val iterator = selection.iterator
38 var IProject targetProject = null
39 var Resource targetResource = null
40 var TransformationDefinition transformationDefinition = null
41 while (iterator.hasNext) {
42 val selectedElement = iterator.next
43 if (selectedElement instanceof IFile) {
44 val resource = tryLoadResource(resourceSet, selectedElement)
45 if (resource !== null && !resource.contents.empty) {
46 val rootElement = resource.contents.head
47 if (rootElement instanceof CftModel) {
48 if (rootElement.transformationDefinitions.empty) {
49 throw new IllegalArgumentException("Selected cft file is not a transformation definition.")
50 }
51 if (transformationDefinition !== null) {
52 throw new IllegalArgumentException(
53 "Only a single transformation definition may be selected.")
54 }
55 transformationDefinition = rootElement.transformationDefinitions.head
56 } else {
57 if (targetResource !== null) {
58 throw new IllegalArgumentException("Only a single architecture model may be selected.")
59 }
60 targetResource = resource
61 targetProject = selectedElement.project
62 }
63 }
64 }
65 }
66 if (targetResource === null || targetResource === null) {
67 throw new IllegalArgumentException(
68 "A transformation definition and an architecture model must be selected.")
69 }
70 runAnalysis(transformationDefinition, targetResource, targetProject, new NullProgressMonitor)
71 null
72 }
73
74 private static def tryLoadResource(ResourceSet resourceSet, IFile file) {
75 val fullPath = file.fullPath.toString
76 val uri = URI.createPlatformResourceURI(fullPath, true)
77 try {
78 resourceSet.getResource(uri, true)
79 } catch (RuntimeException e) {
80 null
81 }
82 }
83
84 private def runAnalysis(TransformationDefinition transformationDefinition, Resource resource, IProject project,
85 IProgressMonitor monitor) {
86 val workspace = createWorkspace(project, monitor)
87 val cft = createComponentFaultTree(transformationDefinition, resource)
88 workspace.writeModel(cft, "cft.xmi")
89 val cft2ft = new Cft2FtTransformation
90 val ft = cft2ft.createFaultTree(cft)
91 workspace.writeModel(ft, "ft.xmi")
92 val solver = new StormDftSolver
93 val config = new StormDftConfiguration
94 config.progressMonitor = new EclipseBasedProgressMonitor(monitor)
95 config.documentationLevel = DocumentationLevel.NORMAL
96 config.objective = FtAnalysisObjective.MTTF
97 val result = solver.solve(ft, config, workspace)
98 displayResult(result)
99 }
100
101 private def createWorkspace(IProject project, IProgressMonitor monitor) {
102 val folder = project.getFolder("debug")
103 if (!folder.exists) {
104 folder.create(IResource.NONE, true, monitor)
105 }
106 val path = folder.fullPath.toString
107 val uri = URI.createPlatformResourceURI(path, true)
108 val workspace = new ProjectWorkspace(uri.toString, "")
109 workspace.initAndClear
110 workspace
111 }
112
113 private def createComponentFaultTree(TransformationDefinition transformationDefinition, Resource resource) {
114 val queryEngine = AdvancedViatraQueryEngine.createUnmanagedEngine(new EMFScope(resource))
115 try {
116 val ecore2cft = new Ecore2CftTransformation(transformationDefinition, queryEngine)
117 ecore2cft.createComponentFaultTree
118 } finally {
119 queryEngine.dispose
120 }
121 }
122
123 private def displayResult(ReliabilityResult result) {
124 val messageBox = new MessageBox(PlatformUI.workbench.activeWorkbenchWindow.shell)
125 messageBox.message = result.toString
126 messageBox.open
127 }
128}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/.gitignore b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/.gitignore
new file mode 100644
index 00000000..b271af76
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.ui/xtend-gen/hu/bme/mit/inf/dslreasoner/faulttree/ui/handler/.gitignore
@@ -0,0 +1,3 @@
1/.ReliabilityAnalysisHandler.java._trace
2/.ReliabilityAnalysisHandler.xtendbin
3/ReliabilityAnalysisHandler.java