You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/09/17 07:08:00 UTC

[incubator-plc4x] 16/29: fixed missing methods for BigInteger Support

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch master
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);
+    }
 }