improve metadataservice
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 61f739b..67f9d51 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -42,7 +42,6 @@
<jenkins.build.dependency>org.eclipse.osbp.xtext.report</jenkins.build.dependency>
<jenkins.build.dependency>org.eclipse.osbp.xtext.signal</jenkins.build.dependency>
<jenkins.build.dependency>org.eclipse.osbp.xtext.statemachine</jenkins.build.dependency>
- <jenkins.build.dependency>org.eclipse.osbp.xtext.strategy</jenkins.build.dependency>
<jenkins.build.dependency>org.eclipse.osbp.xtext.table</jenkins.build.dependency>
<jenkins.build.dependency>org.eclipse.osbp.xtext.topology</jenkins.build.dependency>
</jenkins.build.dependencies>
diff --git a/org.eclipse.osbp.dsl.metadata.service.feature/feature.xml b/org.eclipse.osbp.dsl.metadata.service.feature/feature.xml
index 12c2839..5a4f6be 100644
--- a/org.eclipse.osbp.dsl.metadata.service.feature/feature.xml
+++ b/org.eclipse.osbp.dsl.metadata.service.feature/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.dsl.metadata.service">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
index 5fe8fba..5073672 100644
--- a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
@@ -43,7 +43,6 @@
org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.topologydsl;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.entitymock;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.strategy;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.dialogdsl;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)",
@@ -51,7 +50,8 @@
org.eclipse.osbp.xtext.statemachine;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.menu;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.signal;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.preferences;bundle-version="0.9.0"
+ org.eclipse.osbp.preferences;bundle-version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.lib
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: javax.validation.constraints,
diff --git a/org.eclipse.osbp.dsl.metadata.service/build.properties b/org.eclipse.osbp.dsl.metadata.service/build.properties
index 3289c0e..a0f474b 100644
--- a/org.eclipse.osbp.dsl.metadata.service/build.properties
+++ b/org.eclipse.osbp.dsl.metadata.service/build.properties
@@ -1,9 +1,12 @@
source.. = src/
-output.. = bin/
-bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+bin.includes = about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html,\
+ META-INF/,\
.,\
epl-2.0.html,\
license.html,\
- OSGI-INF/org.eclipse.osbp.dsl.metadata.service.DSLBuilderParticipant.xml
+ OSGI-INF/
src.includes = about.properties, about.mappings, about.ini, about.html, epl-2.0.html,\
license.html
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
index d0bd2bb..1f43803 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
@@ -25,6 +25,7 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -41,20 +42,28 @@
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
import org.eclipse.osbp.dsl.semantic.dto.LDto;
import org.eclipse.osbp.dsl.semantic.entity.LEntity;
import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.osbp.ecview.dsl.extensions.SuperTypeCollector;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiBeanSlot;
import org.eclipse.osbp.ecview.semantic.uimodel.UiIDEView;
import org.eclipse.osbp.ecview.semantic.uimodel.UiModelPackage;
import org.eclipse.osbp.preferences.ProductConfiguration;
import org.eclipse.osbp.runtime.common.extender.IExtenderConstants;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
import org.eclipse.osbp.xtext.action.ActionPackage;
import org.eclipse.osbp.xtext.action.ActionToolbar;
import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationPackage;
import org.eclipse.osbp.xtext.authorizationdsl.Role;
+import org.eclipse.osbp.xtext.blip.Blip;
+import org.eclipse.osbp.xtext.blip.BlipPackage;
import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
import org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant;
import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
@@ -62,11 +71,19 @@
import org.eclipse.osbp.xtext.chart.Chart;
import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeBean;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
import org.eclipse.osbp.xtext.dialogdsl.Dialog;
import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
import org.eclipse.osbp.xtext.dialogdsl.DialogPackage;
@@ -76,12 +93,41 @@
import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDialogHook;
import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
import org.eclipse.osbp.xtext.i18n.I18NKeyGenerator;
+import org.eclipse.osbp.xtext.menu.MenuCategory;
+import org.eclipse.osbp.xtext.menu.MenuDslPackage;
+import org.eclipse.osbp.xtext.menu.MenuEntry;
+import org.eclipse.osbp.xtext.menu.MenuTree;
import org.eclipse.osbp.xtext.organizationdsl.Organization;
import org.eclipse.osbp.xtext.perspective.Perspective;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBrowser;
+import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDashboard;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
+import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
+import org.eclipse.osbp.xtext.perspective.PerspectiveKanban;
+import org.eclipse.osbp.xtext.perspective.PerspectiveOrganization;
import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
+import org.eclipse.osbp.xtext.perspective.PerspectivePart;
+import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
+import org.eclipse.osbp.xtext.perspective.PerspectiveReport;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSaiku;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTitle;
+import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
+import org.eclipse.osbp.xtext.perspective.PerspectiveView;
+import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
+import org.eclipse.osbp.xtext.reportdsl.DatamartContainer;
+import org.eclipse.osbp.xtext.reportdsl.Element;
import org.eclipse.osbp.xtext.reportdsl.Report;
import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
+import org.eclipse.osbp.xtext.reportdsl.ReportDesignTemplate;
import org.eclipse.osbp.xtext.reportdsl.ReportPackage;
import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
import org.eclipse.osbp.xtext.signal.SignalDefinition;
@@ -91,6 +137,7 @@
import org.eclipse.osbp.xtext.table.TableDSLPackage;
import org.eclipse.osbp.xtext.table.TableGrid;
import org.eclipse.osbp.xtext.table.TablePackage;
+import org.eclipse.osbp.xtext.table.TableTable;
import org.eclipse.osbp.xtext.topologydsl.Topology;
import org.eclipse.osbp.xtext.topologydsl.TopologyDSLPackage;
import org.eclipse.osbp.xtext.topologydsl.TopologyPackage;
@@ -100,6 +147,7 @@
import org.eclipse.persistence.jpa.Archive;
import org.eclipse.persistence.jpa.PersistenceProvider;
import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmTypeReference;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.util.Pair;
import org.eclipse.xtext.util.Tuples;
@@ -979,6 +1027,251 @@
}
return null;
}
+
+ @Override
+ public boolean isMenuCategoryAuthorized(String fqn, IUserAccessService userAccessService) {
+ Map<String, Boolean> authorized = new HashMap<>();
+ MenuCategory category = (MenuCategory)getMetadata(fqn, MenuDslPackage.Literals.MENU_CATEGORY);
+ for(MenuTree tree:category.getTrees()) {
+ isMenuTreeAuthorized(tree, userAccessService, authorized);
+ }
+ return getAuthorization(authorized);
+ }
+
+ @Override
+ public boolean isMenuTreeAuthorized(String fqn, IUserAccessService userAccessService) {
+ Map<String, Boolean> authorized = new HashMap<>();
+ MenuTree tree = (MenuTree)getMetadata(fqn, MenuDslPackage.Literals.MENU_TREE);
+ isMenuTreeAuthorized(tree, userAccessService, authorized);
+ return getAuthorization(authorized);
+ }
+
+ private void isMenuTreeAuthorized(MenuTree tree, IUserAccessService userAccessService,
+ Map<String, Boolean> authorized) {
+ for(MenuEntry entry:tree.getEntries()) {
+ if(entry.isHasPerspective() && entry.getPerspective() != null) {
+ for(PerspectiveElement element:entry.getPerspective().getElements()) {
+ traverseModel(element, userAccessService, authorized);
+ }
+ } else if(entry.isHasProcess() && entry.getProcess() != null) {
+ authorized.put(entry.getProcess().getName(), userAccessService.isGranted(Group.PROCESS, Action.STARTABLE, entry.getProcess().getName()));
+ }
+ }
+ }
+
+ @Override
+ public boolean isPerspectiveAuthorized(String fqn, IUserAccessService userAccessService) {
+ Map<String, Boolean> authorized = new HashMap<>();
+ Perspective perspective = (Perspective)getMetadata(fqn, PerspectiveDslPackage.Literals.PERSPECTIVE);
+ for(PerspectiveElement element:perspective.getElements()) {
+ traverseModel(element, userAccessService, authorized);
+ }
+ return getAuthorization(authorized);
+ }
+
+ @Override
+ public boolean isPerspectiveElementAuthorized(EObject modelElement, IUserAccessService userAccessService) {
+ Map<String, Boolean> authorized = new HashMap<>();
+ traverseModel((PerspectiveElement)modelElement, userAccessService, authorized);
+ return getAuthorization(authorized);
+ }
+
+ private void traverseModel(PerspectiveElement modelElement, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if (modelElement instanceof PerspectivePart) {
+ PerspectiveView view = ((PerspectivePart)modelElement).getView();
+ if(view != null) {
+ isViewAuthorized(view, userAccessService, authorized);
+ }
+ } else {
+ for (PerspectiveElement element : modelElement.getElements()) {
+ traverseModel(element, userAccessService, authorized);
+ }
+ }
+ }
+
+ private boolean getAuthorization(Map<String, Boolean> authorized) {
+ int vetoCount = 0;
+ for(Entry<String, Boolean> auth:authorized.entrySet()) {
+ if(!auth.getValue()) {
+ vetoCount ++;
+ }
+ }
+ return authorized.isEmpty() || vetoCount < authorized.size();
+ }
+
+ private void isViewAuthorized(PerspectiveView view, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(view instanceof PerspectiveSelection) {
+ isTableAuthorized(((PerspectiveSelection)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveTable) {
+ isTableAuthorized(((PerspectiveTable)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveGrid) {
+ isTableAuthorized(((PerspectiveGrid)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveChart) {
+ isChartAuthorized(((PerspectiveChart)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveReport) {
+ isReportAuthorized(((PerspectiveReport)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveDialog) {
+ isDialogAuthorized(((PerspectiveDialog)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveKanban) {
+ isDtoAuthorized(((PerspectiveKanban)view).getDtoRef(), userAccessService, authorized);
+ isDialogAuthorized(((PerspectiveKanban)view).getCardRef(), userAccessService, authorized);
+ isDialogAuthorized(((PerspectiveKanban)view).getDialogRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveSearch) {
+ isDtoAuthorized(((PerspectiveSearch)view).getDtoRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveDataInterchange) {
+ isDatainterchangeGroupAuthorized(((PerspectiveDataInterchange)view).getRef(), userAccessService, authorized);
+ } else if(view instanceof PerspectiveOrganization) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveTopology) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveBPMN) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveWelcome) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveTitle) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveDashboard) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveBrowser) {
+ authorized.put(view.toString(), true);
+ } else if(view instanceof PerspectiveSaiku) {
+ authorized.put(view.toString(), true);
+ } else {
+ throw new IllegalViewException("no such view class:"+view.toString());
+ }
+ }
+
+ private void isDatainterchangeGroupAuthorized(DataInterchangeGroup group, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ for(DataInterchange interchange:group.getDatInts()) {
+ for(DataInterchangeBean path:interchange.getPath()) {
+ isEntityAuthorized(path.getEntity(), userAccessService, authorized);
+ }
+ }
+ }
+
+ private void isReportAuthorized(Report report, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(report != null) {
+ isDatamartAuthorized(report.getDatamartRef(), userAccessService, authorized);
+ if(report.getDesign() instanceof ReportDesignTemplate) {
+ if(((ReportDesignTemplate)report.getDesign()).getHeader() != null) {
+ for(Element element : ((ReportDesignTemplate)report.getDesign()).getHeader().getElements()) {
+ if(element instanceof DatamartContainer) {
+ isDatamartAuthorized(((DatamartContainer)element).getDatamartRef(), userAccessService, authorized);
+ }
+ }
+ }
+ if(((ReportDesignTemplate)report.getDesign()).getDetail() != null) {
+ for(Element element : ((ReportDesignTemplate)report.getDesign()).getDetail().getElements()) {
+ if(element instanceof DatamartContainer) {
+ isDatamartAuthorized(((DatamartContainer)element).getDatamartRef(), userAccessService, authorized);
+ }
+ }
+ }
+ if(((ReportDesignTemplate)report.getDesign()).getFooter() != null) {
+ for(Element element : ((ReportDesignTemplate)report.getDesign()).getFooter().getElements()) {
+ if(element instanceof DatamartContainer) {
+ isDatamartAuthorized(((DatamartContainer)element).getDatamartRef(), userAccessService, authorized);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void isDialogAuthorized(Dialog dialog, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(dialog != null) {
+ isDtoAuthorized(dialog.getDto(), userAccessService, authorized);
+ if(dialog.getUiView() != null) {
+ for(UiBeanSlot slot:dialog.getUiView().getBeanSlots()) {
+ if(hasSupertype(slot.getJvmType(), IDto.class)) {
+ authorized.put(slot.getJvmType().getQualifiedName(), userAccessService.isGranted(Group.DTO, Action.READABLE, slot.getJvmType().getQualifiedName()));
+ }
+ }
+ }
+ }
+ }
+
+ private void isChartAuthorized(Chart chart, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(chart != null) {
+ isDatamartAuthorized(chart.getSource().getDatamartRef(), userAccessService, authorized);
+ }
+ }
+
+ private void isTableAuthorized(Table table, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(table != null) {
+ if(table.getTabletype() instanceof TableTable) {
+ isDatamartAuthorized(((TableTable)table.getTabletype()).getSource().getDatamartRef(), userAccessService, authorized);
+ } else if(table.getTabletype() instanceof TableGrid) {
+ isDtoAuthorized(((TableGrid)table.getTabletype()).getSource().getDtoSource(), userAccessService, authorized);
+ } else {
+ throw new IllegalViewException("no such table option:"+table.getTabletype().toString());
+ }
+ }
+ }
+
+ private void isDtoAuthorized(LDto dto, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(dto != null) {
+ String dtoFqn = getFullyQualifiedName(dto);
+ authorized.put(dtoFqn, userAccessService.isGranted(Group.DTO, Action.READABLE, dtoFqn));
+ }
+ }
+
+ private void isDatamartAuthorized(DatamartDefinition datamart, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(datamart != null) {
+ if(datamart.getSource() instanceof DatamartEntity) {
+ isEntityAuthorized(((DatamartEntity)datamart.getSource()).getEntityRef(), userAccessService, authorized);
+ } else if(datamart.getSource() instanceof DatamartCube) {
+ isCubeAuthorized(((DatamartCube)datamart.getSource()).getCubeRef(), userAccessService, authorized);
+ } else if(datamart.getSource() instanceof DatamartTask) {
+ authorized.put(datamart.toString(), true);
+ } else {
+ throw new IllegalViewException("no such datamart source:"+datamart.getSource().toString());
+ }
+ }
+ }
+
+ private void isCubeAuthorized(CubeType cube, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(cube != null) {
+ LEntity cubeEntity = cube.getCubeTypeEntity().getEntityRef().getEntityValue();
+ isEntityAuthorized(cubeEntity, userAccessService, authorized);
+ for(CubeDimensionUsage dimension:cube.getCubeTypeEntity().getDimensionUsages()) {
+ for(CubeHierarchy hierarchy:dimension.getSourceValue().getHierarchies()) {
+ if(hierarchy.getCubeDimEntity() != null) {
+ if(hierarchy.getCubeDimEntity().getEntityRef() != null) {
+ isEntityAuthorized(hierarchy.getCubeDimEntity().getEntityRef().getEntityValue(), userAccessService, authorized);
+ }
+ if(hierarchy.getCubeDimEntity().getDimEntity() != null && hierarchy.getCubeDimEntity().getDimEntity().getEntityRef() != null) {
+ isEntityAuthorized(hierarchy.getCubeDimEntity().getDimEntity().getEntityRef().getEntityValue(), userAccessService, authorized);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void isEntityAuthorized(LEntity entity, IUserAccessService userAccessService, Map<String, Boolean> authorized) {
+ if(entity != null) {
+ String entityFqn = getFullyQualifiedName(entity);
+ authorized.put(entityFqn, userAccessService.isGranted(Group.ENTITY, Action.READABLE, entityFqn));
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public boolean hasSupertype(JvmTypeReference typeReference, Class<?> clz) {
+ SuperTypeCollector collector = new SuperTypeCollector();
+ Set<String> result = new LinkedHashSet<>();
+ collector.collectSuperTypes(typeReference, new SuperTypeCollector.SuperTypeAcceptor() {
+ @Override
+ public boolean accept(JvmTypeReference superType, int distance) {
+ if(superType.getQualifiedName().equals(clz.getName())) {
+ result.add(superType.getQualifiedName());
+ }
+ return true;
+ }
+ });
+ return !result.isEmpty();
+ }
}
/**
@@ -1057,6 +1350,8 @@
return getDialogGroupFQN(eObject);
} else if (eObject instanceof FunctionLibraryDialogHook) {
return getDialogHookFQN(eObject);
+ } else if (eObject instanceof Blip) {
+ return getBlipFQN(eObject);
}
throw new IllegalArgumentException(
IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -1304,6 +1599,22 @@
}
/**
+ * Gets the blip FQN.
+ *
+ * @param eObject
+ * the e object
+ * @return the action FQN
+ */
+ private static String getBlipFQN(EObject eObject) {
+ Blip blip = (Blip) eObject;
+ if (blip == null) {
+ return "";
+ }
+ BlipPackage pkg = (BlipPackage) blip.eContainer();
+ return pkg.getName() + "." + blip.getName();
+ }
+
+ /**
* Gets the functionLibraryInitializationGroup FQN.
*
* @param eObject
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/IllegalViewException.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/IllegalViewException.java
new file mode 100644
index 0000000..afdb8dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/IllegalViewException.java
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.dsl.metadata.service;
+
+public class IllegalViewException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public IllegalViewException() {
+ super();
+ }
+
+ public IllegalViewException(String var1, Throwable var2, boolean var3, boolean var4) {
+ super(var1, var2, var3, var4);
+ }
+
+ public IllegalViewException(String var1, Throwable var2) {
+ super(var1, var2);
+ }
+
+ public IllegalViewException(String var1) {
+ super(var1);
+ }
+
+ public IllegalViewException(Throwable var1) {
+ super(var1);
+ }
+
+}
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
index 332a082..6ebc14e 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
@@ -36,7 +36,6 @@
import org.eclipse.osbp.xtext.reportdsl.ReportDSLBundleSpaceStandaloneSetup;
import org.eclipse.osbp.xtext.signal.SignalDSLBundleSpaceStandaloneSetup;
import org.eclipse.osbp.xtext.statemachine.StatemachineDSLBundleSpaceStandaloneSetup;
-import org.eclipse.osbp.xtext.strategy.StrategyDSLBundleSpaceStandaloneSetup;
import org.eclipse.osbp.xtext.table.TableDSLBundleSpaceStandaloneSetup;
import org.eclipse.osbp.xtext.topologydsl.TopologyDSLBundleSpaceStandaloneSetup;
@@ -72,7 +71,6 @@
ReportDSLBundleSpaceStandaloneSetup.doSetup();
SignalDSLBundleSpaceStandaloneSetup.doSetup();
StatemachineDSLBundleSpaceStandaloneSetup.doSetup();
- StrategyDSLBundleSpaceStandaloneSetup.doSetup();
TableDSLBundleSpaceStandaloneSetup.doSetup();
TopologyDSLBundleSpaceStandaloneSetup.doSetup();
}