You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/09/13 14:43:21 UTC
[incubator-plc4x] 01/03: fixed missing methods for BigInteger
Support
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch feature/api-redesign-chris-c
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
commit 5c3a127763b919b11ccd0c7ec15564de1f60e65a
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Sep 13 15:38:17 2018 +0200
fixed missing methods for BigInteger Support
---
.../plc4x/java/api/messages/PlcReadResponse.java | 11 ++++++
.../java/base/messages/DefaultPlcReadResponse.java | 43 ++++++++++++++++++++++
.../base/messages/DefaultPlcSubscriptionEvent.java | 26 +++++++++++++
.../messages/items/DefaultBigIntegerFieldItem.java | 24 +++++++++---
.../items/DefaultFloatingPointFieldItem.java | 14 +++++++
.../messages/items/DefaultIntegerFieldItem.java | 26 ++++++++++---
.../plc4x/java/base/messages/items/FieldItem.java | 37 +++++++++++++++++++
7 files changed, 169 insertions(+), 12 deletions(-)
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
index b202927..666fdfa 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcReadResponse.java
@@ -18,6 +18,7 @@ under the License.
*/
package org.apache.plc4x.java.api.messages;
+import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -78,6 +79,16 @@ public interface PlcReadResponse<T extends PlcReadRequest> extends PlcFieldRespo
Collection<Integer> getAllIntegers(String name);
+ boolean isValidBigInteger(String name);
+
+ boolean isValidBigInteger(String name, int index);
+
+ BigInteger getBigInteger(String name);
+
+ BigInteger getBigInteger(String name, int index);
+
+ Collection<BigInteger> getAllBigIntegers(String name);
+
boolean isValidLong(String name);
boolean isValidLong(String name, int index);
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
index 38c1eb3..eadf20b 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
@@ -23,6 +23,7 @@ import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.items.FieldItem;
+import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -276,6 +277,48 @@ public class DefaultPlcReadResponse implements InternalPlcReadResponse {
}
@Override
+ public boolean isValidBigInteger(String name) {
+ return isValidBigInteger(name, 0);
+ }
+
+ @Override
+ public boolean isValidBigInteger(String name, int index) {
+ FieldItem fieldInternal = getFieldInternal(name);
+ if (fieldInternal != null) {
+ return fieldInternal.isValidInteger(index);
+ }
+ return false;
+ }
+
+ @Override
+ public BigInteger getBigInteger(String name) {
+ return getBigInteger(name, 0);
+ }
+
+ @Override
+ public BigInteger getBigInteger(String name, int index) {
+ FieldItem fieldInternal = getFieldInternal(name);
+ if (fieldInternal != null) {
+ return fieldInternal.getBigInteger(index);
+ }
+ return null;
+ }
+
+ @Override
+ public Collection<BigInteger> getAllBigIntegers(String name) {
+ FieldItem fieldInternal = getFieldInternal(name);
+ if (fieldInternal != null) {
+ int num = fieldInternal.getNumValues();
+ List<BigInteger> values = new ArrayList<>(num);
+ for (int i = 0; i < num; i++) {
+ values.add(fieldInternal.getBigInteger(i));
+ }
+ return values;
+ }
+ return null;
+ }
+
+ @Override
public boolean isValidLong(String name) {
return isValidLong(name, 0);
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEvent.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEvent.java
index dbfcd4c..349bf4f 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEvent.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEvent.java
@@ -23,6 +23,7 @@ import org.apache.plc4x.java.api.messages.PlcReadRequest;
import org.apache.plc4x.java.api.model.PlcField;
import org.apache.plc4x.java.api.types.PlcResponseCode;
+import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -162,6 +163,31 @@ public class DefaultPlcSubscriptionEvent implements InternalPlcSubscriptionEvent
}
@Override
+ public boolean isValidBigInteger(String name) {
+ return false;
+ }
+
+ @Override
+ public boolean isValidBigInteger(String name, int index) {
+ return false;
+ }
+
+ @Override
+ public BigInteger getBigInteger(String name) {
+ return null;
+ }
+
+ @Override
+ public BigInteger getBigInteger(String name, int index) {
+ return null;
+ }
+
+ @Override
+ public Collection<BigInteger> getAllBigIntegers(String name) {
+ return null;
+ }
+
+ @Override
public boolean isValidLong(String name) {
return false;
}
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
index 8578db1..33903b3 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
@@ -54,7 +54,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Byte getByte(int index) {
- if(isValidByte(index)) {
+ if (isValidByte(index)) {
return getValue(index).byteValue();
}
return null;
@@ -69,7 +69,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Short getShort(int index) {
- if(isValidShort(index)) {
+ if (isValidShort(index)) {
return getValue(index).shortValue();
}
return null;
@@ -84,13 +84,25 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Integer getInteger(int index) {
- if(isValidInteger(index)) {
+ if (isValidInteger(index)) {
BigInteger value = getValue(index);
return value.intValue();
}
return null;
}
+ public boolean isValidBigInteger(int index) {
+ BigInteger value = getValue(index);
+ return value != null;
+ }
+
+ public BigInteger getBigInteger(int index) {
+ if (isValidBigInteger(index)) {
+ return getValue(index);
+ }
+ return null;
+ }
+
@Override
public boolean isValidLong(int index) {
BigInteger value = getValue(index);
@@ -100,7 +112,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Long getLong(int index) {
- if(isValidLong(index)) {
+ if (isValidLong(index)) {
BigInteger value = getValue(index);
return value.longValue();
}
@@ -120,7 +132,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Float getFloat(int index) {
- if(isValidFloat(index)) {
+ if (isValidFloat(index)) {
return getValue(index).floatValue();
}
return null;
@@ -139,7 +151,7 @@ public class DefaultBigIntegerFieldItem extends FieldItem<BigInteger> {
@Override
public Double getDouble(int index) {
- if(isValidDouble(index)) {
+ if (isValidDouble(index)) {
return getValue(index).doubleValue();
}
return null;
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatingPointFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatingPointFieldItem.java
index 7b1ae04..f3bc8ed 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatingPointFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatingPointFieldItem.java
@@ -18,6 +18,8 @@ under the License.
*/
package org.apache.plc4x.java.base.messages.items;
+import java.math.BigInteger;
+
public class DefaultFloatingPointFieldItem extends FieldItem<Double> {
public DefaultFloatingPointFieldItem(Double... values) {
@@ -84,6 +86,18 @@ public class DefaultFloatingPointFieldItem extends FieldItem<Double> {
return null;
}
+ public boolean isValidBigInteger(int index) {
+ Double value = getValue(index);
+ return value != null;
+ }
+
+ public BigInteger getBigInteger(int index) {
+ if (isValidBigInteger(index)) {
+ return BigInteger.valueOf(getValue(index).longValue());
+ }
+ return null;
+ }
+
@Override
public boolean isValidLong(int index) {
Double value = getValue(index);
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
index a2d4035..e6e65ca 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
@@ -18,6 +18,8 @@ under the License.
*/
package org.apache.plc4x.java.base.messages.items;
+import java.math.BigInteger;
+
public class DefaultIntegerFieldItem extends FieldItem<Long> {
public DefaultIntegerFieldItem(Long... values) {
@@ -50,7 +52,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Byte getByte(int index) {
- if(isValidByte(index)) {
+ if (isValidByte(index)) {
return getValue(index).byteValue();
}
return null;
@@ -64,7 +66,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Short getShort(int index) {
- if(isValidShort(index)) {
+ if (isValidShort(index)) {
return getValue(index).shortValue();
}
return null;
@@ -78,12 +80,24 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Integer getInteger(int index) {
- if(isValidInteger(index)) {
+ if (isValidInteger(index)) {
return getValue(index).intValue();
}
return null;
}
+ public boolean isValidBigInteger(int index) {
+ Long value = getValue(index);
+ return value != null;
+ }
+
+ public BigInteger getBigInteger(int index) {
+ if (isValidBigInteger(index)) {
+ return BigInteger.valueOf(getValue(index));
+ }
+ return null;
+ }
+
@Override
public boolean isValidLong(int index) {
return (getValue(index) != null);
@@ -91,7 +105,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Long getLong(int index) {
- if(isValidFloat(index)) {
+ if (isValidFloat(index)) {
return getValue(index);
}
return null;
@@ -105,7 +119,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Float getFloat(int index) {
- if(isValidFloat(index)) {
+ if (isValidFloat(index)) {
return getValue(index).floatValue();
}
return null;
@@ -119,7 +133,7 @@ public class DefaultIntegerFieldItem extends FieldItem<Long> {
@Override
public Double getDouble(int index) {
- if(isValidDouble(index)) {
+ if (isValidDouble(index)) {
return getValue(index).doubleValue();
}
return null;
diff --git a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java
index 0324250..e63e3d5 100644
--- a/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java
+++ b/plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/FieldItem.java
@@ -18,9 +18,11 @@ under the License.
*/
package org.apache.plc4x.java.base.messages.items;
+import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
+import java.util.Arrays;
public abstract class FieldItem<T> {
@@ -39,6 +41,7 @@ public abstract class FieldItem<T> {
public boolean isValidBoolean(int index) {
return false;
}
+
public Boolean getBoolean(int index) {
return null;
}
@@ -46,6 +49,7 @@ public abstract class FieldItem<T> {
public boolean isValidByte(int index) {
return false;
}
+
public Byte getByte(int index) {
return null;
}
@@ -53,6 +57,7 @@ public abstract class FieldItem<T> {
public boolean isValidShort(int index) {
return false;
}
+
public Short getShort(int index) {
return null;
}
@@ -60,13 +65,23 @@ public abstract class FieldItem<T> {
public boolean isValidInteger(int index) {
return false;
}
+
public Integer getInteger(int index) {
return null;
}
+ public boolean isValidBigInteger(int index) {
+ return false;
+ }
+
+ public BigInteger getBigInteger(int index) {
+ return null;
+ }
+
public boolean isValidLong(int index) {
return false;
}
+
public Long getLong(int index) {
return null;
}
@@ -74,6 +89,7 @@ public abstract class FieldItem<T> {
public boolean isValidFloat(int index) {
return false;
}
+
public Float getFloat(int index) {
return null;
}
@@ -81,6 +97,7 @@ public abstract class FieldItem<T> {
public boolean isValidDouble(int index) {
return false;
}
+
public Double getDouble(int index) {
return null;
}
@@ -88,6 +105,7 @@ public abstract class FieldItem<T> {
public boolean isValidString(int index) {
return false;
}
+
public String getString(int index) {
return null;
}
@@ -95,6 +113,7 @@ public abstract class FieldItem<T> {
public boolean isValidTime(int index) {
return false;
}
+
public LocalTime getTime(int index) {
return null;
}
@@ -102,6 +121,7 @@ public abstract class FieldItem<T> {
public boolean isValidDate(int index) {
return false;
}
+
public LocalDate getDate(int index) {
return null;
}
@@ -109,6 +129,7 @@ public abstract class FieldItem<T> {
public boolean isValidDateTime(int index) {
return false;
}
+
public LocalDateTime getDateTime(int index) {
return null;
}
@@ -124,4 +145,20 @@ public abstract class FieldItem<T> {
return values[index];
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FieldItem)) {
+ return false;
+ }
+ FieldItem<?> fieldItem = (FieldItem<?>) o;
+ return Arrays.equals(values, fieldItem.values);
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(values);
+ }
}