Merge remote-tracking branch 'dev' into mkoller/atfxadapter
Conflicts:
build.gradle
Signed-off-by: Matthias Koller <m.koller@peak-solution.de>
diff --git a/NOTICE.txt b/NOTICE.txt
index 8bbd2e1..0dc71e0 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -17,13 +17,13 @@
source code repository logs.
Copyright (c) 2016-2018 Gigatronik Ingolstadt GmbH
-Copyright (c) 2016-2018 Peak Solution GmbH
+Copyright (c) 2016-2019 Peak Solution GmbH
Copyright (c) 2017-2018 science + computing AG Tuebingen (ATOS SE)
Copyright (c) 2017-2018 Canoo Engineering AG
Copyright (c) 2017 Florian Schmitt
-Copyright (c) 2017-2018 Angelika Wittek
+Copyright (c) 2017-2019 Angelika Wittek
Copyright (c) 2018 Elektronische Fahrwerksysteme GMBH
-Copyright (c) 2018 Karakun AG
+Copyright (c) 2018-2019 Karakun AG
## Declared Project Licenses
@@ -61,7 +61,13 @@
commons-httpclient-3.1.jar (3.1)
* License: Apache License, 2.0
-commons-lang3-3.4.jar (3.4)
+commons-lang3-3.8.1.jar (3.8.1)
+ * License: Apache License, 2.0
+
+commons-text-1.6.jar (1.6)
+ * License: Apache License, 2.0
+
+commons-math-2.2.jar (2.2)
* License: Apache License, 2.0
gson-2.7.jar (2.7)
@@ -71,7 +77,7 @@
* License: Apache License, 2.0
Gradle Wrapper (4.10.2)
- * License: Apache License, 2.0
+ * License: Apache License, 2.0
hk2-api-2.5.0-b05.jar (2.5.0-b05)
* License: CDDL-1.1
@@ -130,6 +136,9 @@
jersey-media-sse-2.23.2.jar (2.23.2)
* License: CDDL
+jersey-media-multipart-2.23.2.jar (2.23.2)
+ * License: CDDL
+
jersey-server-2.23.2.jar (2.23.2)
* License: Apache-2.0
@@ -317,10 +326,10 @@
From Dr. Ralph Noerenberg
Date: 08/15/2016
"Herewith, we release the generated Client-Source-Code generated from our CORBA IDLs, namely
-* CORBANotification Service (generated from „AvalonEvent.idl”)
-* CORBAFileServer (generated from „CorbaFileServer.idl“),
-Under the Eclipse Public License (EPL). This agreement does not include the „AvalonEvent.idl“ and
-„CorbaFileServer.idl“ itself, which remain protected property of HighQSoft. "
+* CORBANotification Service (generated from AvalonEvent.idl)
+* CORBAFileServer (generated from CorbaFileServer.idl),
+Under the Eclipse Public License (EPL). This agreement does not include the AvalonEvent.idl and
+CorbaFileServer.idl itself, which remain protected property of HighQSoft. "
OMG Notification Service Specification Version: 1.1
The terms of use are defined in section "Freely Available And Available
diff --git a/build.gradle b/build.gradle
index d98ff59..430b1d0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -37,4 +37,13 @@
jar {
metaInf { from 'NOTICE.txt' }
metaInf { from 'LICENSE.txt' }
+}
+
+task sourcesJar(type: Jar, dependsOn: classes) {
+ classifier = 'sources'
+ from sourceSets.main.allSource
+}
+
+artifacts {
+ archives sourcesJar
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/mdm/api/dflt/model/EntityFactory.java b/src/main/java/org/eclipse/mdm/api/dflt/model/EntityFactory.java
index 0137401..58d29ae 100644
--- a/src/main/java/org/eclipse/mdm/api/dflt/model/EntityFactory.java
+++ b/src/main/java/org/eclipse/mdm/api/dflt/model/EntityFactory.java
@@ -14,32 +14,32 @@
package org.eclipse.mdm.api.dflt.model;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Optional;
-import java.util.Set;
-
-import org.eclipse.mdm.api.base.adapter.Core;
-import org.eclipse.mdm.api.base.model.BaseEntity;
-import org.eclipse.mdm.api.base.model.BaseEntityFactory;
-import org.eclipse.mdm.api.base.model.ContextComponent;
-import org.eclipse.mdm.api.base.model.ContextRoot;
-import org.eclipse.mdm.api.base.model.ContextSensor;
-import org.eclipse.mdm.api.base.model.ContextType;
-import org.eclipse.mdm.api.base.model.Entity;
-import org.eclipse.mdm.api.base.model.Enumeration;
-import org.eclipse.mdm.api.base.model.Measurement;
-import org.eclipse.mdm.api.base.model.Quantity;
-import org.eclipse.mdm.api.base.model.ScalarType;
-import org.eclipse.mdm.api.base.model.Test;
-import org.eclipse.mdm.api.base.model.TestStep;
-import org.eclipse.mdm.api.base.model.Value;
-import org.eclipse.mdm.api.base.model.ValueType;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.Set;
+
+import org.eclipse.mdm.api.base.adapter.Core;
+import org.eclipse.mdm.api.base.model.BaseEntity;
+import org.eclipse.mdm.api.base.model.BaseEntityFactory;
+import org.eclipse.mdm.api.base.model.ContextComponent;
+import org.eclipse.mdm.api.base.model.ContextRoot;
+import org.eclipse.mdm.api.base.model.ContextSensor;
+import org.eclipse.mdm.api.base.model.ContextType;
+import org.eclipse.mdm.api.base.model.Entity;
+import org.eclipse.mdm.api.base.model.Enumeration;
+import org.eclipse.mdm.api.base.model.Measurement;
+import org.eclipse.mdm.api.base.model.Quantity;
+import org.eclipse.mdm.api.base.model.ScalarType;
+import org.eclipse.mdm.api.base.model.Test;
+import org.eclipse.mdm.api.base.model.TestStep;
+import org.eclipse.mdm.api.base.model.Value;
+import org.eclipse.mdm.api.base.model.ValueType;
import org.eclipse.mdm.api.base.model.VersionState;
/**
@@ -53,7 +53,23 @@
// ======================================================================
// Public methods
// ======================================================================
-
+
+ /**
+ * Creates a new {@link Role}.
+ *
+ * @param name
+ * Name of the created {@code Role}.
+ * @return The created {@code Role} is returned.
+ */
+ public Role createRole(String name) {
+ Role role = new Role(createCore(Role.class));
+
+ // properties
+ role.setName(name);
+
+ return role;
+ }
+
/**
* Always throws an UnsupportedOperationException since in a default model
* each {@link Test} has a parent {@link Pool}.
@@ -103,7 +119,20 @@
return pool;
}
-
+
+ /**
+ * Creates a new {@link Test} for given {@link Pool}.
+ *
+ * @param name
+ * Name of the created {@code Test}.
+ * @param pool
+ * The parent {@code Pool}.
+ * @return The created {@code Test} is returned.
+ */
+ public Test createTest(String name, Pool pool) {
+ return createTest(name, pool, (Status) null);
+ }
+
/**
* Creates a new {@link Test} for given {@link Pool} using given
* {@link TemplateTest}.
@@ -153,12 +182,31 @@
* @return The created {@code ContextRoot} is returned.
*/
public ContextRoot createContextRoot(Measurement measurement, TemplateRoot templateRoot) {
- ContextRoot contextRoot = createContextRoot(templateRoot);
-
- // relations
- getCore(measurement).getMutableStore().set(contextRoot, templateRoot.getContextType());
-
- return contextRoot;
+ return createContextRoot(Arrays.asList(measurement), templateRoot);
+ }
+
+ /**
+ * Creates a new {@link ContextRoot} for given {@link List} if {@link Measurement}s using
+ * given {@link TemplateRoot}. If List is null or empty context root is created with no
+ * relations.
+ *
+ * @param measurements
+ * The parent {@code Measurement}.
+ * @param templateRoot
+ * The template the returned {@code ContextRoot} will be derived
+ * from.
+ * @return The created {@code ContextRoot} is returned.
+ */
+ public ContextRoot createContextRoot(List<Measurement> measurements, TemplateRoot templateRoot) {
+ ContextRoot contextRoot = createContextRoot(templateRoot);
+
+ // relations
+ if(measurements != null && !measurements.isEmpty()) {
+ measurements.forEach(m ->
+ getCore(m).getMutableStore().set(contextRoot, templateRoot.getContextType()));
+ }
+
+ return contextRoot;
}
/**
@@ -919,7 +967,7 @@
* from.
* @return The created {@code TestStep} is returned.
*/
- protected TestStep createTestStep(Test test, TemplateTestStep templateTestStep) {
+ public TestStep createTestStep(Test test, TemplateTestStep templateTestStep) {
return createTestStep(test, null, templateTestStep);
}
@@ -941,7 +989,7 @@
TemplateTest templateTest = TemplateTest.of(test)
.orElseThrow(() -> new IllegalArgumentException("Template test is not available."));
if (!templateTest.contains(templateTestStep)) {
- throw new IllegalArgumentException("Template test step is part of the test template.");
+ throw new IllegalArgumentException("Template test step is not part of the test template.");
}
TestStep testStep = createTestStep(templateTestStep.getName(), test, status);
diff --git a/src/main/java/org/eclipse/mdm/api/dflt/model/Role.java b/src/main/java/org/eclipse/mdm/api/dflt/model/Role.java
new file mode 100644
index 0000000..cdb1221
--- /dev/null
+++ b/src/main/java/org/eclipse/mdm/api/dflt/model/Role.java
@@ -0,0 +1,43 @@
+package org.eclipse.mdm.api.dflt.model;
+
+import org.eclipse.mdm.api.base.adapter.Core;
+import org.eclipse.mdm.api.base.model.BaseEntity;
+import org.eclipse.mdm.api.base.model.Deletable;
+import org.eclipse.mdm.api.base.model.Describable;
+import org.eclipse.mdm.api.base.model.User;
+
+/**
+ * Implementation of the role entity type. Each role can contain multiple {@link User}
+ * and each {@link User} can be assigned multiple {@link Role}s.
+ */
+public class Role extends BaseEntity implements Deletable, Describable {
+
+ public static final String ATTR_SUPERUSER_FLAG = "SuperuserFlag";
+ public static final String REL_GROUPS2USERS = "groups2users";
+
+ /**
+ * Constructor.
+ *
+ * @param core
+ * The {@link Core}.
+ */
+ Role(Core core) {
+ super(core);
+ getValue(ATTR_SUPERUSER_FLAG).set((short) 0);
+ }
+
+ /**
+ * @param user User to add
+ */
+ public void addUser(User user) {
+ getCore().getNtoMStore().add(REL_GROUPS2USERS, user);
+ }
+
+
+ /**
+ * @param user {@link User} to remove
+ */
+ public void removeUser(User user) {
+ getCore().getNtoMStore().remove(REL_GROUPS2USERS, user);
+ }
+}