Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Fleischer2018-10-26 16:50:22 +0000
committerMatthias Koller2018-10-31 07:50:05 +0000
commitac26b72971a856945de19dfb741fb1e37d6b9ea6 (patch)
tree75d093fde372d4b09e24db64e52b3049243f2289
parent7b75ef0be7f1ca630f6eb5ad71df2bd94d6ab8b8 (diff)
downloadorg.eclipse.mdm.api.base-ac26b72971a856945de19dfb741fb1e37d6b9ea6.tar.gz
org.eclipse.mdm.api.base-ac26b72971a856945de19dfb741fb1e37d6b9ea6.tar.xz
org.eclipse.mdm.api.base-ac26b72971a856945de19dfb741fb1e37d6b9ea6.zip
SequenceRepresentation etc. for LocalColumns.
Signed-off-by: Martin Fleischer <m.fleischer@peak-solution.de>
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/massdata/IndependentBuilder.java11
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequest.java46
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequestBuilder.java6
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/massdata/WriteRequest.java10
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/model/MeasuredValues.java81
-rw-r--r--src/main/java/org/eclipse/mdm/api/base/model/ScalarType.java12
-rwxr-xr-xsrc/test/java/org/eclipse/mdm/api/base/model/ModelTest.java6
7 files changed, 148 insertions, 24 deletions
diff --git a/src/main/java/org/eclipse/mdm/api/base/massdata/IndependentBuilder.java b/src/main/java/org/eclipse/mdm/api/base/massdata/IndependentBuilder.java
index c7dcff4..8449aa8 100644
--- a/src/main/java/org/eclipse/mdm/api/base/massdata/IndependentBuilder.java
+++ b/src/main/java/org/eclipse/mdm/api/base/massdata/IndependentBuilder.java
@@ -69,6 +69,17 @@ public class IndependentBuilder extends WriteRequestFinalizer {
public final WriteRequestFinalizer independent() {
getWriteRequest().setIndependent();
return this;
+ }
+
+ /**
+ * Triggers the measured values of the underlying {@link Channel} to be
+ * independent or not, depending on the value specified.
+ *
+ * @return The {@link WriteRequestFinalizer} is returned.
+ */
+ public final WriteRequestFinalizer independent(boolean independent) {
+ getWriteRequest().setIndependent(independent);
+ return this;
}
}
diff --git a/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequest.java b/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequest.java
index c664cfb..126bf65 100644
--- a/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequest.java
+++ b/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequest.java
@@ -20,7 +20,8 @@ import java.util.HashMap;
import java.util.Map;
import org.eclipse.mdm.api.base.model.Channel;
-import org.eclipse.mdm.api.base.model.ChannelGroup;
+import org.eclipse.mdm.api.base.model.ChannelGroup;
+import org.eclipse.mdm.api.base.model.SequenceRepresentation;
import org.eclipse.mdm.api.base.model.Unit;
/**
@@ -30,7 +31,21 @@ import org.eclipse.mdm.api.base.model.Unit;
* @author Viktor Stoehr, Gigatronik Ingolstadt GmbH
* @author Sebastian Dirsch, Gigatronik Ingolstadt GmbH
*/
-public final class ReadRequest {
+public final class ReadRequest {
+ public enum ValuesMode
+ {
+ /**
+ * MeasuredValues will contain the final values, calculated for non-explicit sequence representations
+ * using generation parameters and, if applicable, the raw values.
+ * No generation parameters are returned in the resulting MeasuredValues, {@link SequenceRepresentation} will
+ * be EXPLICIT.
+ */
+ CALCULATED,
+ /**
+ * MeasuredValues will contain the (raw) values and generation parameters as present in the storage.
+ */
+ STORAGE
+ }
// ======================================================================
// Instance variables
@@ -42,7 +57,9 @@ public final class ReadRequest {
private boolean loadAllChannels;
private int requestSize = 100_000;
- private int startIndex;
+ private int startIndex;
+
+ private ValuesMode valuesMode = ValuesMode.CALCULATED;
// ======================================================================
// Constructors
@@ -59,7 +76,8 @@ public final class ReadRequest {
channels.putAll(readRequest.getChannels());
loadAllChannels = readRequest.loadAllChannels;
requestSize = readRequest.getRequestSize();
- startIndex = readRequest.getStartIndex() + readRequest.getRequestSize();
+ startIndex = readRequest.getStartIndex() + readRequest.getRequestSize();
+ valuesMode = readRequest.getValuesMode();
}
/**
@@ -160,6 +178,15 @@ public final class ReadRequest {
*/
public int getStartIndex() {
return startIndex;
+ }
+
+ /**
+ * Returns the {link ValuesMode} for measured values retrieval.
+ *
+ * @return The valuesMode is returned.
+ */
+ public ValuesMode getValuesMode() {
+ return valuesMode;
}
// ======================================================================
@@ -228,6 +255,17 @@ public final class ReadRequest {
*/
void setStartIndex(int startIndex) {
this.startIndex = startIndex;
+ }
+
+ /**
+ * Sets the {@link ValuesMode} for measured values retrieval.
+ *
+ * @param valuesMode
+ * The {@link VAluesMode} to set.
+ */
+ void setValuesMode(ValuesMode valuesMode)
+ {
+ this.valuesMode = valuesMode;
}
/**
diff --git a/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequestBuilder.java b/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequestBuilder.java
index 458e39d..7839e70 100644
--- a/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequestBuilder.java
+++ b/src/main/java/org/eclipse/mdm/api/base/massdata/ReadRequestBuilder.java
@@ -154,6 +154,12 @@ public final class ReadRequestBuilder {
readRequest.setStartIndex(startIndex);
return this;
+ }
+
+ public ReadRequestBuilder valuesMode(ReadRequest.ValuesMode valuesMode)
+ {
+ readRequest.setValuesMode(valuesMode);
+ return this;
}
/**
diff --git a/src/main/java/org/eclipse/mdm/api/base/massdata/WriteRequest.java b/src/main/java/org/eclipse/mdm/api/base/massdata/WriteRequest.java
index 6b2a70b..cabfb2b 100644
--- a/src/main/java/org/eclipse/mdm/api/base/massdata/WriteRequest.java
+++ b/src/main/java/org/eclipse/mdm/api/base/massdata/WriteRequest.java
@@ -299,6 +299,16 @@ public final class WriteRequest {
*/
void setIndependent() {
independent = true;
+ }
+
+ /**
+ * Sets the independent flag for this request to the value specified.
+ *
+ * @param independent
+ * The independent flag.
+ */
+ void setIndependent(boolean independent) {
+ this.independent = independent;
}
/**
diff --git a/src/main/java/org/eclipse/mdm/api/base/model/MeasuredValues.java b/src/main/java/org/eclipse/mdm/api/base/model/MeasuredValues.java
index fe0ffca..95a1909 100644
--- a/src/main/java/org/eclipse/mdm/api/base/model/MeasuredValues.java
+++ b/src/main/java/org/eclipse/mdm/api/base/model/MeasuredValues.java
@@ -15,13 +15,13 @@
package org.eclipse.mdm.api.base.model;
-import static java.util.stream.IntStream.range;
-import static org.eclipse.mdm.api.base.model.Value.readAt;
-
-import java.lang.reflect.Array;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
+import static java.util.stream.IntStream.range;
+import static org.eclipse.mdm.api.base.model.Value.readAt;
+
+import java.lang.reflect.Array;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
import java.util.stream.Collectors;
/**
@@ -43,14 +43,19 @@ public final class MeasuredValues {
/*
* TODO: - replace name and unit with the corresponding Channel & Unit
- * entities - provide AxisType, Independent flag and further informations if
- * required - provide an overall offset for this value sequence
+ * entities - provide further information if required
+ * - provide an overall offset for this value sequence
*/
private final String name;
private final String unit;
- private final int length;
+ private final int length;
+
+ private final SequenceRepresentation sequenceRepresentation;
+ private final double[] generationParameters;
+ private final boolean independent;
+ private final AxisType axisType;
// ======================================================================
// Constructors
@@ -64,7 +69,15 @@ public final class MeasuredValues {
* @param name
* This is the name of the corresponding {@link Channel}.
* @param unit
- * Name of the unit the contained values are of.
+ * Name of the unit the contained values are of.
+ * @param sequenceRepresentation
+ * The {@link SequenceRepresentation} of the measured values.
+ * @param generationParameters
+ * The generation parameters for the measured values.
+ * @param independent
+ * The independent flag of the measured values.
+ * @param axisType
+ * The {@link AxisType} of the measured values.
* @param values
* The measured values.
* @param flags
@@ -73,10 +86,14 @@ public final class MeasuredValues {
* Thrown if values or flags is null or length of values and
* flags is not equal.
*/
- MeasuredValues(ScalarType scalarType, String name, String unit, Object values, boolean[] flags) {
+ MeasuredValues(ScalarType scalarType, String name, String unit, SequenceRepresentation sequenceRepresentation, double[] generationParameters, boolean independent, AxisType axisType, Object values, boolean[] flags) {
this.name = name;
- this.unit = unit == null ? "" : unit;
- this.scalarType = scalarType;
+ this.unit = (unit == null ? "" : unit);
+ this.scalarType = scalarType;
+ this.sequenceRepresentation = sequenceRepresentation;
+ this.generationParameters = generationParameters;
+ this.independent = independent;
+ this.axisType = axisType;
this.values = values;
if (values == null || flags == null) {
@@ -127,6 +144,42 @@ public final class MeasuredValues {
*/
public int getLength() {
return length;
+ }
+
+ /**
+ * Returns the {@link SequenceRepresentation} of this measured values sequence.
+ *
+ * @return The {@code SequenceRepresentation} is returned.
+ */
+ public SequenceRepresentation getSequenceRepresentation() {
+ return sequenceRepresentation;
+ }
+
+ /**
+ * Returns the generation parameters for this measured values sequence.
+ *
+ * @return The generation parameters are returned.
+ */
+ public double[] getGenerationParameters() {
+ return generationParameters;
+ }
+
+ /**
+ * Returns the independent flag of this measured values sequence.
+ *
+ * @return The independent flag is returned.
+ */
+ public boolean isIndependent() {
+ return independent;
+ }
+
+ /**
+ * Returns the {@link AxisType} of this measured values sequence.
+ *
+ * @return The {@code AxisType} is returned.
+ */
+ public AxisType getAxisType() {
+ return axisType;
}
/**
diff --git a/src/main/java/org/eclipse/mdm/api/base/model/ScalarType.java b/src/main/java/org/eclipse/mdm/api/base/model/ScalarType.java
index fb3784e..6ddb0e1 100644
--- a/src/main/java/org/eclipse/mdm/api/base/model/ScalarType.java
+++ b/src/main/java/org/eclipse/mdm/api/base/model/ScalarType.java
@@ -173,7 +173,13 @@ public final class ScalarType extends EnumerationValue {
* @param name
* This is the name of the corresponding {@link Channel}.
* @param unit
- * Name of the unit the contained values are of.
+ * Name of the unit the contained values are of.
+ * @param sequenceRepresentation
+ * The {@link SequenceRepresentation} of the measured values.
+ * @param independent
+ * The independent flag of the measured values.
+ * @param axisType
+ * The {@link AxisType} of the measured values.
* @param input
* The measured values.
* @param flags
@@ -185,14 +191,14 @@ public final class ScalarType extends EnumerationValue {
* @throws IllegalArgumentException
* Thrown if given values are not assignment compatible.
*/
- public MeasuredValues createMeasuredValues(String name, String unit, Object input, boolean[] flags) {
+ public MeasuredValues createMeasuredValues(String name, String unit, SequenceRepresentation sequenceRepresentation, double[] generationParameters, boolean independent, AxisType axisType, Object input, boolean[] flags) {
if (isEnumeration() || isUnknown()) {
throw new IllegalStateException("It is not allowed to create measured values of type '" + this + "'.");
} else if (!arrayType.isInstance(input)) {
throw new IllegalArgumentException("Given values of type '" + input.getClass() + "'.");
}
- return new MeasuredValues(this, name, unit, input, flags);
+ return new MeasuredValues(this, name, unit, sequenceRepresentation, generationParameters, independent, axisType, input, flags);
}
/**
diff --git a/src/test/java/org/eclipse/mdm/api/base/model/ModelTest.java b/src/test/java/org/eclipse/mdm/api/base/model/ModelTest.java
index 1c115d1..e5befa7 100755
--- a/src/test/java/org/eclipse/mdm/api/base/model/ModelTest.java
+++ b/src/test/java/org/eclipse/mdm/api/base/model/ModelTest.java
@@ -70,7 +70,7 @@ public class ModelTest {
public void measuredValueFloat() {
Float[] vals = { 1.0f, 2.0f, 3.7f, 2.1f };
boolean[] flags = { true, true, false, true };
- MeasuredValues mv = new MeasuredValues(ScalarType.FLOAT, "Value1", "lightyears", vals, flags);
+ MeasuredValues mv = new MeasuredValues(ScalarType.FLOAT, "Value1", "lightyears", SequenceRepresentation.EXPLICIT, new double[0], false, AxisType.Y_AXIS, vals, flags);
ValueIterator<Float> valueIterator = mv.iterator();
int i = 0;
while (valueIterator.hasNext()) {
@@ -90,7 +90,7 @@ public class ModelTest {
public void measuredValueDouble() {
Double[] vals = { 1.0d, 2.0d, 3.7d, 2.1d };
boolean[] flags = { true, true, false, true };
- MeasuredValues mv = new MeasuredValues(ScalarType.DOUBLE, "Value1", "lightyears", vals, flags);
+ MeasuredValues mv = new MeasuredValues(ScalarType.DOUBLE, "Value1", "lightyears", SequenceRepresentation.EXPLICIT, new double[0], false, AxisType.Y_AXIS, vals, flags);
ValueIterator<Double> valueIterator = mv.iterator();
int i = 0;
while (valueIterator.hasNext()) {
@@ -110,7 +110,7 @@ public class ModelTest {
public void measuredValueString() {
String[] vals = { "str1", "str2", "str3", "str4" };
boolean[] flags = { true, true, false, true };
- MeasuredValues mv = new MeasuredValues(ScalarType.STRING, "Value1", "lightyears", vals, flags);
+ MeasuredValues mv = new MeasuredValues(ScalarType.STRING, "Value1", "lightyears", SequenceRepresentation.EXPLICIT, new double[0], false, AxisType.Y_AXIS, vals, flags);
ValueIterator<String> valueIterator = mv.iterator();
int i = 0;
while (valueIterator.hasNext()) {

Back to the top