catch up with dev
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b9f0a46
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+**/bin/
+**/target/
+**._trace
+**git.properties
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+**/*.xtextbin
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index bcaceb9..0d22506 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -17,6 +17,6 @@
<!-- DO NOT EDIT BELOW THIS LINE -->
<jenkins.build.dependencies>
<jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
- <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
</jenkins.build.dependencies>
</jenkins>
diff --git a/mavenizing_started b/mavenizing_started
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mavenizing_started
diff --git a/org.eclipse.osbp.ui.api.feature/.gitignore b/org.eclipse.osbp.ui.api.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.ui.api.feature/.project b/org.eclipse.osbp.ui.api.feature/.project
index 78ec128..a60e8d8 100644
--- a/org.eclipse.osbp.ui.api.feature/.project
+++ b/org.eclipse.osbp.ui.api.feature/.project
@@ -16,12 +16,12 @@
</arguments>
</buildCommand>
<buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
- <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
diff --git a/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.ui.api.feature/feature.xml b/org.eclipse.osbp.ui.api.feature/feature.xml
index 5866cf6..6740bce 100644
--- a/org.eclipse.osbp.ui.api.feature/feature.xml
+++ b/org.eclipse.osbp.ui.api.feature/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.ui.api.feature"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.ui.api">
<description>
%description
diff --git a/org.eclipse.osbp.ui.api/.classpath b/org.eclipse.osbp.ui.api/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.ui.api/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ui.api/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ui.api/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.ui.api/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.ui.api/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ui.api/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.ui.api/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ui.api/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
index fcfcbfe..c47c746 100644
--- a/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
@@ -4,17 +4,23 @@
Bundle-SymbolicName: org.eclipse.osbp.ui.api
Bundle-Version: 0.9.0.qualifier
Require-Bundle: org.eclipse.core.runtime,
- com.vaadin.server;bundle-version="7.5.7"
+ com.vaadin.server;bundle-version="7.7.6",
+ org.eclipse.osbp.runtime.common,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.e4.core.contexts
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.osbp.ui.api.complexdatacontainer;version="0.9.0",
org.eclipse.osbp.ui.api.contextfunction;version="0.9.0";uses:="com.vaadin.ui",
org.eclipse.osbp.ui.api.customfields;version="0.9.0";uses:="com.vaadin.server,org.eclipse.e4.core.services.events,com.vaadin.ui",
org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.e4;version="0.9.0",
org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
org.eclipse.osbp.ui.api.layout;version="0.9.0",
+ org.eclipse.osbp.ui.api.menu;version="0.9.0",
org.eclipse.osbp.ui.api.message;version="0.9.0",
org.eclipse.osbp.ui.api.metadata;version="0.9.0";uses:="org.eclipse.emf.ecore,org.eclipse.osbp.dsl.xtext.types.bundles",
org.eclipse.osbp.ui.api.organization;version="0.9.0",
+ org.eclipse.osbp.ui.api.perspective;version="0.9.0",
org.eclipse.osbp.ui.api.pos;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
org.eclipse.osbp.ui.api.report;version="0.9.0",
org.eclipse.osbp.ui.api.statemachine;version="0.9.0";
@@ -31,20 +37,23 @@
org.eclipse.osbp.ui.api.useraccess;version="0.9.0";uses:="org.eclipse.osbp.dsl.common.datatypes,org.eclipse.osbp.ui.api.complexdatacontainer,org.eclipse.osbp.ui.api.userfilter",
org.eclipse.osbp.ui.api.userfilter;version="0.9.0",
org.eclipse.osbp.ui.initialization;version="0.9.0"
-Import-Package: javax.validation;version="1.1.0.Final",
+Import-Package: com.vaadin.ui,
+ javax.validation;version="1.1.0.Final",
javax.validation.constraints;version="1.1.0.Final",
mondrian.rolap;version="3.5.0",
org.eclipse.e4.core.services.events,
org.eclipse.e4.ui.model.application,
+ org.eclipse.e4.ui.model.application.commands,
+ org.eclipse.e4.ui.model.application.ui,
org.eclipse.emf.ecore,
org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
- org.eclipse.osbp.dsl.dto.lib.services;version="0.9.0",
+ org.eclipse.osbp.dsl.semantic.common.types;version="0.9.0",
+ org.eclipse.osbp.dsl.semantic.entity;version="0.9.0",
org.eclipse.osbp.dsl.xtext.types.bundles;version="0.9.0",
- org.eclipse.osbp.ecview.core.common.context;version="0.9.0",
- org.eclipse.xtext.common.types,
org.eclipse.xtext.resource,
org.eclipse.xtext.util,
org.joda.time;version="2.7.0",
- org.slf4j;resolution:=optional
+ org.slf4j;resolution:=optional,
+ org.vaadin.hene.popupbutton;version="2.5.0"
Bundle-ClassPath: .
Bundle-Vendor: Eclipse OSBP
diff --git a/org.eclipse.osbp.ui.api/build.properties b/org.eclipse.osbp.ui.api/build.properties
index 5364007..f68af27 100644
--- a/org.eclipse.osbp.ui.api/build.properties
+++ b/org.eclipse.osbp.ui.api/build.properties
@@ -1,8 +1,18 @@
source.. = src/
output.. = target/classes/
-bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+bin.includes = about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html,\
+ META-INF/,\
.,\
license.html,\
- LICENSE.txt
-src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt,\
- license.html
+ LICENSE.txt,\
+ epl-v10.html
+src.includes = about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html,\
+ LICENSE.txt,\
+ license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.ui.api/pom.xml b/org.eclipse.osbp.ui.api/pom.xml
index 2aaa8fd..8184207 100644
--- a/org.eclipse.osbp.ui.api/pom.xml
+++ b/org.eclipse.osbp.ui.api/pom.xml
@@ -29,7 +29,7 @@
<dependency>
<groupId>org.eclipse.osbp.dependencies</groupId>
<artifactId>org.eclipse.osbp.dependencies.feature.vaadin</artifactId>
- <version>7.5.7</version>
+ <version>${vaadin.version}</version>
<type>eclipse-feature</type>
</dependency>
</dependencies>
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/ICommandsProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/ICommandsProvider.java
new file mode 100644
index 0000000..feb3e76
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/ICommandsProvider.java
@@ -0,0 +1,10 @@
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+
+public interface ICommandsProvider {
+ void init(MApplication application);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
index 04eadf9..524dec5 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
@@ -12,8 +12,10 @@
*/
package org.eclipse.osbp.ui.api.contextfunction;
+import org.vaadin.hene.popupbutton.PopupButton;
+
import com.vaadin.ui.Component;
public interface IUserMenuProvider {
- Component getMenu();
+ Component getMenu(PopupButton popup);
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobConverter.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobConverter.java
new file mode 100644
index 0000000..26cd2e4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobConverter.java
@@ -0,0 +1,14 @@
+package org.eclipse.osbp.ui.api.customfields;
+
+import com.vaadin.server.StreamResource;
+
+public interface IBlobConverter {
+ void setInput(String input);
+ String getInput();
+ void setOutput(StreamResource resource);
+ StreamResource getOutput();
+ void setBlobService(IBlobService blobService);
+ IBlobService getBlobService();
+ void setResolution(int resolutionId);
+ int getResolution();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobEvent.java
new file mode 100644
index 0000000..82e6611
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobEvent.java
@@ -0,0 +1,34 @@
+package org.eclipse.osbp.ui.api.customfields;
+
+public interface IBlobEvent {
+ final String STARTED_BLOB_UPLOAD = "startedblobupload"; //$NON-NLS-1$
+ final String STOPPED_BLOB_UPLOAD = "stoppedblobupload"; //$NON-NLS-1$
+ /**
+ * Provides a boolean that indicates if a blob was successfully uploaded and
+ * persisted into the database.
+ *
+ * @return boolean indicating a successfully uploaded and persisted blob
+ * into the database
+ */
+ boolean isUploadSuccessful();
+ /**
+ * Provides the uuid of the successfully uploaded and persisted blob into
+ * the database or {@code null} otherwise.
+ *
+ * @return uuid of the successfully uploaded and persisted blob into the
+ * database or {@code null} otherwise.
+ */
+ String getUploadedBlobId();
+ /**
+ * Provides the error message that indicates the reason of an unsuccessfully
+ * attempt of uploading and persisting a blob into the database.
+ *
+ * @return error message indicating why an uploading and persisting of a
+ * blob into the database was unsuccessfully.
+ */
+ String getErrorMessage();
+ /**
+ * @return the just uploaded filename to check for the right component when showing image
+ */
+ String getUploadedFile();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobService.java
new file mode 100644
index 0000000..6527f6e
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobService.java
@@ -0,0 +1,198 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.customfields;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+import com.vaadin.server.StreamResource;
+
+public interface IBlobService {
+
+ /**
+ * Adds the blob upload listener.
+ *
+ * @param listener the listener
+ */
+ void addBlobUploadListener(IBlobUploadEventListener listener);
+
+ /**
+ * Removes the blob upload listener.
+ *
+ * @param listener the listener
+ */
+ void removeBlobUploadListener(IBlobUploadEventListener listener);
+ /**
+ * Creates for the specified image blob data by {@link InputStream} the
+ * base64 encoded image representation and a resized copy for each of the
+ * predefined resolutions and persist them in to database via JPA.
+ *
+ * If no blob uuid exists ({@code uploadedBlobUuid = null}, when a new image
+ * is uploaded, a new entry with a new uuid is created.
+ *
+ * Once the persistence of the blob data is successfully realized a positive
+ * {@link BlobEvent} (with the flag {@code uploadSuccessful = true})
+ * is created and all the {@link IBlobUploadEventListener} are notified.
+ *
+ * But if the persistence of the blob data goes unsuccessful a negative
+ * {@link BlobEvent} (with the flag {@code uploadSuccessful = false}
+ * and a filled {@code errorMessage} is created and all the
+ * {@link IBlobUploadEventListener} are notified.
+ *
+ * @param stream the stream
+ * @param mimeType the mime type
+ * @return the list
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ List<Object> createBlobMappingBlobs(InputStream stream, int mimeType) throws IOException;
+ /**
+ * Creates for the specified image blob data by {@link InputStream} the
+ * base64 encoded image representation and a resized copy for each of the
+ * predefined resolutions and persist them in to database via JPA.
+ *
+ * If no blob uuid exists ({@code uploadedBlobUuid = null}, when a new image
+ * is uploaded, a new entry with a new uuid is created.
+ *
+ * Once the persistence of the blob data is successfully realized a positive
+ * {@link BlobEvent} (with the flag {@code uploadSuccessful = true})
+ * is created and all the {@link IBlobUploadEventListener} are notified.
+ *
+ * But if the persistence of the blob data goes unsuccessful a negative
+ * {@link BlobEvent} (with the flag {@code uploadSuccessful = false}
+ * and a filled {@code errorMessage} is created and all the
+ * {@link IBlobUploadEventListener} are notified.
+ *
+ * @param stream the stream
+ * @param mimeType the mime type
+ * @return the list
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ List<Object> createBlobMappingBlobs(InputStream stream, String mimeType) throws IOException;
+ /**
+ * Creates for the specified image blob data by;@link InputStream} the
+ * base64 encoded image representation and a resized copy for each of the
+ * predefined resolutions and persist them in to database via JPA.
+ *
+ * Returns the UUID of the created blob mapping created.
+ *
+ * If the persistence of the blob data fail, returns null.
+ *
+ * @param stream
+ * @param fileName
+ * @param mimeType
+ * @param blobAPI
+ */
+ String createBlobMapping(InputStream stream, String fileName, String mimeType);
+ /**
+ * Checks if the mime type by the specified mime type id;@code mimeTypeId}
+ * corresponds to an image.
+ *
+ * @param mimeTypeId
+ * @return boolean indicating if it is an image
+ */
+ boolean isImage(int mimeTypeId);
+ /**
+ * Checks if the mime type by the specified mime type id;@code mimeTypeId}
+ * corresponds to a pdf file.
+ *
+ * @param mimeTypeId
+ * @return boolean indicating if it is a pdf file
+ */
+ boolean isPdf(int mimeTypeId);
+ /**
+ * Checks if the mime type by the specified mime type id;@code mimeTypeId}
+ * corresponds to a word file.
+ *
+ * @param mimeTypeId
+ * @return boolean indicating if it is a word file
+ */
+ boolean isWord(int mimeTypeId);
+ /**
+ * Checks if the mime type by the specified mime type id;@code mimeTypeId}
+ * corresponds to a excel file.
+ *
+ * @param mimeTypeId
+ * @return boolean indicating if it is a excel file
+ */
+ boolean isExcel(int mimeTypeId);
+ /**
+ * Checks if the mime type corresponds to an image.
+ *
+ * @param mimeTypeId
+ * @return boolean indicating if it is an image
+ */
+ boolean isImage(String mimeType);
+
+ /**
+ * Creates a base64 {@link String} as the representation of a specific blob
+ * in a specific resolution.
+ *
+ * In case of an image mime type it is the base 64 encoded string of the
+ * image and otherwise a defined image for each mime type representing them.
+ *
+ * @param uuid the uuid
+ * @param resolutionId the resolution id
+ * @return the image
+ */
+ String getImage(String uuid, int resolutionId);
+ /**
+ * Creates a {@link StreamResource} as the representation of a specific blob
+ * in a specific resolution.
+ *
+ * In case of an image mime type it is the base 64 encoded string of the
+ * image and otherwise a defined image for each mime type representing them.
+ *
+ * @param uuid the uuid
+ * @param resolutionId the resolution id
+ * @return the StreamResource
+ */
+ StreamResource getResource(String uuid, int resolutionId);
+
+ /**
+ * Gets the normalizer resolution id by name.
+ *
+ * @param displayResolution the display resolution
+ * @return the normalizer resolution id by name
+ */
+ int getNormalizerResolutionIdByName(String displayResolution);
+
+ /**
+ * Gets the buffered image from blob.
+ *
+ * @param uuid the uuid
+ * @param resolutionId the resolution id
+ * @return the buffered image
+ */
+ BufferedImage getBufferedImage(String uuid, int resolutionId);
+
+ /**
+ * Gets the image birt compatible.
+ *
+ * @param uuid the uuid
+ * @param resolutionId the resolution id
+ * @return the birt image
+ */
+ String getBirtImage(String uuid, int resolutionId);
+
+ /**
+ * Gets the byte array image.
+ *
+ * @param uuid the uuid
+ * @param resolutionId the resolution id
+ * @return the byte array image
+ */
+ byte[] getByteArrayImage(String uuid, int resolutionId);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobTyping.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobTyping.java
new file mode 100644
index 0000000..1e0562c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobTyping.java
@@ -0,0 +1,120 @@
+package org.eclipse.osbp.ui.api.customfields;
+
+import java.util.List;
+
+import javax.activation.MimeType;
+
+public interface IBlobTyping {
+ public final static String IMAGE_MIME_TYPE_PREFIX = "image";
+// MimeTypeIDs
+ public final static int PDF_MIME_TYPE_ID = 7;
+ public final static int WORD_DOC_MIME_TYPE_ID = 8;
+ public final static int WORD_DOCX_MIME_TYPE_ID = 9;
+ public final static int EXCEL_XLS_MIME_TYPE_ID = 10;
+ public final static int EXCEL_XLSX_MIME_TYPE_ID = 11;
+ /**
+ * Provides the defined mime type version.
+ *
+ * @return the defined mime type version
+ * @see MimeType
+ */
+ String getMimeTypeVersion();
+ /**
+ * Provides the defined content transfer encoding of the mime type.
+ *
+ * @return the defined content transfer encoding
+ * @see MimeType
+ */
+ String getMimeTypeContentTransferEncoding();
+ /**
+ * Provides a list of all the defined content type names of the mime type
+ * object.
+ *
+ * @return a list of all the defined content type names
+ * @see ContentType
+ */
+ List<String> getMimeTypeContentTypeNames();
+ /**
+ * Provides the content type id for an individual position within the list
+ * of all the defined content type objects of the mime type object.
+ *
+ * @param index
+ * @return the content type id or '-1' if not found
+ * @see ContentType
+ */
+ int getMimeTypeContentTypeIdByListIndex(int index);
+ /**
+ * Provides the content type name for an individual position within the list
+ * of all the defined content type objects of the mime type object.
+ *
+ * @param index
+ * @return the content type name as;@link String} or ""(blank) if not found
+ * @see ContentType
+ */
+ String getMimeTypeContentTypeByListIndex(int index);
+ /**
+ * Provides the content type name for a specific content type id.
+ *
+ * @param contentTypeId
+ * @return the content type name as;@link String} or ""(blank) if not found
+ * @see ContentType
+ */
+ String getMimeTypeContentTypeById(int contentTypeId);
+ /**
+ * Provides the content type id for a specific content type name.
+ *
+ * @param contentTypeStr
+ * @return the content type id or '-1' if not found
+ * @see ContentType
+ */
+ int getMimeTypeContentTypeId(String contentTypeStr);
+ /**
+ * Provides the defined default normalizer resolution id.
+ *
+ * @return default normalizer resolution id
+ */
+ int getNormalizerDefaultResolutionId();
+ /**
+ * Provides the normalizer resolution id for an individual position within
+ * the list of all the defined resolution objects of the normalizer object.
+ *
+ * @param index
+ * @return the normalizer resolution id or '-1' if not found
+ */
+ int getNormalizerResolutionIdByListIndex(int index);
+ /**
+ * Provides the normalizer resolution name for an individual position within
+ * the list of all the defined resolution objects of the normalizer object.
+ *
+ * @param index
+ * @return the normalizer resolution name as;@link String} or ""(blank) if
+ * not found
+ */
+ String getNormalizerResolutionNameByListIndex(int index);
+ /**
+ * Provides the normalizer resolution for an individual position within the
+ * list of all the defined resolution objects of the normalizer object.
+ *
+ * @param index
+ * @return the normalizer resolution as;@link String} or ""(blank) if not
+ * found
+ */
+ String getNormalizerResolutionByListIndex(int index);
+ /**
+ * Provides the normalizer resolution id for a specific normalizer
+ * resolution.
+ *
+ * @param resolutionStr
+ * @return the normalizer resolution id or '-1' if not found
+ */
+ int getNormalizerResolutionIdByName(String resolutionStr);
+ /**
+ * Provides the normalizer resolution for a specific normalizer resolution
+ * id.
+ *
+ * @param resolutionId
+ * @return the normalizer resolution as;@link String} or ""(blank) if not
+ * found
+ */
+ String getNormalizerResolutionById(int resolutionId);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadEventListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadEventListener.java
new file mode 100644
index 0000000..5c0efc6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadEventListener.java
@@ -0,0 +1,21 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * Jose Dominguez (Compex Systemhaus GmbH) - ongoing development
+ */
+package org.eclipse.osbp.ui.api.customfields;
+
+import java.util.EventListener;
+
+public interface IBlobUploadEventListener extends EventListener
+{
+ void blobUploaded( IBlobEvent e );
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartData.java
new file mode 100644
index 0000000..2e071e7
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartData.java
@@ -0,0 +1,87 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import org.eclipse.osbp.runtime.common.event.IDualData;
+
+/**
+ * The Class DatamartData.
+ */
+public class DatamartData implements IDualData {
+ private String selectionValue;
+ private String formattedValue;
+ private String hierarchy = null;
+ private boolean isString = false;
+
+ @Override
+ public void asString(boolean isString) {
+ this.isString = isString;
+ }
+
+ @Override
+ public String getDatabaseSelectionValue() {
+ if(isString) {
+ return "'"+selectionValue.replace("'", "''")+"'";
+ }
+ return selectionValue;
+ }
+
+ @Override
+ public String getSelectionValue() {
+ return selectionValue;
+ }
+
+ @Override
+ public void setSelectionValue(String selectionValue) {
+ this.selectionValue = selectionValue;
+ }
+
+ @Override
+ public String getFormattedValue() {
+ return formattedValue;
+ }
+
+ @Override
+ public void setFormattedValue(String formattedValue) {
+ this.formattedValue = formattedValue;
+ }
+
+ @Override
+ public String getHierarchy() {
+ return hierarchy;
+ }
+
+ @Override
+ public String getHierarchyWithBrackets() {
+ if (hierarchy != null) {
+ return "[" + hierarchy + "]";
+ }
+ return "";
+ }
+
+ @Override
+ public void setHierarchy(String hierarchy) {
+ this.hierarchy = hierarchy;
+ }
+
+ @Override
+ public boolean equals(IDualData item) {
+ if (item != null && (item.getHierarchy() == null || item.getHierarchy().equals(getHierarchy()))
+ && item.getSelectionValue().equals(getSelectionValue())
+ && item.getFormattedValue().equals(getFormattedValue())) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartFilter.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartFilter.java
new file mode 100644
index 0000000..ca9fe4a
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartFilter.java
@@ -0,0 +1,624 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.text.DateFormat;
+import java.util.AbstractMap.SimpleEntry;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
+import org.eclipse.osbp.runtime.common.event.IDualData;
+
+/**
+ * The Class DatamartFilter.
+ */
+public class DatamartFilter {
+
+ /** The Constant FILTER_PLACEHOLDER. */
+ public static final String FILTER_PLACEHOLDER = "#";
+
+ /**
+ * The Enum FilterType.
+ */
+ public enum FilterType {
+
+ /** single selection via combobox. */
+ SINGLE,
+
+ /** multiple selection via listbox. */
+ MULTIPLE,
+
+ /** cube condition except for something. */
+ EXCEPT,
+
+ /** slice a single value. */
+ SINGLESLICER,
+
+ /** slice multiple values. */
+ MULTIPLESLICER,
+
+ /** hierarchy with single value. */
+ SINGLEHIERARCHY,
+
+ /** hierarchy with multiple values. */
+ MULTIPLEHIERARCHY,
+
+ /** range of two values. */
+ BETWEEN,
+
+ /** range of two date values. */
+ BETWEEN_DATE,
+
+ /** select by id. */
+ BY_ID
+ }
+
+ /**
+ * The Enum FilterType.
+ */
+ public enum DateTimeFormat {
+
+ /** Date Format. */
+ DATE(0, "DATE", "DATE"),
+
+ /** Time format. */
+ TIME(1, "TIME", "TIME"),
+
+ /** date time format. */
+ DATE_TIME(2, "DATE_TIME", "DATE_TIME");
+
+ private int value;
+ private String name;
+ private String literal;
+
+ /**
+ * Only this class can construct instances.
+ */
+ private DateTimeFormat(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+
+ public int getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getLiteral() {
+ return literal;
+ }
+
+ private static final DateTimeFormat[] VALUES_ARRAY =
+ new DateTimeFormat[] {
+ DATE,
+ TIME,
+ DATE_TIME,
+ };
+
+ public static DateTimeFormat get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DateTimeFormat result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+
+ }
+
+ /**
+ * The Enum FilterType.
+ */
+ public enum DateResolution {
+
+ SECOND(0, "SECOND", "SECOND"),
+
+ MINUTE(1, "MINUTE", "MINUTE"),
+
+ HOUR(2, "HOUR", "HOUR"),
+
+ DAY(3, "DAY", "DAY"),
+
+ MONTH(4, "MONTH", "MONTH"),
+
+ YEAR(5, "YEAR", "YEAR"),
+
+ UNDEFINED(6, "UNDEFINED", "UNDEFINED");
+
+ private static final DateResolution[] VALUES_ARRAY =
+ new DateResolution[] {
+ SECOND,
+ MINUTE,
+ HOUR,
+ DAY,
+ MONTH,
+ YEAR,
+ UNDEFINED,
+ };
+ private int value;
+ private String name;
+ private String literal;
+
+ /**
+ * Only this class can construct instances.
+ */
+ private DateResolution(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getLiteral() {
+ return literal;
+ }
+
+ public static DateResolution get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DateResolution result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ }
+
+
+ /** The name. */
+ private String name;
+
+ /** The type. */
+ private FilterType type;
+
+ /** The sql command to fill data. */
+ private String sql;
+
+ /** The sql command condition. */
+ private String condition;
+
+ /** The selector. */
+ private IDatamartSelectable selector;
+
+ /** The unselected data. */
+ private List<IDualData> data;
+
+ /** The selected data. */
+ private List<IDualData> selection;
+
+ private IDatamartBetweenInput inputComponent;
+
+ public DateTimeFormat format;
+
+ public DateResolution resolution;
+
+ /**
+ * Instantiates a new datamart filter for non date data typed attributes.
+ *
+ * @param type the type
+ * @param dateFormatMap
+ * @param name the name
+ * @param sql the sql
+ */
+ public DatamartFilter(FilterType type, String name, String sql) {
+ this.type = type;
+ this.name = name;
+ this.sql = sql;
+ data = new ArrayList<>();
+ selection = new ArrayList<>();
+ }
+
+ /**
+ * Instantiates a new datamart filter for date data typed attributes.
+ *
+ * @param type the type
+ * @param dateFormatMap
+ * @param name the name
+ * @param sql the sql
+ */
+ public DatamartFilter(FilterType type, Map<String, String> dateFormatMap, String name, String sql) {
+ this.type = type;
+ this.name = name;
+ DateTimeFormat format = null;
+ DateResolution resolution = null;
+ for (Entry<String, String> entry : dateFormatMap.entrySet()){
+ if (DateTimeFormat.get(entry.getKey()) != null ){
+ format = DateTimeFormat.get(entry.getKey());
+ }
+ if (DateResolution.get(entry.getValue()) != null ){
+ resolution = DateResolution.get(entry.getValue());
+ }
+ }
+ this.format = format;
+ this.resolution = resolution;
+ this.sql = sql;
+ data = new ArrayList<>();
+ selection = new ArrayList<>();
+ }
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Gets the decorated name.
+ *
+ * @return the decorated name
+ */
+ public String getDecoratedName() {
+ return DatamartFilter.decorate(name);
+ }
+
+
+ /**
+ * Decorate a string to be replaced later by a selected value/list.
+ *
+ * @param input the input
+ * @return the string
+ */
+ public static String decorate(String input) {
+ return FILTER_PLACEHOLDER+input+FILTER_PLACEHOLDER;
+ }
+
+ /**
+ * Sets the name.
+ *
+ * @param name the new name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Gets the type.
+ *
+ * @return the type
+ */
+ public FilterType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the type.
+ *
+ * @param type the new type
+ */
+ public void setType(FilterType type) {
+ this.type = type;
+ }
+
+ /**
+ * Gets the sql.
+ *
+ * @return the sql
+ */
+ public String getSql() {
+ return sql;
+ }
+
+ /**
+ * Sets the sql.
+ *
+ * @param sql the new sql
+ */
+ public void setSql(String sql) {
+ this.sql = sql;
+ }
+
+ /**
+ * Gets the condition.
+ *
+ * @return the condition
+ */
+ public String getCondition() {
+ return condition;
+ }
+
+ /**
+ * Sets the condition.
+ *
+ * @param condition the new condition
+ */
+ public void setCondition(String condition) {
+ this.condition = condition;
+ }
+
+ /**
+ * Gets the selector.
+ *
+ * @return the selector
+ */
+ public IDatamartSelectable getSelector() {
+ return selector;
+ }
+
+ /**
+ * Sets the selector.
+ *
+ * @param selector the new selector
+ */
+ public void setSelector(IDatamartSelectable selector) {
+ this.selector = selector;
+ }
+
+ /**
+ * Gets the input component.
+ *
+ * @return the input component
+ */
+ public IDatamartBetweenInput getBetweenInputComponent() {
+ return inputComponent;
+ }
+
+ /**
+ * Sets the input component.
+ *
+ * @param inputComponent the new input component
+ */
+ public void setBetweenInputComponent(IDatamartBetweenInput inputComponent) {
+ this.inputComponent = inputComponent;
+ }
+
+ /**
+ * Gets the data.
+ *
+ * @return the data
+ */
+ public List<IDualData> getData() {
+ return data;
+ }
+
+ /**
+ * Sets the data.
+ *
+ * @param data the new data
+ */
+ public void setData(List<IDualData> data) {
+ if(data != null) {
+ this.data.addAll(data);
+ }
+ }
+
+ /**
+ * Adds the item.
+ *
+ * @param item the item
+ */
+ public void addItem(IDualData item) {
+ data.add(item);
+ }
+
+ /**
+ * Removes an item from data.
+ *
+ * @param item the item
+ */
+ public void removeItem(IDualData item) {
+ data.remove(item);
+ }
+
+ /**
+ * Clear data.
+ */
+ public void clearData() {
+ data.clear();
+ }
+
+ /**
+ * Adds the item.
+ *
+ * @param value the value
+ */
+ public void addItem(String value, boolean asString) {
+ if(value != null) {
+ IDualData item = new DatamartData();
+ item.setFormattedValue(value);
+ item.setSelectionValue(value);
+ item.asString(asString);
+ data.add(item);
+ }
+ }
+
+ /**
+ * Adds the item.
+ *
+ * @param value the value
+ * @param selectValue the select value
+ */
+ public void addItem(String value, String selectValue, boolean asString) {
+ if(value != null) {
+ IDualData item = new DatamartData();
+ item.setFormattedValue(value);
+ item.setSelectionValue(selectValue);
+ item.asString(asString);
+ data.add(item);
+ }
+ }
+
+ /**
+ * Adds the olap item.
+ *
+ * @param hierarchy the hierarchy
+ * @param uniqueName the unique name
+ */
+ public void addOlapItem(String hierarchy, String uniqueName) {
+ if(uniqueName != null) {
+ IDualData item = new DatamartData();
+ item.setHierarchy(hierarchy);
+ item.setSelectionValue(uniqueName);
+ String value = uniqueName.replace("[", "").replace("]", "").replace(hierarchy+".", "");
+ String[] parts = value.split("\\.");
+ // take the last element as caption
+ item.setFormattedValue(parts[parts.length-1]);
+ if(!"#null".equals(value)) {
+ data.add(item);
+ }
+ }
+ }
+
+ /**
+ * Gets the selected data.
+ *
+ * @return the selected data
+ */
+ public List<IDualData> getSelectedData() {
+ return selection;
+ }
+
+ /**
+ * Sets the selected data.
+ *
+ * @param selection the new selected data
+ */
+ public void setSelectedData(List<IDualData> selection) {
+ if(selection != null) {
+ this.selection.addAll(selection);
+ }
+ }
+
+ /**
+ * Adds the selected item.
+ *
+ * @param item the item
+ */
+ public void addSelectedItem(IDualData item) {
+ selection.add(item);
+ }
+
+ /**
+ * Adds the selected item.
+ *
+ * @param value the value
+ */
+ public void addSelectedItem(String value) {
+ IDualData item = new DatamartData();
+ item.setFormattedValue(value);
+ item.setSelectionValue(value);
+ selection.add(item);
+ }
+
+ /**
+ * Removes the selected item.
+ *
+ * @param item the item
+ */
+ public void removeSelectedItem(IDualData item) {
+ selection.remove(item);
+ }
+
+ /**
+ * Clear selected data.
+ */
+ public void clearSelectedData() {
+ selection.clear();
+ }
+
+ /**
+ * Can select data. Returns true if a filter matched the given selected data and selects the selector.
+ *
+ * @param selectedData the selected data
+ * @param single the single
+ * @param olap the olap
+ * @return true, if successful
+ */
+ @SuppressWarnings("unchecked")
+ public boolean canSelectData(Map<EventDispatcherDataTag, Object> selectedData, boolean single, boolean olap) {
+ for(EventDispatcherDataTag tag : selectedData.keySet()) {
+ switch(tag) {
+ case ID:
+ return false;
+ case LIST:
+ switch(type) {
+ case SINGLE:
+ case MULTIPLE:
+ return selectData((List<String>)selectedData.get(tag), false);
+ case EXCEPT:
+ case SINGLESLICER:
+ case SINGLEHIERARCHY:
+ case MULTIPLESLICER:
+ case MULTIPLEHIERARCHY:
+ return selectData((List<String>)selectedData.get(tag), true);
+ default:
+ return false;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Select data.
+ *
+ * @param selected the selected
+ * @param olap the olap
+ * @return true, if successful
+ */
+ private boolean selectData(List<String> selected, boolean olap) {
+ boolean first = true;
+ for(String item:selected) {
+ if(!olap) {
+ for(IDualData dd : data) {
+ if(dd.getSelectionValue().equals(item)) {
+ if(first) {
+ clearSelectedData();
+ first = false;
+ }
+ addSelectedItem(dd);
+ return true;
+ }
+ }
+ }
+ if(olap && !item.contains("[") && !data.isEmpty()) {
+ String prefix = data.get(0).getHierarchyWithBrackets()+".";
+ String suffix = ".["+item.replace(".", "].[")+"]";
+ for(IDualData dd : data) {
+ if(dd.getSelectionValue().startsWith(prefix) && dd.getSelectionValue().endsWith(suffix)) {
+ if(first) {
+ clearSelectedData();
+ first = false;
+ }
+ addSelectedItem(dd);
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartPrimary.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartPrimary.java
new file mode 100644
index 0000000..bd87c1b
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DatamartPrimary.java
@@ -0,0 +1,39 @@
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+public class DatamartPrimary<T> {
+ private String alias;
+ private String attributeName;
+ private String entityName;
+ private List<T> keys;
+
+ public DatamartPrimary(String alias, String attributeName, String entityName) {
+ this.attributeName = attributeName;
+ this.entityName = entityName;
+ this.alias = alias;
+ keys = new ArrayList<T>();
+ }
+ public String getAlias() {
+ return alias;
+ }
+ public String getAttributeName() {
+ return attributeName;
+ }
+ public String getEntityName() {
+ return entityName;
+ }
+ public void clear() {
+ keys.clear();
+ }
+ public void add(T id) {
+ keys.add(id);
+ }
+ public boolean contains(T id) {
+ return keys.contains(id);
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
index bbfedfd..2da94b2 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
@@ -3,7 +3,7 @@
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
@@ -17,26 +17,25 @@
import org.eclipse.osbp.ui.api.user.IUser;
-public interface IDataMart {
- public enum EType {
- BOOLEAN, DATE, FLOAT, DOUBLE, BYTE, SHORT, INTEGER, LONG, STRING, TIME, BLOPMAPPING, LENUM, none
- }
+ public interface IDataMart {
+ enum EType {
+ BOOLEAN, DATE, FLOAT, DOUBLE, BYTE, SHORT, INTEGER, LONG, STRING, TIME, BLOPMAPPING, LENUM, NONE
+ }
- public final static String DATAMART_CLASS_POSTFIX = "Datamart";
- public final static String DATAMART_ID_COLUMN_PREFIX = "__";
- public final static String DATAMART_ID_COLUMN_POSTFIX = "__ID__";
-
- public static final String singleSelectDecorator = "$";
- public static final String multiSelectDecorator = "§";
- public static final String exceptDecorator = "%";
- public static final String slicerSingleSelectDecorator = "?";
- public static final String slicerMultiSelectDecorator = "!";
- public static final String sqlFilterNothing = "'*'";
- public static final String filterIdPlaceholder = "&";
-
- public static String decorate(String decorator, String input) {return decorator+input+decorator;}
-
- public abstract HashMap<String, ArrayList<IDualData>> getFilters(IUser user);
- public abstract HashMap<String, EType> getIdMap();
- public abstract HashMap<String, EType> getTypesMap(IUser user);
+ static final String DATAMART_CLASS_POSTFIX = "Datamart";
+ static final String DATAMART_SERVICE_POSTFIX = "DatamartService";
+ static final String DATAMART_CONTAINER_POSTFIX = "DatamartContainer";
+ static final String DATAMART_ID_COLUMN_PREFIX = "__";
+ static final String DATAMART_ID_COLUMN_POSTFIX = "__ID__";
+ static final String SQLFILTERNOTHING = "'*'";
+ void setUser(IUser user);
+ IUser getUser();
+ ArrayList<DatamartFilter> getFilters();
+ void renderFilters();
+ HashMap<String, EType> getIdMap();
+ HashMap<String, EType> getTypesMap();
+ ArrayList<DatamartPrimary<?>> getPrimaryList();
+ void computeConditions();
+ void clearCache();
+ String getResultAttribute(String attributeName);
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartBetweenInput.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartBetweenInput.java
new file mode 100644
index 0000000..9649045
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartBetweenInput.java
@@ -0,0 +1,50 @@
+package org.eclipse.osbp.ui.api.datamart;
+
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.ui.AbstractField;
+
+public interface IDatamartBetweenInput {
+
+ String getFrom();
+
+ void setFrom(String from);
+
+ String getUntil();
+
+ void setUntil(String until);
+
+ <T> AbstractField<T> getFromInput();
+
+ <T> AbstractField<T> getUntilInput();
+
+ /**
+ * Sets the caption.
+ *
+ * @param caption the new caption
+ */
+ void setCaption(String caption);
+
+ /**
+ * Sets the description.
+ *
+ * @param description the new description
+ */
+ void setDescription(String description);
+
+ /**
+ * Adds the value change listener.
+ *
+ * @param listener the listener
+ */
+ void addValueChangeListener(ValueChangeListener listener);
+
+ /**
+ * Removes the value change listener.
+ *
+ * @param listener the listener
+ */
+ void removeValueChangeListener(ValueChangeListener listener);
+
+
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartContainer.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartContainer.java
new file mode 100644
index 0000000..d4dc898
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartContainer.java
@@ -0,0 +1,7 @@
+package org.eclipse.osbp.ui.api.datamart;
+
+public interface IDatamartContainer {
+
+ Object getIdValue();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
index 0b47637..f1c2787 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
@@ -1,44 +1,101 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
package org.eclipse.osbp.ui.api.datamart;
-import java.util.Locale;
-import java.util.Map;
-
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
-import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
-import org.eclipse.osbp.ui.api.user.IUser;
-import com.vaadin.data.Property.ValueChangeListener;
-
+/**
+ * The Interface IDatamartFilterGenerator.
+ */
public interface IDatamartFilterGenerator {
- void setDslMetadataService(IDSLMetadataService dslMetadataService);
+
+ /** The Constant MULTISELECTION_ROWS. */
+ public static final int MULTISELECTION_ROWS=10;
+
+ /** The Constant SHOW_CAPTION. */
+ public static final boolean SHOW_CAPTION=false;
- boolean createFilter(IDataMart datamart, IUser user,
- ValueChangeListener filterChangeListener,
- IViewLayoutManager layoutManager);
+ /**
+ * Creates the UI filters.
+ *
+ * @param layoutManager the layout manager
+ * @return true, if successful
+ */
+ boolean createUIFilters(IViewLayoutManager layoutManager);
- boolean createFilter(IDataMart datamart, IUser user,
- ValueChangeListener filterChangeListener,
- IViewLayoutManager layoutManager, boolean showCaption);
+ /**
+ * Select item.
+ *
+ * @param filterID the filter ID
+ * @param selection the selection
+ */
+ void selectItem(String filterID, String selection);
+
+ /**
+ * Select item.
+ *
+ * @param event the event
+ * @param byId, if true also id events are processed
+ * @return true, if selection must trigger a dataRefresh
+ */
+ boolean selectItem(EventDispatcherEvent event, boolean byId);
- void setId(String idProperty, String id);
+ /**
+ * Reset item.
+ *
+ * @param filterID the filter ID
+ */
+ void resetItem(String filterID);
- void resetId();
-
- Map<String, IDatamartSelectable> getSelectors();
-
- boolean isCube();
-
- void setCube(boolean cube);
-
- void resetItem(String filter);
-
- Map<String, String> getFilter(boolean isCube);
-
- void setLocale(Locale locale);
-
- void selectItem(String filter, String selection);
-
- void updateFilter(IDataMart datamart, IUser user,
- ValueChangeListener filterChangeListener);
-
+ /**
+ * Update filter.
+ */
+ void updateFilter();
+
+ /**
+ * Adds the filter change listener.
+ *
+ * @param listener the listener
+ */
+ void addFilterChangeListener(FilterChangeListener listener);
+
+ /**
+ * Removes the change listener.
+ *
+ * @param listener the listener
+ */
+ void removeFilterChangeListener(FilterChangeListener listener);
+
+ /**
+ * The listener interface for receiving filterChange events.
+ * The class that is interested in processing a filterChange
+ * event implements this interface, and the object created
+ * with that class is registered with a component using the
+ * component's <code>addFilterChangeListener<code> method. When
+ * the filterChange event occurs, that object's appropriate
+ * method is invoked.
+ *
+ * @see FilterChangeEvent
+ */
+ public interface FilterChangeListener {
+
+ /**
+ * Filter changed. Notify all listeners.
+ *
+ * @param changedFilter the changed filter
+ */
+ void filterChanged(DatamartFilter changedFilter);
+ }
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
index 6502891..17d8daa 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
@@ -15,6 +15,8 @@
import java.util.Collection;
import java.util.List;
+import org.eclipse.osbp.runtime.common.event.IDualData;
+
import com.vaadin.data.Container;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.server.Sizeable.Unit;
@@ -43,26 +45,17 @@
void update(Collection<IDualData> options);
/**
- * Gets the filter name.
- *
- * @return the filter name
- */
- String getFilterName();
-
- /**
- * Sets the filter name.
- *
- * @param filterName the new filter name
- */
- void setFilterName(String filterName);
-
- /**
* Gets the selected items.
*
* @return the selected items
*/
List<IDualData> getSelectedItems();
+ /**
+ * Gets a selected single value.
+ *
+ * @return the value
+ */
Object getValue();
/**
@@ -113,6 +106,7 @@
* @param listener the listener
*/
void removeValueChangeListener(ValueChangeListener listener);
+
/**
* Sets the caption.
*
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Dialog.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Dialog.java
new file mode 100644
index 0000000..b380581
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Dialog.java
@@ -0,0 +1,5 @@
+package org.eclipse.osbp.ui.api.e4;
+
+public interface IE4Dialog {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Focusable.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Focusable.java
new file mode 100644
index 0000000..4f27c1f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Focusable.java
@@ -0,0 +1,5 @@
+package org.eclipse.osbp.ui.api.e4;
+
+public interface IE4Focusable {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Table.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Table.java
new file mode 100644
index 0000000..9e84d76
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/e4/IE4Table.java
@@ -0,0 +1,5 @@
+package org.eclipse.osbp.ui.api.e4;
+
+public interface IE4Table {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
index b091bcd..3e5ff00 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
@@ -15,6 +15,7 @@
import java.util.Locale;
+import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
/**
@@ -22,16 +23,16 @@
*/
public interface IFunctionLibraryService {
- public Object callFunctionLibrary(String className, String methodName,
+ public Object invoke(String className, String methodName,
Object fieldValue, Locale locale, Object... params);
- public Object callFunctionLibrary(String className, String methodName,
+ public Object invoke(String className, String methodName,
Object fieldValue);
- public Object callFunctionLibrary(String className, String methodName,
+ public Object invoke(String className, String methodName,
Locale locale);
- public Object callFunctionLibrary(String className, String methodName);
+ public Object invoke(String className, String methodName);
public boolean guard(IStateMachine statemachine, String className, String methodName);
@@ -40,4 +41,11 @@
public Object function(IStateMachine statemachine, String className,
String methodName, Object... params);
+
+ public boolean execute(IEclipseContext context, String className,
+ String methodName, Object... params);
+
+ public boolean canExecute(IEclipseContext context, String className,
+ String methodName, Object... params);
+
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/menu/IMenuItemHandler.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/menu/IMenuItemHandler.java
new file mode 100644
index 0000000..9d1b2f4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/menu/IMenuItemHandler.java
@@ -0,0 +1,6 @@
+package org.eclipse.osbp.ui.api.menu;
+
+public interface IMenuItemHandler {
+ void execute(Object item);
+ boolean canExecute();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
index a23bb06..0544d95 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
@@ -23,10 +23,10 @@
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.util.Pair;
-// TODO: Auto-generated Javadoc
/**
* The Interface IDSLMetadataService.
*/
+@SuppressWarnings("restriction")
public interface IDSLMetadataService {
/**
@@ -38,6 +38,12 @@
/** The perspective literal placeholder. */
PERSPECTIVES
}
+
+ public static final class ThrowableMessages {
+ private ThrowableMessages() {
+ }
+ public static final String NAMING_LOGIC_NOT_REGISTERD = "No registered naming logic for ";
+ }
/**
* Gets dsl grammar elements identified by a literal enum.
@@ -60,6 +66,13 @@
* @return the metadata
*/
EObject getMetadata(String id, EClass eclass);
+
+ /**
+ * Returns the ecview id for the given Dialog.
+ * @param dialog
+ * @return
+ */
+ String getECViewId(EObject dialog);
/**
* Gets the all metadata descriptions.
@@ -75,9 +88,6 @@
* based on Xtext, then the returned fqn should be used from the
* EObjectDescription.
*
- * TODO Riegel - ensure that all DSLs generate a proper fqn. For now they
- * are missing their package in the FQN.
- *
* @param eObject
* the EObject
* @return the fully qualified name
@@ -124,6 +134,14 @@
String getClassURI(EObject eObject, String kind);
/**
+ * Gets the class for the given eObject and extension.
+ *
+ * @param eObject the e object
+ * @param extension the extension
+ * @return the class
+ */
+ Class<?> getClass(EObject eObject, String extension);
+ /**
* Gets a class instance for the given eObject and extension.
*
* @param eObject the e object
@@ -135,12 +153,11 @@
/**
* Gets a resource URL from the bundle of the given extension.
*
- * @param eObject the e object
+ * @param resourceName the resource name
* @param dslExtension the dsl extension e.g. report
- * @param resourceExtension the resource extension e.g. rptdesign
* @return the resource URL
*/
- URL getResourceURL(EObject eObject, String dslExtension, String resourceExtension);
+ URL getResourceURL(String resourceName, String dslExtension);
/**
* Resolves the given proxy using the internal resource set.
@@ -184,7 +201,6 @@
*
* @return the type provider
*/
- @SuppressWarnings("restriction")
BundleSpaceTypeProvider getTypeProvider();
/**
@@ -210,4 +226,22 @@
* the class not found exception
*/
Class<?> createType(String typeName) throws ClassNotFoundException;
+
+ /**
+ * Execute a unit of work via {@link IMetadataBuilderService}.
+ *
+ * @param <T> the generic type
+ * @param state the state
+ * @param unitOfWork the unit of work
+ */
+ <T> void execute(T state, Object unitOfWork);
+
+ /**
+ * Gets the root entity class of a datamart.
+ *
+ * @param canonicalName the canonical name of the datamart
+ * @return the entity root class
+ */
+ Class<?> getDatamartRootClass(String canonicalName);
+ String getDatamartRootClassIdentifierName(String canonicalName);
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/perspective/IPerspectiveProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/perspective/IPerspectiveProvider.java
new file mode 100644
index 0000000..f8b9f47
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/perspective/IPerspectiveProvider.java
@@ -0,0 +1,104 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.perspective;
+
+public interface IPerspectiveProvider {
+
+ public static final class PerspectiveViewType {
+ private PerspectiveViewType() {
+ }
+ public static final String TABLE = "table";
+ public static final String CHART = "chart";
+ public static final String DIALOG = "dialog";
+ public static final String REPORT = "report";
+ public static final String TOPOLOGY = "topology";
+ public static final String BPMN = "bpmn";
+ public static final String ORGANIZATION = "organization";
+ public static final String WELCOME = "welcome";
+ public static final String SEARCH = "search";
+ public static final String DATAINTERCHANGE = "data";
+ }
+
+ public static final class FilterConstants {
+ private FilterConstants() {
+ }
+ public static final String FILTER_DTO_CLASS = "filterDtoClass";//$NON-NLS-1$
+ public static final String FILTER_DEPTH = "filterDepth";//$NON-NLS-1$
+ public static final String FILTER_COLUMNS = "filterCols";//$NON-NLS-1$
+ }
+
+ public static final class KanbanConstants {
+ private KanbanConstants() {
+ }
+ public static final String DTO = "dto";//$NON-NLS-1$
+ public static final String CARD = "card";//$NON-NLS-1$
+ public static final String DIALOG = "dialog";//$NON-NLS-1$
+ }
+
+ public static final class E4Constants {
+ private E4Constants() {
+ }
+ public static final String TRIMBAR = "TRIMBAR";//$NON-NLS-1$
+ public static final String TOOLBARCONTROLS = "TOOLBARCONTROLS";//$NON-NLS-1$
+ public static final String TOOLBARCONTROLITEM_PREFIX = "TOOLBARCONTROLITEM.";//$NON-NLS-1$
+ public static final String TOOLBARITEM_PREFIX = "TOOLBARITEM.";//$NON-NLS-1$
+ public static final String PERSPECTIVESTACK = "PERSPECTIVESTACK";//$NON-NLS-1$
+ public static final String PERSPECTIVE_PREFIX = "PERSPECTIVE.";//$NON-NLS-1$
+ public static final String BUNDLE_PROTOCOL_SCHEME = "bundleclass";//$NON-NLS-1$
+
+ /**
+ * The NS URI of the model element to be shown in the part. This
+ * information must be put into {@link MPart#getPersistedState()}.<br>
+ * For instance: For {@link PerspectiveDialog} use
+ * {@link DialogDSLPackage#eNS_URI}
+ */
+ public static final String OSBP_NS_URI = "osbp-NS-Uri";
+
+ /**
+ * The flavor of the type. For instance table vs. grid.
+ */
+ public static final String OSBP_FLAVOR = "osbp-NS-Uri-flavor";
+
+ /**
+ * The fully qualified name <code>{package.name}.{object.name}</code> of
+ * the model element to be shown in the part. This information must be
+ * put into {@link MPart#getPersistedState()}.<br>
+ * For instance: For {@link PerspectiveDialog} use the FQN for
+ * {@link Dialog}.
+ *
+ */
+ public static final String OSBP_FQN = "osbp-model-fqn";
+ /**
+ * Removes the perspective from stack if it is closed.
+ */
+ public static final String TAG_REMOVE_ON_CLOSE = "remove_on_close";
+
+ /**
+ * The perspective is not visible in the open perspective dialog.
+ */
+ public static final String TAG_NOT_IN_OPEN_PERSPECTIVE_DIALOG = "not_in_open_perspective_dialog";
+
+ }
+
+ void openPerspective(String perspectiveId);
+
+ /**
+ * Open a not-model-based perspective.
+ *
+ * @param elementId the element id
+ * @param labelName the label name
+ * @param clazz the clazz
+ */
+ void openPerspective(String elementId, String labelName, Class<?> clazz);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureEvent.java
new file mode 100644
index 0000000..b8fd379
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureEvent.java
@@ -0,0 +1,9 @@
+package org.eclipse.osbp.ui.api.pos;
+
+import java.util.List;
+
+public interface ISignatureEvent {
+ int getButtonId();
+ List<PenData> getPenData();
+ Exception getException();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureListener.java
new file mode 100644
index 0000000..8571387
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureListener.java
@@ -0,0 +1,5 @@
+package org.eclipse.osbp.ui.api.pos;
+
+public interface ISignatureListener {
+ void notifyFinished(ISignatureEvent event);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureService.java
new file mode 100644
index 0000000..3f751a1
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/ISignatureService.java
@@ -0,0 +1,102 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.pos;
+
+import java.awt.image.BufferedImage;
+
+import org.eclipse.osbp.ui.api.customfields.IBlobService;
+
+public interface ISignatureService {
+
+ /**
+ * Open tablet.
+ *
+ * @param blobService the blob service
+ * @return true, if successful
+ */
+ boolean openTablet(IBlobService blobService);
+
+ /**
+ * Close tablet.
+ */
+ void closeTablet();
+
+ /**
+ * Clear tablet.
+ */
+ void clearTablet();
+
+ /**
+ * Sets the tablet labels, e.g. ok, clear, cancel
+ * allTexts must be pipe separated and must contain 3 elements.
+ * Must be called before openTablet
+ *
+ * @param allLabels the new tablet labels
+ */
+ void setTabletLabel(String allLabels);
+
+ /**
+ * Adds the listener.
+ *
+ * @param listener the listener
+ */
+ void addListener(ISignatureListener listener);
+
+ /**
+ * Removes the listener.
+ *
+ * @param listener the listener
+ */
+ void removeListener(ISignatureListener listener);
+
+ /**
+ * Capture tablet signature. Enable notofications.
+ */
+ void captureTablet();
+
+ /**
+ * Idle tablet. No more notifications.
+ */
+ void idleTablet();
+
+ /**
+ * Sets the background image for the capturing screen.
+ *
+ * @param imageId the new capture image
+ */
+ void setCaptureImage(String imageId);
+
+ /**
+ * Adds the slide.
+ *
+ * @param slideName the slide name
+ */
+ void addSlideTablet(String slideId);
+
+ /**
+ * Sets the delay between each slide in mSec
+ *
+ * @param delay the new slide delay
+ */
+ void setSlideDelay(long delay);
+
+ /**
+ * Gets the signature blob as uuid from blobMapping.
+ *
+ * @param width the client-width it should be scaled to
+ * @param height the client-height it should be scaled to
+ * @return the signature blob
+ */
+ String getSignatureBlob(int width, int height);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/PenData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/PenData.java
new file mode 100644
index 0000000..bcd569e
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/PenData.java
@@ -0,0 +1,37 @@
+package org.eclipse.osbp.ui.api.pos;
+
+public class PenData {
+ private int rdy;
+ private int sw;
+ private int pressure;
+ private int x;
+ private int y;
+
+ public PenData(int rdy, int sw, int pressure, int x, int y) {
+ this.rdy = rdy;
+ this.sw = sw;
+ this.pressure = pressure;
+ this.x = x;
+ this.rdy = y;
+ }
+
+ public int getRdy() {
+ return rdy;
+ }
+
+ public int getSw() {
+ return sw;
+ }
+
+ public int getPressure() {
+ return pressure;
+ }
+
+ public int getX() {
+ return x;
+ }
+
+ public int getY() {
+ return y;
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
index 1d19243..274c54f 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
@@ -3,8 +3,7 @@
import java.io.InputStream;
import java.util.Map;
-import org.eclipse.osbp.ui.api.datamart.IDataMart;
-import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
+import org.eclipse.osbp.ui.api.customfields.IBlobService;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
import org.eclipse.osbp.ui.api.user.IUser;
@@ -13,18 +12,17 @@
public final static String APPCONTEXT_REPORT = "AppContext_Report";
public final static String APPCONTEXT_THEMERESOURCESERVICE = "ThemeResourceService_Report";
public final static String APPCONTEXT_DSLMETADATASERVICE = "DSLMetadataService_Report";
+ public final static String APPCONTEXT_BLOBSERVICE = "BlobService_Report";
+
public final static String APPCONTEXT_USER = "User_Report";
public final static String APPCONTEXT_DATAMARTINSTANCE = "DatamartInstance_Report";
public final static String APPCONTEXT_FILTERMAP = "FilterMap_Report";
public final static String APPCONTEXT_PROPERTYLOOKUP = "PropertyLookup_Report";
public enum Rendering {
- PDF_FILE(false, true, true, false, false), PDF_STREAM(false, true,
- false, true, false),
+ PDF_FILE(false, true, true, false, false), PDF_STREAM(false, true, false, true, false),
/** @see {@link http://www.eclipse.org/forums/index.php/t/204085/} */
- PDF_PRINT_STREAM(false, true, false, true, true), HTML_FILE(true,
- false, true, false, false), HTML_STREAM(true, false, false,
- true, false);
+ PDF_PRINT_STREAM(false, true, false, true, true), HTML_FILE(true, false, true, false, false), HTML_STREAM(true, false, false, true, false);
public boolean asHtml() {
return fAsHtml;
@@ -52,8 +50,7 @@
private final boolean fAsStream;
private final boolean fForPrinting;
- Rendering(boolean asHtml, boolean asPdf, boolean asFile,
- boolean asStream, boolean forPrinting) {
+ Rendering(boolean asHtml, boolean asPdf, boolean asFile, boolean asStream, boolean forPrinting) {
fAsHtml = asHtml;
fAsPdf = asPdf;
fAsFile = asFile;
@@ -62,15 +59,14 @@
}
}
- void printReportAsPdf(String reportId, IUser user,
- IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+ void printReportAsPdf(String reportId, IUser user, IDSLMetadataService dslMetadataService, IBlobService blobService,
+ Map<String, String> filterMap);
- InputStream get(String reportId, IUser user,
- IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+ InputStream get(String reportId, IUser user, IDSLMetadataService dslMetadataService, IBlobService blobService,
+ Map<String, String> filterMap);
- InputStream get(String reportId, IUser user,
- IDSLMetadataService dslMetadataService, Map<String, String> filterMap,
- Rendering renderer, IThemeResourceService themeResourceService,
+ InputStream get(String reportId, IUser user, IDSLMetadataService dslMetadataService, Map<String, String> filterMap,
+ Rendering renderer, IThemeResourceService themeResourceService, IBlobService blobService,
String outputPath);
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
index 47c6837..338fe15 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
@@ -1,19 +1,23 @@
package org.eclipse.osbp.ui.api.statemachine;
-import java.util.Stack;
+import java.util.Collection;
import org.eclipse.osbp.dsl.common.datatypes.IDto;
-import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.runtime.common.filter.IQuery;
+@FunctionalInterface
public interface IDataProvider {
- void initDatasource(String dtoName);
+ void addDatasource(String dtoAlias, Class<?> dtoServiceClass);
public interface Provider extends IStateMachineParticipant {
- Boolean find(Provider listener, String dtoName, Query query);
- Boolean find(Provider listener, String dtoName, String fieldname, Object search);
- Boolean operation(Provider listener, String name, Stack<Object> parameter);
- void addTo(Provider listener, String dtoName, String listName, IDto dto);
- void removeFrom(Provider listener, String dtoName, String listName, IDto dto);
- void update(Provider listener, String dtoName, IDto dto);
- void delete(Provider listener, String dtoName, IDto dto);
+ Boolean find(Provider listener, String dtoAlias, IQuery query);
+ Boolean find(Provider listener, String dtoAlias, String fieldname, Object search);
+ Collection<? extends IDto> findAll(String dtoAlias, IQuery query);
+ Collection<? extends IDto> findAll(String dtoAlias, String fieldName, Object search);
+ Collection<? extends IDto> findAll(String dtoAlias, String fieldName);
+ void addTo(Provider listener, String dtoAlias, String listName, IDto dto);
+ void removeFrom(Provider listener, String dtoAlias, String listName, IDto dto);
+ void update(Provider listener, String dtoAlias, IDto dto);
+ void reload(Provider listener, String dtoAlias, IDto dto);
+ void delete(Provider listener, String dtoAlias, IDto dto);
}
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
index 3b0a074..6681ffc 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
@@ -1,8 +1,28 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
package org.eclipse.osbp.ui.api.statemachine;
public interface IPeripheral{
- void initDevices();
+ boolean initDevices();
void releaseDevices();
- public interface Command extends IStateMachineParticipant {
+
+ /**
+ * Checks if init was done successfully.
+ *
+ * @return true, if is inits the done
+ */
+ boolean isInitDone();
+ public interface Command extends IStateMachineParticipant {
}
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
index 567d797..d4e0f64 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
@@ -1,12 +1,15 @@
package org.eclipse.osbp.ui.api.statemachine;
import java.nio.channels.SelectableChannel;
+import java.util.Collection;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
-import java.util.Stack;
+import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.dsl.common.datatypes.IDto;
-import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.runtime.common.filter.IQuery;
+import org.eclipse.osbp.ui.api.customfields.IBlobService;
import org.eclipse.osbp.ui.api.message.MessageEvent;
import org.eclipse.osbp.ui.api.message.MessageEvent.EventType;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
@@ -16,15 +19,12 @@
import org.joda.time.DateTime;
public interface IStateMachine {
- class Data {
- public String name;
- public Double value;
- public Boolean state;
- public Object object;
- };
-
String getIPAddress();
+
+ String getHostName();
+ boolean isItMe(String hostName);
+
DateTime getNow();
void processEvent(IStateMachine statemachine, MessageEvent event);
@@ -41,10 +41,14 @@
void enable(String id, Boolean enable);
+ void toggle(String id);
+
Object get(String id);
void set(String id, Object content);
+ void set(String id, String device, Object content);
+
void clear(String id);
void append(String id, String key);
@@ -65,7 +69,11 @@
Boolean find(String dtoName, String fieldName, Object search);
- Boolean find(String dtoName, Query query);
+ Boolean find(String dtoName, IQuery query);
+
+ Collection<? extends IDto> findAll(String dtoAlias, IQuery query);
+
+ Collection<? extends IDto> findAll(String dtoAlias, String fieldName, Object search);
void addTo(String dtoName, String listName, IDto dto);
@@ -73,9 +81,9 @@
void update(String dtoName);
- void delete(String dtoName);
+ void reload(String dtoName);
- Boolean operation(String name, Stack<Object> parameter);
+ void delete(String dtoName);
String getUserAgentInfo();
@@ -114,8 +122,6 @@
Locale getLocale();
- Stack<Object> getParameters();
-
void setDslMetadataService(IDSLMetadataService dslMetadataService);
IDSLMetadataService getDslMetadataService();
@@ -140,8 +146,6 @@
void dispatchMessages(MessageEvent event);
- void clearParameters();
-
Object getStorage(String key, String attribute);
Set<String> getStorageAttributes(String key);
@@ -155,5 +159,14 @@
void closeChannel();
String getLastTrigger();
+
+ void setEclipseContext(IEclipseContext eclipseContext);
+
+ IEclipseContext getEclipseContext();
+
+ void sendSlaveData(Map<String, Object> data);
+ void setBlobService(IBlobService blobService);
+
+ IBlobService getBlobService();
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
index f746e99..df9a647 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
@@ -3,15 +3,11 @@
import java.lang.reflect.Method;
import java.util.Locale;
-import org.eclipse.osbp.ecview.core.common.context.IViewContext;
-
public interface IStateMachineParticipant {
void setStatemachine(IStateMachine statemachine);
IStateMachine getStatemachine();
- void setViewContext(IViewContext viewContext);
-
void init();
void setLocale(Locale locale);
@@ -20,10 +16,18 @@
Method setter(Object listener, String id, Class<?> parameter);
+ Method setter(Object listener, String id, Class<?> content, int contentIndex);
+
+ Method setter(Object listener, String id, Object content, int contentIndex);
+
Class<?> getReturnType(Object obj, String id);
+ void toggle(Object obj, String id);
+
void set(Object obj, String id, Object content);
+ void set(Object obj, String id, String device, Object content);
+
Object get(Object obj, String id);
void clear(Object obj, String id);
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/EnumCssClass.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/EnumCssClass.java
new file mode 100644
index 0000000..7c4a7a5
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/EnumCssClass.java
@@ -0,0 +1,55 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.ui.api.themes;
+
+/**
+ * CSS Style Class Names for OSBP html components
+ */
+public enum EnumCssClass {
+ /** combobox with icon */
+ COMBOBOX_WITH_ICON,
+ VIEW_HEADER_H2,
+ BOX,
+ CHART,
+ TABLE,
+ HAS_FOCUS,
+ SELECT_LANGUAGE,
+ SELECTION_AREA,
+ MULTI_SELECTION,
+ MULTI_SELECTION_AREA,
+ SINGLE_SELECTION,
+ SINGLE_SELECTION_AREA,
+ DATA_COMPONENT,
+ DATA_AREA,
+ MULTI_AREA,
+ WORK_AREA,
+ LOWER_AREA,
+ TOP_AREA,
+ SIDE_AREA,
+ VIEW,
+ CHART_VIEW,
+ DIALOG_VIEW,
+ ORGANIZATION_VIEW,
+ REPORT_VIEW,
+ TABLE_VIEW,
+ TOPOLOGY_VIEW,
+ MPARTTOOLBARAREA,
+ MPARTTOOLBAR;
+
+ public String styleName() {
+ return toString();
+ }
+ public String toString() {
+ return "os-"+super.toString().toLowerCase().replaceAll("_", "-");
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
index 4110a4c..3284922 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
@@ -14,10 +14,15 @@
import java.io.InputStream;
+import org.eclipse.equinox.app.IApplicationContext;
+
import com.vaadin.server.Resource;
public interface IThemeResourceService {
+ /** The id. */
+ public static String ID = IThemeResourceService.class.getName();
+
/** all available theme resource types */
static public enum ThemeResourceType {
/** any "big" images like background images */
@@ -26,9 +31,18 @@
ICON,
/** flag icon, mostly 16x16 px */
FLAG,
+ /** html resource */
+ HTML
}
/**
+ * Inits the themeResourceService
+ *
+ * @param appContext the app context
+ * @param themeEngine the theme engine
+ */
+ void init(IApplicationContext appContext, Object themeEngine);
+ /**
* Resets the base paths of the theme resource
*/
void reset();
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
index db34f9c..711dbe0 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
@@ -14,7 +14,6 @@
import java.util.Locale;
import org.eclipse.e4.ui.model.application.MApplication;
-import org.eclipse.osbp.ui.api.customfields.IBlobUploadComponent;
/**
* Every user object needs to implement this interface.
@@ -38,6 +37,12 @@
String getUserName();
/**
+ * Gets the profile image id.
+ *
+ * @return the profile image id
+ */
+ String getProfileImageId();
+ /**
* Gets the layouting strategy.
*
* @return the layouting strategy
@@ -116,13 +121,6 @@
String getEmail();
/**
- * Gets the blob upload component.
- *
- * @return the blob upload component
- */
- IBlobUploadComponent getBlobUploadComponent();
-
- /**
* Gets the roles.
*
* @return the roles
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
index 37fc79d..35b79e7 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
@@ -12,51 +12,31 @@
*/
package org.eclipse.osbp.ui.api.useraccess;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
-// TODO: Auto-generated Javadoc
/**
- * The Class AAuthorization.
+ * AbstractAuthorization holds permissions per role associated to one position.
+ * Grants and vetoes can be queried. Grants apply to object level, vetoes to attributes and relationships.
+ * Conflicts arising from merged roles of a position are resolved favoring the more generous grant and the less restrictive veto
*/
public abstract class AbstractAuthorization {
- /** The authorization groups. */
- private final HashMap<String, AbstractRoleAuthorizationGroup> fAuthorizationGroups;
+ /** The role permissions. */
+ private HashMap<String, List<Set<Permission>>> rolePermissions = new HashMap<>();
/**
- * Instantiates a new a authorization.
+ * Adds the role permissions.
*
- * @param authorizationGroups
- * the authorization groups
+ * @param roleName the role name
+ * @param permissions the permissions
*/
- protected AbstractAuthorization(AbstractRoleAuthorizationGroup... authorizationGroups) {
- fAuthorizationGroups = new HashMap<String, AbstractRoleAuthorizationGroup>();
- for (AbstractRoleAuthorizationGroup authorizationGroup : authorizationGroups) {
- fAuthorizationGroups.put(authorizationGroup.getRoleName(), authorizationGroup);
- }
- }
-
- /**
- * Gets the authorization group name.
- *
- * @return the authorization group name
- */
- final public String getAuthorizationGroupName() {
- return this.getClass().getSimpleName();
- }
-
- /**
- * Adds the role authorization group.
- *
- * @param roleName
- * the role name
- * @param group
- * the group
- */
- final public void addRoleAuthorizationGroup(String roleName, AbstractRoleAuthorizationGroup group) {
- fAuthorizationGroups.put(roleName, group);
+ public void addRolePermissions(String roleName, List<Set<Permission>> permissions) {
+ rolePermissions.put(roleName, permissions);
}
/**
@@ -66,8 +46,8 @@
* the role
* @return the role authorization group
*/
- final public AbstractRoleAuthorizationGroup getRoleAuthorizationGroup(String role) {
- return fAuthorizationGroups.get(role);
+ public final List<Set<Permission>> getRolePermissions(String role) {
+ return rolePermissions.get(role);
}
/**
@@ -75,117 +55,96 @@
*
* @return the authorization groups
*/
- final public HashMap<String, AbstractRoleAuthorizationGroup> getAuthorizationGroups() {
- return this.fAuthorizationGroups;
+ public final Map<String, List<Set<Permission>>> getAuthorizationGroups() {
+ return this.rolePermissions;
+ }
+
+ /**
+ * Gets the roles.
+ *
+ * @return the roles
+ */
+ public final Collection<String> getRoles() {
+ return rolePermissions.keySet();
}
+ public boolean isApplicableGrant(Group group, Action action, String descriptor) {
+ for(String roleName : getRoles()) {
+ for(Set<Permission> permissionSet : getAuthorizationGroups().get(roleName)) {
+ for(Permission permission:permissionSet) {
+ if(permission.clazz.equals(descriptor) && permission.group == group && permission.action.getWeight() >= action.getWeight()) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean isApplicableVeto(Group group, Action action, String descriptor, String property) {
+ for(String roleName : getRoles()) {
+ for(Set<Permission> permissionSet : getAuthorizationGroups().get(roleName)) {
+ for(Permission permission:permissionSet) {
+ if(permission.clazz.equals(descriptor) && permission.attribute != null && permission.attribute.equals(property) && permission.group == group && permission.action.getWeight() < action.getWeight()) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Granted.
+ *
+ * @param group the group
+ * @param clas the clas
+ * @param actions the actions
+ * @return the sets the
+ */
+ public static final Set<Permission> granted(Group group, String clas, Action... actions) {
+ Set<Permission> granted = new HashSet<>();
+ for (Action action : actions) {
+ granted.add(new Permission(group, clas, action));
+ }
+ return granted;
+ }
+
+ /**
+ * Denied.
+ *
+ * @param group the group
+ * @param clas the clas
+ * @param attribute the attribute
+ * @param actions the actions
+ * @return the sets the
+ */
+ public static final Set<Permission> denied(Group group, String clas, String attribute, Action... actions) {
+ Set<Permission> denied = new HashSet<>();
+ for (Action action : actions) {
+ denied.add(new Permission(group, clas, attribute, action));
+ }
+ return denied;
+ }
+
/**
* The Class Permission.
*/
public static class Permission {
-
- /** The Constant ANY. */
- private final static String ANY = "*";
-
/** The Constant SEPARATOR. */
- private final static String SEPARATOR = ":";
-
- /** The type. */
- private final Type fType;
+ private static final String SEPARATOR = ":";
/** The group. */
- private final Group fGroup;
+ private final Group group;
/** The class. */
- private final String fClass;
+ private final String clazz;
/** The attribute. */
- private final String fAttribute;
+ private final String attribute;
/** The action. */
- private final Action fAction;
-
- /**
- * For blip process start.
- *
- * @param blipProcess
- * the blip process
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forBlipProcess(String blipProcess, Action action) {
- return new Permission(Group.blipProcess, blipProcess, action);
- }
-
- /**
- * For blip user task execute.
- *
- * @param blipUserTask
- * the blip user task
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forBlipUserTask(String blipUserTask, Action action) {
- return new Permission(Group.blipUserTask, blipUserTask, action);
- }
-
- /**
- * For entity.
- *
- * @param entity
- * the entity
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forEntity(String entity, Action action) {
- return new Permission(Group.entity, entity, action);
- }
-
- /**
- * For entity property.
- *
- * @param entity
- * the entity
- * @param property
- * the property
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forEntityProperty(String entity, String property, Action action) {
- return new Permission(Group.entity, entity, property, action);
- }
-
- /**
- * For dto.
- *
- * @param dto
- * the dto
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forDto(String dto, Action action) {
- return new Permission(Group.dto, dto, action);
- }
-
- /**
- * For dto property.
- *
- * @param dto
- * the dto
- * @param property
- * the property
- * @param action
- * the action
- * @return the permission
- */
- public static Permission forDtoProperty(String dto, String property, Action action) {
- return new Permission(Group.dto, dto, property, action);
- }
+ private final Action action;
/**
* Instantiates a new permission.
@@ -198,23 +157,7 @@
* the action
*/
public Permission(Group group, String clas, Action action) {
- this(Type.GRANT, group, clas, null, action);
- }
-
- /**
- * Instantiates a new permission.
- *
- * @param group
- * the group
- * @param clas
- * the clas
- * @param attribute
- * the attribute
- * @param action
- * the action
- */
- public Permission(Group group, String clas, String attribute, Action action) {
- this(Type.GRANT, group, clas, attribute, action);
+ this(group, clas, null, action);
}
/**
@@ -231,12 +174,11 @@
* @param action
* the action
*/
- public Permission(Type type, Group group, String clas, String attribute, Action action) {
- fGroup = group;
- fClass = clas;
- fAttribute = attribute;
- fAction = action;
- fType = type;
+ public Permission(Group group, String clas, String attribute, Action action) {
+ this.group = group;
+ this.clazz = clas;
+ this.attribute = attribute;
+ this.action = action;
}
/*
@@ -244,348 +186,83 @@
*
* @see java.lang.Object#toString()
*/
+ @Override
public String toString() {
- return fGroup.toString() + SEPARATOR + fClass + SEPARATOR + fAttribute + SEPARATOR + fAction.toString();
- }
-
- /**
- * Checks if is permitted.
- *
- * @return true, if is permitted
- */
- public boolean isPermitted() {
- return fType.isPermitted();
- }
-
- /**
- * Checks for veto.
- *
- * @return true, if successful
- */
- public boolean hasVeto() {
- return !fType.isPermitted();
- }
-
- /**
- * Checks if permission is for an attribute. Negative logic!
- *
- * @return true, if is attribute
- */
- public boolean isAttribute() {
- return fAttribute != null;
- }
- }
-
- /**
- * The Enum Type.
- */
- public static enum Type {
-
- /** The grant. */
- GRANT(true),
- /** The deny. */
- DENY(false);
-
- /** The permitted. */
- private final boolean fPermitted;
-
- /**
- * Instantiates a new type.
- *
- * @param permitted
- * the permitted
- */
- private Type(boolean permitted) {
- fPermitted = permitted;
- }
-
- /**
- * Checks if is permitted.
- *
- * @return true, if is permitted
- */
- public boolean isPermitted() {
- return fPermitted;
+ return group.toString() + SEPARATOR + clazz + SEPARATOR + attribute + SEPARATOR + action.toString();
}
}
/**
* The Enum Group.
*/
- public static enum Group {
+ public enum Group {
/** The blip process start. */
- blipProcess(Action.startable),
+ PROCESS,
/** The blip user task execute. */
- blipUserTask(Action.executable),
+ TASK,
/** The entity. */
- entity(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+ ENTITY,
/** The bean. */
- bean(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+ BEAN,
/** The dto. */
- dto(Action.readable, Action.creatable, Action.updatable, Action.deletable);
-
- /** The default action. */
- private final Action fDefaultAction;
-
- /** The any actions. */
- private final Action[] fAnyActions;
-
- /**
- * Instantiates a new group.
- *
- * @param defaultAction
- * the default action
- * @param anyActions
- * the any actions
- */
- private Group(Action defaultAction, Action... anyActions) {
- fDefaultAction = defaultAction;
- fAnyActions = anyActions;
- }
-
- /**
- * By name.
- *
- * @param value
- * the value
- * @return the group
- */
- public static Group byName(String value) {
- for (Group item : values()) {
- if (value.equalsIgnoreCase(item.toString())) {
- return item;
- }
- }
- return null;
- }
-
- /**
- * Checks for default action.
- *
- * @return true, if successful
- */
- public boolean hasDefaultAction() {
- return (fDefaultAction != null);
- }
-
- /**
- * Gets the default action.
- *
- * @return the default action
- */
- public Action getDefaultAction() {
- return fDefaultAction;
- }
-
- /**
- * Gets the any actions.
- *
- * @return the any actions
- */
- public Action[] getAnyActions() {
- return fAnyActions;
- }
+ DTO;
}
/**
* The Enum Action.
*/
- public static enum Action {
-
+ public enum Action {
/** can a new entity instance be CREATED. */
- creatable,
+ CREATABLE(3),
/** can an entity instance be READ. */
- readable,
+ READABLE(1),
/** can an entity instance be UPDATED. */
- updatable,
+ UPDATABLE(2),
/** can an entity instance be DELETED. */
- deletable,
+ DELETEABLE(4),
/** can an entity instance be CREATED, READ, UPDATED and DELETED. */
- any,
+ ANY(1000),
+
/** is the entity.property INVISIBLE, otherwise at least visible */
- invisible,
+ INVISIBLE(3),
+
/** is entity.property DISABLED, otherwise at least enabled */
- disabled(invisible),
+ DISABLED(2),
+
/** is entity.property NONEDITABLE, otherwise at least editable */
- noneditable(disabled),
+ NONEDITABLE(1),
+ /** The unvetoed. */
+ UNVETOED(0),
+
/** is the blip process startable. */
- startable,
+ STARTABLE(1),
/** is the blip user task event executable. */
- executable;
+ TASKABLE(1);
+
- /** The depends on action. */
- private final Action fDependsOnAction;
-
- /** The auto granted actions. */
- private Set<Action> fAutoGrantedActions;
-
- /** The auto denied actions. */
- private Set<Action> fAutoDeniedActions;
+ private final int weight;
/**
* Instantiates a new action.
*/
- private Action() {
- this(null);
+ private Action(int weight) {
+ this.weight = weight;
+ }
+
+ public int getWeight() {
+ return weight;
}
- /**
- * Instantiates a new action.
- *
- * @param dependsOnAction
- * the depends on action
- */
- private Action(Action dependsOnAction) {
- fDependsOnAction = dependsOnAction;
- }
-
- /**
- * By name.
- *
- * @param value
- * the value
- * @return the action
- */
- public static Action byName(String value) {
- if (value != null) {
- for (Action item : values()) {
- if (value.equalsIgnoreCase(item.toString())) {
- return item;
- }
- }
- }
- return null;
- }
-
- /**
- * Check auto granted actions.
- */
- private void checkAutoGrantedActions() {
- if (fAutoGrantedActions == null) {
- fAutoGrantedActions = new HashSet<Action>();
- if (fDependsOnAction != null) {
- fAutoGrantedActions.add(fDependsOnAction);
- fAutoGrantedActions.addAll(fDependsOnAction.getAutoGrantedActions());
- }
- }
- }
-
- /**
- * Check auto denied actions.
- */
- private void checkAutoDeniedActions() {
- if (fAutoDeniedActions == null) {
- fAutoDeniedActions = new HashSet<Action>();
- for (Action checkAction : values()) {
- if (this.equals(checkAction.fDependsOnAction)) {
- fAutoDeniedActions.add(checkAction);
- fAutoDeniedActions.addAll(checkAction.getAutoDeniedActions());
- }
- }
- }
- }
-
- /**
- * Checks for auto granted actions.
- *
- * @return true, if successful
- */
- public boolean hasAutoGrantedActions() {
- checkAutoGrantedActions();
- return !fAutoGrantedActions.isEmpty();
- }
-
- /**
- * Gets the auto granted actions.
- *
- * @return the auto granted actions
- */
- public Set<Action> getAutoGrantedActions() {
- checkAutoGrantedActions();
- return fAutoGrantedActions;
- }
-
- /**
- * Checks for auto denied actions.
- *
- * @return true, if successful
- */
- public boolean hasAutoDeniedActions() {
- checkAutoDeniedActions();
- return !fAutoDeniedActions.isEmpty();
- }
-
- /**
- * Gets the auto denied actions.
- *
- * @return the auto denied actions
- */
- public Set<Action> getAutoDeniedActions() {
- checkAutoDeniedActions();
- return fAutoDeniedActions;
- }
- }
-
- /**
- * The Enum PermissionResult.
- */
- public static enum PermissionResult {
-
- /** The explicit granted. */
- EXPLICIT_GRANTED(true, true),
-
- /** The explicit denied. */
- EXPLICIT_DENIED(true, false),
-
- /** The implicit denied. */
- IMPLICIT_DENIED(false, false);
-
- /** The permitted. */
- private final boolean fPermitted;
-
- /** The explicit. */
- private final boolean fExplicit;
-
- /**
- * Instantiates a new permission result.
- *
- * @param explicit
- * the explicit
- * @param permitted
- * the permitted
- */
- private PermissionResult(boolean explicit, boolean permitted) {
- fExplicit = explicit;
- fPermitted = permitted;
- }
-
- /**
- * Checks if is explicit.
- *
- * @return true, if is explicit
- */
- public boolean isExplicit() {
- return fExplicit;
- }
-
- /**
- * Checks if is permitted.
- *
- * @return true, if is permitted
- */
- public boolean isPermitted() {
- return fPermitted;
- }
}
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
index 6ba7d66..fab8cf1 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
@@ -13,7 +13,6 @@
package org.eclipse.osbp.ui.api.useraccess;
-// TODO: Auto-generated Javadoc
/**
* The Class APosition.
*/
@@ -33,6 +32,9 @@
/** The name of the node. */
private String name;
+
+ /** The link alias. */
+ private String linkAlias;
public IOrgElement getSuperOrdinate() {
return superOrdinate;
@@ -59,6 +61,17 @@
public void setName(String name) {
this.name = name;
}
+
+ @Override
+ public String getLinkAlias() {
+ return linkAlias;
+ }
+
+ public void setLinkAlias(String linkAlias) {
+ this.linkAlias = linkAlias;
+ }
+
+
/*
* (non-Javadoc)
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
index 2974937..7443897 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
@@ -13,10 +13,7 @@
package org.eclipse.osbp.ui.api.useraccess;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-// TODO: Auto-generated Javadoc
/**
* The Class APosition.
*/
@@ -25,25 +22,7 @@
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 8654353192167477349L;
- /** The role names. */
- private Set<String> roleNames = new HashSet<>();
-
- /** The permission list. */
- private IPermissionList permissions;
-
- public void setRoles(Set<String> roles) {
- this.roleNames = roles;
- }
-
- /**
- * Adds a role
- *
- * @param role
- * the role
- */
- public void addRole(String role) {
- roleNames.add(role);
- }
+ private AbstractAuthorization authorization;
/**
* Gets the roles.
@@ -51,15 +30,17 @@
* @return the roles
*/
public Collection<String> getRoles() {
- return roleNames;
+ return authorization.getRoles();
}
-
+
@Override
- public IPermissionList getPermissionList() {
- return permissions;
+ public AbstractAuthorization getAuthorization() {
+ return authorization;
+ }
+
+ @Override
+ public void setAuthorization(AbstractAuthorization authorization) {
+ this.authorization = authorization;
}
- public void setPermissionList(IPermissionList permissions) {
- this.permissions = permissions;
- }
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
index f3484ce..d2a7956 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
@@ -17,7 +17,6 @@
import java.util.List;
import java.util.Map;
-// TODO: Auto-generated Javadoc
/**
* The Class ASubOrganization.
*/
@@ -26,26 +25,17 @@
/** The title of an organization. */
private String title;
/** The position map of all positions including of its sub organizations. */
- private Map<String, IPosition> positionMap = new HashMap<String, IPosition>();
+ private Map<String, IPosition> positionMap = new HashMap<>();
+
+ /** The alias map to the position map. */
+ private Map<String, IPosition> linkAliasMap = new HashMap<>();
/**
* The position map only of the own positions without its sub organizations
* .
*/
- private Map<String, IPosition> ownPositionMap = new HashMap<String, IPosition>();
+ private Map<String, IPosition> ownPositionMap = new HashMap<>();
/** The sub organization map. */
- private Map<String, ISubOrganization> subOrgMap = new HashMap<String, ISubOrganization>();
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.osbp.authentication.provider.ISubOrganization#getFilterValueList
- * ()
- */
- @Override
- public List<String> getFilterValueList() {
- return null;
- }
+ private Map<String, ISubOrganization> subOrgMap = new HashMap<>();
/**
* Gets the title.
@@ -79,6 +69,13 @@
return positionMap.get(name);
}
+
+ @Override
+ public IPosition getPositionByLinkAlias(String name) {
+ addSubOrgPositions();
+ return linkAliasMap.get(name);
+ }
+
/*
* (non-Javadoc)
*
@@ -86,7 +83,7 @@
* org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPositions()
*/
@Override
- final public Collection<IPosition> getPositions() {
+ public final Collection<IPosition> getPositions() {
addSubOrgPositions();
return positionMap.values();
}
@@ -101,26 +98,27 @@
}
for (IPosition subOrgPosition : subOrg.getOwnPositions()) {
positionMap.put(subOrgPosition.getName(), subOrgPosition);
+ linkAliasMap.put(subOrgPosition.getLinkAlias(), subOrgPosition);
}
}
}
@Override
- final public Collection<IPosition> getOwnPositions() {
+ public final Collection<IPosition> getOwnPositions() {
return ownPositionMap.values();
}
- final public void setPosition(IPosition position) {
+ public final void setPosition(IPosition position) {
positionMap.put(position.getName(), position);
+ linkAliasMap.put(position.getLinkAlias(), position);
ownPositionMap.put(position.getName(), position);
}
- final public Collection<ISubOrganization> getSubOrganizations() {
+ public final Collection<ISubOrganization> getSubOrganizations() {
return subOrgMap.values();
}
public void setSubOrganization(ISubOrganization subOrg) {
subOrgMap.put(subOrg.getName(), subOrg);
}
-
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
index 9e0e539..9576757 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
@@ -24,6 +24,13 @@
* @return the name
*/
String getName();
+
+ /**
+ * Gets the link alias.
+ *
+ * @return the link alias
+ */
+ String getLinkAlias();
/**
* Checks for superior.
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
index 87f3800..28fe582 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
@@ -1,5 +1,20 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
package org.eclipse.osbp.ui.api.useraccess;
+import java.util.Collection;
+
public interface IPosition extends IOrgElement {
/**
@@ -7,6 +22,19 @@
*
* @return the permission list
*/
- IPermissionList getPermissionList();
-
+ AbstractAuthorization getAuthorization();
+
+ /**
+ * Sets the authorization.
+ *
+ * @param authorization the new authorization
+ */
+ void setAuthorization(AbstractAuthorization authorization);
+
+ /**
+ * Gets the roles as String collection.
+ *
+ * @return the roles
+ */
+ Collection<String> getRoles();
}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
index 8c51dd1..5770f2e 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
@@ -22,13 +22,6 @@
public interface ISubOrganization extends IOrgElement {
/**
- * Gets the filter value list.
- *
- * @return the filter value list
- */
- public java.util.List getFilterValueList();
-
- /**
* Gets the position node.
*
* @param name
@@ -38,6 +31,13 @@
IPosition getPosition(final String name);
/**
+ * Gets the position by link alias.
+ *
+ * @param name the name
+ * @return the position by link alias
+ */
+ IPosition getPositionByLinkAlias(final String name);
+ /**
* Sets the position node.
*
* @param name
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
index 21ba4b6..13efe83 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
@@ -18,8 +18,8 @@
import org.eclipse.osbp.dsl.common.datatypes.IDto;
import org.eclipse.osbp.ui.api.complexdatacontainer.IComplexDataContainer;
-import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
-import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.PermissionResult;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
import org.eclipse.osbp.ui.api.userfilter.UserFilterMap;
// TODO: Auto-generated Javadoc
@@ -46,6 +46,13 @@
* @return the user
*/
IDto getUser();
+
+ /**
+ * Gets the user name.
+ *
+ * @return the user name
+ */
+ String getUserName();
/**
* Gets the profileimage id.
@@ -115,16 +122,28 @@
*
* @return the permissions
*/
- IPermissionList getPermissions();
+ AbstractAuthorization getAuthorization();
/**
- * Checks if is permitted.
+ * Checks if the given accessmode is granted.
*
- * @param permission
- * the permission
- * @return the permission result
+ * @param group the group
+ * @param action the action
+ * @param objectDescriptor the object descriptors
+ * @return true, if is granted
*/
- PermissionResult isPermitted(Permission permission);
+ boolean isGranted(Group group, Action action, String objectDescriptor);
+
+ /**
+ * Checks if property is vetoed, means if a property is invisible, etc.
+ *
+ * @param group the group
+ * @param action the action
+ * @param objectDescriptor the object descriptor
+ * @param propertyDescriptor the property descriptor
+ * @return true, if is vetoed
+ */
+ boolean isVetoed(Group group, Action action, String objectDescriptor, String propertyDescriptor);
/**
* Checks if is authenticated.
@@ -274,7 +293,7 @@
* the username
* @return the i permission list
*/
- IPermissionList findPermissionsForUser(String username);
+ AbstractAuthorization findPermissionsForUser(String username);
/**
* Check user name uniqueness for logged in users.
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
index 9be66a8..f038d26 100644
--- a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
@@ -29,7 +29,7 @@
}
}
- private Set<IInitializationProvider> initializationProviders = new HashSet<IInitializationProvider>();
+ private Set<IInitializationProvider> initializationProviders = new HashSet<>();
/* (non-Javadoc)
* @see org.eclipse.osbp.ui.initialization.IInitializationListener#bindInitializationProvider(org.eclipse.osbp.ui.initialization.AbstractInitializationProvider)