use of org.osate.aadl2.instance.InstanceObject in project osate-plugin by sireum.
the class ReachBackwardHandler method execute.
@SuppressWarnings("restriction")
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
final Boolean isImplDiagram = false;
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
List<DiagramElement> des = SelectionUtil.getSelectedDiagramElements(SelectionHelper.getDiagramSelection(), // getSelectedDiagramElem(event)
true);
List<InstanceObject> ios = des.stream().flatMap(de -> {
Object bo = de.getBusinessObject();
List<InstanceObject> io = new ArrayList<InstanceObject>();
if (bo != null && bo instanceof InstanceObject) {
io.add(((InstanceObject) bo));
}
return io.stream();
}).collect(Collectors.toList());
List<String> criterions = ios.stream().map(io -> io.getInstanceObjectPath()).collect(Collectors.toList());
if (!ios.isEmpty()) {
MessageConsole console = displayConsole("Awas Console");
try {
Aadl model = Util.getAir(ios.get(0).getSystemInstance(), true, console);
Model awasModel = org.sireum.awas.slang.Aadl2Awas$.MODULE$.apply(model);
SymbolTable st = org.sireum.awas.symbol.SymbolTable$.MODULE$.apply(awasModel, new ConsoleTagReporter());
FlowGraph<FlowNode, FlowEdge<FlowNode>> graph = org.sireum.awas.flow.FlowGraph$.MODULE$.apply(awasModel, st, false);
AwasGraph awasgraph = new AwasGraphImpl(graph, st);
String query = "t = reach backward " + "{" + String.join(",", criterions) + "}";
Map<String, Collector> qres = awasgraph.queryEvaluator(query);
if (qres.isEmpty()) {
MessageDialog.openError(window.getShell(), "Sireum", "Empty result");
} else {
final DiagramService diagramService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(DiagramService.class);
SystemInstance si = ios.get(0).getSystemInstance();
Resource resource = si.eResource();
List<Collector> lc = new ArrayList<Collector>(qres.values());
Set<AgeEditor> ads = AwasUtil.awasGraphUri2AgeDiagramEditor(lc.get(0).getGraph(), isImplDiagram, st, resource, diagramService);
AwasUtil.highlightDiagrams(ads, lc.get(0), isImplDiagram, st, resource);
}
} catch (URISyntaxException e1) {
// // TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e3) {
e3.printStackTrace();
String m2 = "Could not invoke visualizer. Please make sure Awas is configured correctly.\n\n" + e3.getLocalizedMessage();
MessageDialog.openError(window.getShell(), "Sireum", m2);
}
} else {
String m3 = "Please select a component or port from the instance diagram";
MessageDialog.openError(window.getShell(), "Sireum", m3);
}
return null;
}
use of org.osate.aadl2.instance.InstanceObject in project osate-plugin by sireum.
the class AwasServer method handleFindDef.
@Override
public Option<Protocol> handleFindDef(String hash, scala.collection.immutable.Set<String> uris) {
SymbolTable st = org.sireum.awas.symbol.SymbolTable$.MODULE$.apply(awasModel, new ConsoleTagReporter());
String uri = JavaConverters.asJavaCollectionConverter(uris).asJavaCollection().iterator().next();
Resource resource = si.eResource();
Option<org.sireum.awas.ast.Node> t = SymbolTableHelper.uri2Node(uri, st);
if (t.isDefined() && t.get().auriFrag().isDefined()) {
EObject eo = resource.getResourceSet().getEObject(URI.createURI(t.get().auriFrag().get()), true);
if (eo instanceof InstanceObject) {
org.osate.ui.UiUtil.gotoInstanceObjectSource(page, (InstanceObject) eo);
}
}
return Option.empty();
}
use of org.osate.aadl2.instance.InstanceObject in project osate-plugin by sireum.
the class ReachForwardHandler method execute.
@SuppressWarnings("restriction")
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
final Boolean isImplDiagram = false;
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
List<DiagramElement> des = SelectionUtil.getSelectedDiagramElements(SelectionHelper.getDiagramSelection(), // getSelectedDiagramElem(event)
true);
List<InstanceObject> ios = des.stream().flatMap(de -> {
Object bo = de.getBusinessObject();
List<InstanceObject> io = new ArrayList();
if (bo != null && bo instanceof InstanceObject) {
io.add(((InstanceObject) bo));
}
return io.stream();
}).collect(Collectors.toList());
List<String> criterions = ios.stream().map(io -> io.getInstanceObjectPath()).collect(Collectors.toList());
if (!ios.isEmpty()) {
MessageConsole console = displayConsole("Awas Console");
try {
Aadl model = Util.getAir(ios.get(0).getSystemInstance(), true, console);
Model awasModel = org.sireum.awas.slang.Aadl2Awas$.MODULE$.apply(model);
SymbolTable st = org.sireum.awas.symbol.SymbolTable$.MODULE$.apply(awasModel, new ConsoleTagReporter());
FlowGraph<FlowNode, FlowEdge<FlowNode>> graph = org.sireum.awas.flow.FlowGraph$.MODULE$.apply(awasModel, st, false);
AwasGraph awasgraph = new AwasGraphImpl(graph, st);
String query = "t = reach forward " + "{" + String.join(",", criterions) + "}";
Map<String, Collector> qres = awasgraph.queryEvaluator(query);
if (qres.isEmpty()) {
MessageDialog.openError(window.getShell(), "Sireum", "Empty result");
} else {
final DiagramService diagramService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(DiagramService.class);
SystemInstance si = ios.get(0).getSystemInstance();
Resource resource = si.eResource();
ComponentImplementation cii = InstanceUtil.getComponentImplementation(si, 0, null);
// cii.eResource().getResourceSet().get
List<Collector> lc = new ArrayList<Collector>(qres.values());
Set<AgeEditor> ads = AwasUtil.awasGraphUri2AgeDiagramEditor(lc.get(0).getGraph(), isImplDiagram, st, resource, diagramService);
AwasUtil.highlightDiagrams(ads, lc.get(0), isImplDiagram, st, resource);
}
} catch (URISyntaxException e1) {
// // TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e3) {
e3.printStackTrace();
String m2 = "Could not invoke visualizer. Please make sure Awas is configured correctly.\n\n" + e3.getLocalizedMessage();
MessageDialog.openError(window.getShell(), "Sireum", m2);
}
} else {
String m3 = "Please select a component or port from the instance diagram";
MessageDialog.openError(window.getShell(), "Sireum", m3);
}
return null;
}
use of org.osate.aadl2.instance.InstanceObject in project osate-plugin by sireum.
the class AwasServer method handleHighlight.
@SuppressWarnings("restriction")
@Override
public Option<Protocol> handleHighlight(scala.collection.immutable.Map<String, String> urisColor) {
Map<String, String> toHighlight = new HashMap<>(JavaConverters.mapAsJavaMapConverter(urisColor).asJava());
SymbolTable st = org.sireum.awas.symbol.SymbolTable$.MODULE$.apply(awasModel, new ConsoleTagReporter());
Resource resource = si.eResource();
// final DiagramService diagramService = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
// .getService(DiagramService.class);
// AgeDiagramEditor ade = diagramService.openOrCreateDiagramForBusinessObject(si, true, true);
// toHighlight.entrySet().stream()
Set<InstanceObject> ios = new HashSet<InstanceObject>();
Map<URI, String> iUri = toHighlight.entrySet().stream().flatMap(kkk -> {
Option<org.sireum.awas.ast.Node> t = SymbolTableHelper.uri2Node(kkk.getKey(), st);
Map<URI, String> res = new HashMap<URI, String>();
if (t.isDefined() && t.get().auriFrag().isDefined()) {
EObject eo = resource.getResourceSet().getEObject(URI.createURI(t.get().auriFrag().get()), true);
if (eo instanceof InstanceObject) {
res.put(new EObjectURIWrapper(eo).getUri(), kkk.getValue());
ios.add((InstanceObject) eo);
}
}
return res.entrySet().stream();
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Set<DiagramElement> des = new HashSet<DiagramElement>();
// des.addAll(AwasUtil.getAllDiagramElements(ade.getDiagramBehavior().getAgeDiagram()));
// Set<IProject> projects = new HashSet();
// projects.add(project);
AwasServerHandler.highlightInstanceDiagram(iUri, si);
return Option.empty();
}
use of org.osate.aadl2.instance.InstanceObject in project osate-plugin by sireum.
the class AwasServer method handleClear.
@SuppressWarnings("restriction")
@Override
public Option<Protocol> handleClear(scala.collection.immutable.Set<String> uris) {
Set<String> toClear = new HashSet<String>();
toClear.addAll(JavaConverters.setAsJavaSet(uris));
SymbolTable st = org.sireum.awas.symbol.SymbolTable$.MODULE$.apply(awasModel, new ConsoleTagReporter());
Resource resource = si.eResource();
Set<URI> iUri = toClear.stream().flatMap(mapper -> {
Option<org.sireum.awas.ast.Node> t = SymbolTableHelper.uri2Node(mapper, st);
Set<URI> res = new HashSet();
if (t.isDefined() && t.get().auriFrag().isDefined()) {
EObject eo = resource.getResourceSet().getEObject(URI.createURI(t.get().auriFrag().get()), true);
if (eo instanceof InstanceObject) {
res.add(new EObjectURIWrapper(eo).getUri());
}
}
return res.stream();
}).collect(Collectors.toSet());
// des.addAll(AwasUtil.getAllDiagramElements(ade.getDiagramBehavior().getAgeDiagram()));
// Set<IProject> projects = new HashSet();
// projects.add(project);
AwasServerHandler.clearInstanceDiagram(iUri, si);
return Option.empty();
}
Aggregations