The final version for lede-gui (the phone app for device registration)
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / UpdateLocalConfigFiles.java
1 package com.example.lede2;\r
2 \r
3         import android.app.ProgressDialog;\r
4         import android.content.Context;\r
5         import android.os.Bundle;\r
6         import android.support.v7.app.AppCompatActivity;\r
7         import android.util.Log;\r
8         import android.view.WindowManager;\r
9         import android.widget.Spinner;\r
10 \r
11         import java.io.File;\r
12         import java.util.ArrayList;\r
13         import java.util.List;\r
14 \r
15 /**\r
16  * Created by Brian on 2/23/2018.\r
17  */\r
18 \r
19 public class UpdateLocalConfigFiles extends AppCompatActivity {\r
20     private SSH_MySQL ssh_mySQL1;//Connection object between Android & Host\r
21     private SSH_MySQL ssh_mySQL2;\r
22     private SSH_MySQL ssh_mySQL3;\r
23     private SSH sshDevDat;\r
24     private SSH routerSSH;\r
25     String filename;\r
26     List<String> temp;//data structure which has IoT device information already registered on LEDE2\r
27     String filename_device;\r
28 \r
29 \r
30     protected void onCreate(Bundle savedInstanceState) {\r
31         super.onCreate(savedInstanceState);\r
32         setContentView(R.layout.update);\r
33         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\r
34         //  1)updates config files on the pi\r
35         //  2)cats the structure of the database\r
36         //  3)cats instances of devices on the database\r
37         String command1 = this.getString(R.string.update_DBInformation_File);\r
38         String command2 = this.getString(R.string.cat_device_types);\r
39         String command3 = this.getString(R.string.cat_subtypes);\r
40         String commandRouter = "cat /tmp/dhcp.leases";\r
41         filename = this.getString(R.string.device_param_config_filename);\r
42         filename_device = "initial_DHCP.txt";\r
43         ssh_mySQL1 = new SSH_MySQL();\r
44         ssh_mySQL2 = new SSH_MySQL();\r
45         ssh_mySQL3 = new SSH_MySQL();\r
46         routerSSH = new SSH();\r
47         sshDevDat = new SSH();\r
48 \r
49         List<String> results = new ArrayList<>();\r
50 \r
51 \r
52         try{\r
53             //executes command and wait till result lines are no longer empty.\r
54             //result lines are the lines that the pi outputs after running the command\r
55             ssh_mySQL1.execute(command1);\r
56             Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
57             results = ssh_mySQL1.getResultLines();\r
58             while(results.size() == 0){\r
59                 Thread.sleep(500);\r
60                 results = ssh_mySQL1.getResultLines();\r
61                 System.out.println(results);\r
62             }\r
63         }catch (Exception e){\r
64             e.printStackTrace();\r
65             Log.d("Sleep exception", "exception at SSH3");\r
66         }\r
67         try {\r
68 \r
69             ssh_mySQL2.execute(command2);\r
70             Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
71             results = ssh_mySQL2.getResultLines();\r
72             while(results.size() == 0){\r
73                 Thread.sleep(500);\r
74                 results = ssh_mySQL2.getResultLines();\r
75 \r
76             }\r
77             addSSHResultsToConfig(results, filename);\r
78             System.out.println(results);\r
79 \r
80 \r
81         } catch (Exception e) {\r
82             Log.d("Sleep exception", "exception at oncreate of update SSH2");\r
83         }\r
84 \r
85 \r
86         try {\r
87             ssh_mySQL3.execute(command3);\r
88             Thread.sleep(1000);\r
89             results = ssh_mySQL3.getResultLines();\r
90             while(results.size() == 0){\r
91                 Thread.sleep(500);\r
92                 results = ssh_mySQL3.getResultLines();\r
93             }\r
94 \r
95             filename = this.getString(R.string.device_id_config_filename);\r
96             addSSHResultsToConfig(results, filename);\r
97         }\r
98         catch (Exception e){\r
99             e.printStackTrace();\r
100             Log.d("Sleep exception", "exception at SSH3");\r
101 \r
102         }\r
103 \r
104         try{\r
105             sshDevDat.execute("-ln");\r
106             Thread.sleep(1000);\r
107             results = sshDevDat.getResultLines();\r
108             while(results.size() == 0){\r
109                 Thread.sleep(500);\r
110                 results = sshDevDat.getResultLines();\r
111                 System.out.println(results);\r
112             }\r
113             addSSHResultsToConfig(results,this.getString(R.string.devices_dat_filename));\r
114         }\r
115         catch (Exception e){\r
116             e.printStackTrace();\r
117             Log.d("cat device dat", "exception at cat device.dat");\r
118         }\r
119         finish();\r
120 \r
121     }\r
122     //writes ssh result into a local config\r
123     private void addSSHResultsToConfig(List<String> results, String filename) {\r
124         File dir = getFilesDir();\r
125         File file = new File(dir, filename);\r
126         file.delete();\r
127         for (int i = 0; i < results.size(); i++) {\r
128             ConfigFileIO.writeToFile(filename, results.get(i), this);\r
129         }\r
130         finish();\r
131     }\r
132 \r
133 \r
134 }\r
135 \r
136 \r
137 \r
138 \r
139 \r
140 \r
141 \r