diff options
author | Martin Fleischer | 2018-10-26 16:50:22 +0000 |
---|---|---|
committer | Matthias Koller | 2018-10-31 07:50:05 +0000 |
commit | ac26b72971a856945de19dfb741fb1e37d6b9ea6 (patch) | |
tree | 75d093fde372d4b09e24db64e52b3049243f2289 | |
parent | 7b75ef0be7f1ca630f6eb5ad71df2bd94d6ab8b8 (diff) | |
download | org.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>
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()) { |