c53b344952c543265a91af1e8cc4d07f6135ee6a
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / DatabaseSubtypeObject.java
1 package com.example.lede2;\r
2 \r
3 import android.util.Pair;\r
4 \r
5 import java.lang.reflect.Array;\r
6 import java.util.ArrayList;\r
7 import java.util.List;\r
8 \r
9 import javax.sql.StatementEvent;\r
10 \r
11 /**\r
12  * Created by Brian on 3/5/2018.\r
13  */\r
14 \r
15 public class DatabaseSubtypeObject {\r
16 \r
17     //param and address params are the database column names\r
18     //devices are the specific instances found on the database\r
19     private int numParams;\r
20     private int numAddresses;\r
21     private int numAddressParams;\r
22     private int numZigbeeParams;\r
23     private int numZigbeeAddresses;\r
24     private ArrayList<Pair <String, String>> params;\r
25     //outer list = numOf addresses, inner list = num of params, inner pair = field name and value\r
26     private ArrayList<ArrayList<Pair<String,String>>> addressParams;\r
27     private ArrayList<ArrayList<Pair<String, String>>> zigbeeAddressParams;\r
28     private List<String> devices;\r
29     private String nextID;\r
30     String name;\r
31     private String tag;\r
32 \r
33 \r
34 \r
35     public DatabaseSubtypeObject(String name, String tag, int numAddresses, int numZigbeeAddresses){\r
36         numParams = 0;\r
37         numAddressParams = 0;\r
38         this.numAddresses = numAddresses;\r
39         this.numZigbeeAddresses = numZigbeeAddresses;\r
40         params = new ArrayList<Pair<String, String>>();\r
41         addressParams = new ArrayList<>();\r
42         zigbeeAddressParams = new ArrayList<>();\r
43         devices = new ArrayList<String>();\r
44         this.name = name;\r
45         this.tag = tag;\r
46         if(devices.isEmpty()){\r
47             nextID = tag+"1";\r
48         }\r
49     }\r
50     public void addDevice(String device){\r
51         devices.add(device);\r
52         setNextID();\r
53     }\r
54     public void addParam(Pair<String, String> param){\r
55         if(!params.contains(param)){\r
56             params.add(param);\r
57             numParams++;\r
58         }\r
59     }\r
60 \r
61     public void addAddressParam(int i, Pair<String, String> param){\r
62         if(!addressParams.get(i).contains(param)){\r
63             addressParams.get(i).add(param);\r
64             numAddressParams++;\r
65         }\r
66     }\r
67 \r
68 \r
69     public void deleteParam(String param){\r
70         if(params.contains(param)){\r
71             params.remove(param);\r
72             numParams--;\r
73         }\r
74     }\r
75     public ArrayList<Pair<String,String>> getParams(){\r
76         return this.params;\r
77     }\r
78     public ArrayList<ArrayList<Pair<String, String>>> getAddressParams(){\r
79         return this.addressParams;\r
80     }\r
81     public String getName(){\r
82         return  this.name;\r
83     }\r
84     public int getNumParams() {\r
85         return numParams;\r
86     }\r
87 \r
88     public int getNumAddressParams() {\r
89         return numAddressParams;\r
90     }\r
91 \r
92     public List<String> getDevices() {\r
93         return devices;\r
94     }\r
95     public String getNextID(){\r
96         return nextID;\r
97     }\r
98 \r
99     //sets the field which is used to generate the next available id\r
100     //needs to fix so it it doesn't rely on the first instance in the list\r
101     public void setNextID(){\r
102         String id = "";\r
103         ArrayList<String> ids = new ArrayList<>();\r
104         if(devices.isEmpty()){\r
105             nextID = tag+"1";\r
106             return;\r
107         }\r
108         if(devices.size() > 0 && devices.get(0) != null) {\r
109             for (int i = 0; i < devices.size(); i++) {\r
110                 ids.add(devices.get(i).substring(2));\r
111             }\r
112         }\r
113         int count = 1;\r
114         boolean doesNotContain = true;\r
115 \r
116         //should you set boolean to false or break;\r
117         while(doesNotContain) {\r
118             Integer idValue = new Integer(count);\r
119             if(ids.contains(idValue.toString())){\r
120                 count += 1;\r
121             }\r
122             else\r
123             {\r
124                 doesNotContain = false;\r
125             }\r
126         }\r
127 \r
128         id = tag + String.valueOf(count);\r
129         nextID = id;\r
130     }\r
131 \r
132     public void insertID(){\r
133         devices.add(this.nextID);\r
134         setNextID();\r
135     }\r
136 \r
137     public void deleteDevice(String DeviceID){\r
138         devices.remove(DeviceID);\r
139         setNextID();\r
140     }\r
141     public void setNumAddressParams(int numParams){\r
142         numAddressParams = numParams;\r
143     }\r
144     public void setNumParams(int numParams){\r
145         numParams = numParams;\r
146     }\r
147     public void setNumZigbeeParams(int numParams){ this.numZigbeeParams = numParams; }\r
148     public int getNumAddresses(){\r
149         return this.numAddresses;\r
150     }\r
151     public int getNumZigbeeAddresses(){ return this.numZigbeeAddresses; }\r
152     public ArrayList<ArrayList<Pair<String, String>>> getZigbeeAddressParams(){return this.zigbeeAddressParams; }\r
153 \r
154 }\r