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
diff --git a/others/lede-gui/src/main/java/com/example/lede2/UpdateLocalConfigFiles.java b/others/lede-gui/src/main/java/com/example/lede2/UpdateLocalConfigFiles.java
new file mode 100644 (file)
index 0000000..e079e4e
--- /dev/null
@@ -0,0 +1,141 @@
+package com.example.lede2;\r
+\r
+        import android.app.ProgressDialog;\r
+        import android.content.Context;\r
+        import android.os.Bundle;\r
+        import android.support.v7.app.AppCompatActivity;\r
+        import android.util.Log;\r
+        import android.view.WindowManager;\r
+        import android.widget.Spinner;\r
+\r
+        import java.io.File;\r
+        import java.util.ArrayList;\r
+        import java.util.List;\r
+\r
+/**\r
+ * Created by Brian on 2/23/2018.\r
+ */\r
+\r
+public class UpdateLocalConfigFiles extends AppCompatActivity {\r
+    private SSH_MySQL ssh_mySQL1;//Connection object between Android & Host\r
+    private SSH_MySQL ssh_mySQL2;\r
+    private SSH_MySQL ssh_mySQL3;\r
+    private SSH sshDevDat;\r
+    private SSH routerSSH;\r
+    String filename;\r
+    List<String> temp;//data structure which has IoT device information already registered on LEDE2\r
+    String filename_device;\r
+\r
+\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.update);\r
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\r
+        //  1)updates config files on the pi\r
+        //  2)cats the structure of the database\r
+        //  3)cats instances of devices on the database\r
+        String command1 = this.getString(R.string.update_DBInformation_File);\r
+        String command2 = this.getString(R.string.cat_device_types);\r
+        String command3 = this.getString(R.string.cat_subtypes);\r
+        String commandRouter = "cat /tmp/dhcp.leases";\r
+        filename = this.getString(R.string.device_param_config_filename);\r
+        filename_device = "initial_DHCP.txt";\r
+        ssh_mySQL1 = new SSH_MySQL();\r
+        ssh_mySQL2 = new SSH_MySQL();\r
+        ssh_mySQL3 = new SSH_MySQL();\r
+        routerSSH = new SSH();\r
+        sshDevDat = new SSH();\r
+\r
+        List<String> results = new ArrayList<>();\r
+\r
+\r
+        try{\r
+            //executes command and wait till result lines are no longer empty.\r
+            //result lines are the lines that the pi outputs after running the command\r
+            ssh_mySQL1.execute(command1);\r
+            Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
+            results = ssh_mySQL1.getResultLines();\r
+            while(results.size() == 0){\r
+                Thread.sleep(500);\r
+                results = ssh_mySQL1.getResultLines();\r
+                System.out.println(results);\r
+            }\r
+        }catch (Exception e){\r
+            e.printStackTrace();\r
+            Log.d("Sleep exception", "exception at SSH3");\r
+        }\r
+        try {\r
+\r
+            ssh_mySQL2.execute(command2);\r
+            Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
+            results = ssh_mySQL2.getResultLines();\r
+            while(results.size() == 0){\r
+                Thread.sleep(500);\r
+                results = ssh_mySQL2.getResultLines();\r
+\r
+            }\r
+            addSSHResultsToConfig(results, filename);\r
+            System.out.println(results);\r
+\r
+\r
+        } catch (Exception e) {\r
+            Log.d("Sleep exception", "exception at oncreate of update SSH2");\r
+        }\r
+\r
+\r
+        try {\r
+            ssh_mySQL3.execute(command3);\r
+            Thread.sleep(1000);\r
+            results = ssh_mySQL3.getResultLines();\r
+            while(results.size() == 0){\r
+                Thread.sleep(500);\r
+                results = ssh_mySQL3.getResultLines();\r
+            }\r
+\r
+            filename = this.getString(R.string.device_id_config_filename);\r
+            addSSHResultsToConfig(results, filename);\r
+        }\r
+        catch (Exception e){\r
+            e.printStackTrace();\r
+            Log.d("Sleep exception", "exception at SSH3");\r
+\r
+        }\r
+\r
+        try{\r
+            sshDevDat.execute("-ln");\r
+            Thread.sleep(1000);\r
+            results = sshDevDat.getResultLines();\r
+            while(results.size() == 0){\r
+                Thread.sleep(500);\r
+                results = sshDevDat.getResultLines();\r
+                System.out.println(results);\r
+            }\r
+            addSSHResultsToConfig(results,this.getString(R.string.devices_dat_filename));\r
+        }\r
+        catch (Exception e){\r
+            e.printStackTrace();\r
+            Log.d("cat device dat", "exception at cat device.dat");\r
+        }\r
+        finish();\r
+\r
+    }\r
+    //writes ssh result into a local config\r
+    private void addSSHResultsToConfig(List<String> results, String filename) {\r
+        File dir = getFilesDir();\r
+        File file = new File(dir, filename);\r
+        file.delete();\r
+        for (int i = 0; i < results.size(); i++) {\r
+            ConfigFileIO.writeToFile(filename, results.get(i), this);\r
+        }\r
+        finish();\r
+    }\r
+\r
+\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r