--- /dev/null
+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