From fe52981ba6a58905b0868441792ceda6192f6997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Heredero?= Date: Fri, 5 May 2023 15:54:03 +0200 Subject: [PATCH] Create singleton and connect with datapoint TODO some test --- .gitignore | 2 +- .../ch/hevs/isi/core/BooleanDataPoint.java | 13 ++++++- src/main/java/ch/hevs/isi/core/DataPoint.java | 29 ++++++++++++-- .../ch/hevs/isi/core/DataPointListener.java | 6 +++ .../java/ch/hevs/isi/core/FloatDataPoint.java | 13 ++++++- .../ch/hevs/isi/db/DatabaseConnector.java | 32 +++++++++++++++ .../ch/hevs/isi/field/FieldConnector.java | 39 +++++++++++++++++++ .../java/ch/hevs/isi/web/WebConnector.java | 31 +++++++++++++++ src/test/java/Core.java | 22 +++++++++++ 9 files changed, 178 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ch/hevs/isi/core/DataPointListener.java create mode 100644 src/main/java/ch/hevs/isi/db/DatabaseConnector.java create mode 100644 src/main/java/ch/hevs/isi/field/FieldConnector.java create mode 100644 src/main/java/ch/hevs/isi/web/WebConnector.java create mode 100644 src/test/java/Core.java diff --git a/.gitignore b/.gitignore index 88b6d2a..aeb1bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,5 @@ /.idea/jarRepositories.xml /.idea/codeStyles /.idea/*.xml - +/target/ # TODO: add your build folder here \ No newline at end of file diff --git a/src/main/java/ch/hevs/isi/core/BooleanDataPoint.java b/src/main/java/ch/hevs/isi/core/BooleanDataPoint.java index bd4a9d8..5a53db6 100644 --- a/src/main/java/ch/hevs/isi/core/BooleanDataPoint.java +++ b/src/main/java/ch/hevs/isi/core/BooleanDataPoint.java @@ -1,4 +1,8 @@ package ch.hevs.isi.core; +import ch.hevs.isi.core.DataPointListener; +import ch.hevs.isi.db.DatabaseConnector; +import ch.hevs.isi.field.FieldConnector; +import ch.hevs.isi.web.WebConnector; public class BooleanDataPoint extends DataPoint{ private boolean value; @@ -8,14 +12,19 @@ public class BooleanDataPoint extends DataPoint{ } public void setValue(boolean value){ this.value = value; + if (getDataPointFromLabel(this.getLabel()) == null){ + this.update(true); + } else { + this.update(false); + } } public boolean getValue(){ return this.value; } public String toString(){ - String s = null; - s += this.getLabel(); + String s; + s = this.getLabel(); s += ": "; s += this.getValue(); return s; diff --git a/src/main/java/ch/hevs/isi/core/DataPoint.java b/src/main/java/ch/hevs/isi/core/DataPoint.java index 5101614..f589dd2 100644 --- a/src/main/java/ch/hevs/isi/core/DataPoint.java +++ b/src/main/java/ch/hevs/isi/core/DataPoint.java @@ -1,20 +1,41 @@ package ch.hevs.isi.core; +import ch.hevs.isi.db.DatabaseConnector; +import ch.hevs.isi.field.FieldConnector; +import ch.hevs.isi.web.WebConnector; + import java.util.Map; -public class DataPoint { - private Map dataPointMap; +public abstract class DataPoint{ + private static Map dataPointMap; private String label; private boolean isOutput; protected DataPoint(String label, boolean isOutput){ + if(dataPointMap.containsKey(label)){ + + } this.label = label; this.isOutput = isOutput; } protected void update(boolean isNewValue){ + if(isNewValue){ + dataPointMap.put(this.label, this); + } else { + dataPointMap.replace(this.label, this); + } + DatabaseConnector.getMySelf().onNewValue(this); + WebConnector.getMySelf().onNewValue(this); + FieldConnector.getMySelf().onNewValue(this); } - public DataPoint getDataPointFromLabel(String label){ - return null; + public static DataPoint getDataPointFromLabel(String label){ + if( !dataPointMap.containsKey(label) ){ + return null; + } else { + DataPoint dp = dataPointMap.get(label); + return dp; + } + } diff --git a/src/main/java/ch/hevs/isi/core/DataPointListener.java b/src/main/java/ch/hevs/isi/core/DataPointListener.java new file mode 100644 index 0000000..d2164ee --- /dev/null +++ b/src/main/java/ch/hevs/isi/core/DataPointListener.java @@ -0,0 +1,6 @@ +package ch.hevs.isi.core; + +public interface DataPointListener { + + void onNewValue(DataPoint dp); +} diff --git a/src/main/java/ch/hevs/isi/core/FloatDataPoint.java b/src/main/java/ch/hevs/isi/core/FloatDataPoint.java index 5955a15..215b874 100644 --- a/src/main/java/ch/hevs/isi/core/FloatDataPoint.java +++ b/src/main/java/ch/hevs/isi/core/FloatDataPoint.java @@ -1,5 +1,9 @@ package ch.hevs.isi.core; +import ch.hevs.isi.db.DatabaseConnector; +import ch.hevs.isi.field.FieldConnector; +import ch.hevs.isi.web.WebConnector; + public class FloatDataPoint extends DataPoint{ private float value; public FloatDataPoint(String label, boolean isOutput) { @@ -7,6 +11,11 @@ public class FloatDataPoint extends DataPoint{ } public void setValue(float value){ this.value = value; + if (getDataPointFromLabel(this.getLabel()) == null){ + this.update(true); + } else { + this.update(false); + } } public float getValue(){ @@ -14,8 +23,8 @@ public class FloatDataPoint extends DataPoint{ } public String toString(){ - String s = null; - s += this.getLabel(); + String s; + s = this.getLabel(); s += ": "; s += this.getValue(); return s; diff --git a/src/main/java/ch/hevs/isi/db/DatabaseConnector.java b/src/main/java/ch/hevs/isi/db/DatabaseConnector.java new file mode 100644 index 0000000..0c9cc8a --- /dev/null +++ b/src/main/java/ch/hevs/isi/db/DatabaseConnector.java @@ -0,0 +1,32 @@ +package ch.hevs.isi.db; + + +import ch.hevs.isi.core.DataPoint; +import ch.hevs.isi.core.DataPointListener; + +public class DatabaseConnector implements DataPointListener { + private static DatabaseConnector mySelf = null; + + private DatabaseConnector (){ + + } + + public static DatabaseConnector getMySelf(){ + if (mySelf == null){ + mySelf = new DatabaseConnector(); + } + return mySelf; + } + public void initialize(String url){ + + } + + private void pushToDatabase(DataPoint dp){ + System.out.println("To Database: " + dp.toString()); + } + + @Override + public void onNewValue(DataPoint dp) { + pushToDatabase(dp); + } +} diff --git a/src/main/java/ch/hevs/isi/field/FieldConnector.java b/src/main/java/ch/hevs/isi/field/FieldConnector.java new file mode 100644 index 0000000..25352de --- /dev/null +++ b/src/main/java/ch/hevs/isi/field/FieldConnector.java @@ -0,0 +1,39 @@ +package ch.hevs.isi.field; + +import ch.hevs.isi.core.DataPoint; +import ch.hevs.isi.core.DataPointListener; +import ch.hevs.isi.core.FloatDataPoint; + +public class FieldConnector implements DataPointListener { + + private static FieldConnector mySelf = null; + + private FieldConnector(){ + + } + + public static FieldConnector getMySelf(){ + if (mySelf == null){ + mySelf = new FieldConnector(); + } + return mySelf; + } + + public void initialize(String host, int port){ + + } + + public void uselessTest(){ + FloatDataPoint dp = new FloatDataPoint("Voltage", false); + dp.setValue(5); + } + + private void pushToField(DataPoint dp){ + System.out.println("To Field: " + dp.toString()); + } + + @Override + public void onNewValue(DataPoint dp) { + pushToField(dp); + } +} diff --git a/src/main/java/ch/hevs/isi/web/WebConnector.java b/src/main/java/ch/hevs/isi/web/WebConnector.java new file mode 100644 index 0000000..b484392 --- /dev/null +++ b/src/main/java/ch/hevs/isi/web/WebConnector.java @@ -0,0 +1,31 @@ +package ch.hevs.isi.web; + +import ch.hevs.isi.core.DataPoint; +import ch.hevs.isi.core.DataPointListener; + +public class WebConnector implements DataPointListener { + private static WebConnector mySelf = null; + + private WebConnector (){ + + } + + public static WebConnector getMySelf(){ + if (mySelf == null){ + mySelf = new WebConnector(); + } + return mySelf; + } + public void initialize(String host, int port){ + + } + + private void pushToWeb(DataPoint dp){ + System.out.println("To Web: " + dp.toString()); + } + + @Override + public void onNewValue(DataPoint dp) { + pushToWeb(dp); + } +} diff --git a/src/test/java/Core.java b/src/test/java/Core.java new file mode 100644 index 0000000..103c31b --- /dev/null +++ b/src/test/java/Core.java @@ -0,0 +1,22 @@ +import ch.hevs.isi.core.BooleanDataPoint; +import ch.hevs.isi.core.FloatDataPoint; +import ch.hevs.isi.field.FieldConnector; + +public class Core { + public static void main(String[] args) { + /* + BooleanDataPoint bDp = new BooleanDataPoint("foo", true); + FloatDataPoint floatDp = new FloatDataPoint("bar", true); + System.out.println(bDp.toString()); + System.out.println(floatDp.toString()); + bDp.setValue(true);; + floatDp.setValue(42); + System.out.println(bDp.toString()); + System.out.println(floatDp.toString()); + */ + + FieldConnector fc; + // TODO some test + + } +}