The final version for lede-gui (the phone app for device registration)
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / DatabaseSubtypeObject.java
diff --git a/others/lede-gui/src/main/java/com/example/lede2/DatabaseSubtypeObject.java b/others/lede-gui/src/main/java/com/example/lede2/DatabaseSubtypeObject.java
new file mode 100644 (file)
index 0000000..c53b344
--- /dev/null
@@ -0,0 +1,154 @@
+package com.example.lede2;\r
+\r
+import android.util.Pair;\r
+\r
+import java.lang.reflect.Array;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import javax.sql.StatementEvent;\r
+\r
+/**\r
+ * Created by Brian on 3/5/2018.\r
+ */\r
+\r
+public class DatabaseSubtypeObject {\r
+\r
+    //param and address params are the database column names\r
+    //devices are the specific instances found on the database\r
+    private int numParams;\r
+    private int numAddresses;\r
+    private int numAddressParams;\r
+    private int numZigbeeParams;\r
+    private int numZigbeeAddresses;\r
+    private ArrayList<Pair <String, String>> params;\r
+    //outer list = numOf addresses, inner list = num of params, inner pair = field name and value\r
+    private ArrayList<ArrayList<Pair<String,String>>> addressParams;\r
+    private ArrayList<ArrayList<Pair<String, String>>> zigbeeAddressParams;\r
+    private List<String> devices;\r
+    private String nextID;\r
+    String name;\r
+    private String tag;\r
+\r
+\r
+\r
+    public DatabaseSubtypeObject(String name, String tag, int numAddresses, int numZigbeeAddresses){\r
+        numParams = 0;\r
+        numAddressParams = 0;\r
+        this.numAddresses = numAddresses;\r
+        this.numZigbeeAddresses = numZigbeeAddresses;\r
+        params = new ArrayList<Pair<String, String>>();\r
+        addressParams = new ArrayList<>();\r
+        zigbeeAddressParams = new ArrayList<>();\r
+        devices = new ArrayList<String>();\r
+        this.name = name;\r
+        this.tag = tag;\r
+        if(devices.isEmpty()){\r
+            nextID = tag+"1";\r
+        }\r
+    }\r
+    public void addDevice(String device){\r
+        devices.add(device);\r
+        setNextID();\r
+    }\r
+    public void addParam(Pair<String, String> param){\r
+        if(!params.contains(param)){\r
+            params.add(param);\r
+            numParams++;\r
+        }\r
+    }\r
+\r
+    public void addAddressParam(int i, Pair<String, String> param){\r
+        if(!addressParams.get(i).contains(param)){\r
+            addressParams.get(i).add(param);\r
+            numAddressParams++;\r
+        }\r
+    }\r
+\r
+\r
+    public void deleteParam(String param){\r
+        if(params.contains(param)){\r
+            params.remove(param);\r
+            numParams--;\r
+        }\r
+    }\r
+    public ArrayList<Pair<String,String>> getParams(){\r
+        return this.params;\r
+    }\r
+    public ArrayList<ArrayList<Pair<String, String>>> getAddressParams(){\r
+        return this.addressParams;\r
+    }\r
+    public String getName(){\r
+        return  this.name;\r
+    }\r
+    public int getNumParams() {\r
+        return numParams;\r
+    }\r
+\r
+    public int getNumAddressParams() {\r
+        return numAddressParams;\r
+    }\r
+\r
+    public List<String> getDevices() {\r
+        return devices;\r
+    }\r
+    public String getNextID(){\r
+        return nextID;\r
+    }\r
+\r
+    //sets the field which is used to generate the next available id\r
+    //needs to fix so it it doesn't rely on the first instance in the list\r
+    public void setNextID(){\r
+        String id = "";\r
+        ArrayList<String> ids = new ArrayList<>();\r
+        if(devices.isEmpty()){\r
+            nextID = tag+"1";\r
+            return;\r
+        }\r
+        if(devices.size() > 0 && devices.get(0) != null) {\r
+            for (int i = 0; i < devices.size(); i++) {\r
+                ids.add(devices.get(i).substring(2));\r
+            }\r
+        }\r
+        int count = 1;\r
+        boolean doesNotContain = true;\r
+\r
+        //should you set boolean to false or break;\r
+        while(doesNotContain) {\r
+            Integer idValue = new Integer(count);\r
+            if(ids.contains(idValue.toString())){\r
+                count += 1;\r
+            }\r
+            else\r
+            {\r
+                doesNotContain = false;\r
+            }\r
+        }\r
+\r
+        id = tag + String.valueOf(count);\r
+        nextID = id;\r
+    }\r
+\r
+    public void insertID(){\r
+        devices.add(this.nextID);\r
+        setNextID();\r
+    }\r
+\r
+    public void deleteDevice(String DeviceID){\r
+        devices.remove(DeviceID);\r
+        setNextID();\r
+    }\r
+    public void setNumAddressParams(int numParams){\r
+        numAddressParams = numParams;\r
+    }\r
+    public void setNumParams(int numParams){\r
+        numParams = numParams;\r
+    }\r
+    public void setNumZigbeeParams(int numParams){ this.numZigbeeParams = numParams; }\r
+    public int getNumAddresses(){\r
+        return this.numAddresses;\r
+    }\r
+    public int getNumZigbeeAddresses(){ return this.numZigbeeAddresses; }\r
+    public ArrayList<ArrayList<Pair<String, String>>> getZigbeeAddressParams(){return this.zigbeeAddressParams; }\r
+\r
+}\r