Adding database information insertion features in the phone app
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / AddDeviceActivity.java
1 package com.example.lede2;
2
3 import android.content.Context;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.support.v7.app.AppCompatActivity;
7 import android.util.Log;
8 import android.view.Gravity;
9 import android.view.View;
10 import android.view.inputmethod.InputMethodManager;
11 import android.widget.Button;
12 import android.widget.EditText;
13 import android.widget.TextView;
14
15 import java.io.IOException;
16 import java.io.InputStream;
17 import java.sql.*;
18
19
20 public class AddDeviceActivity extends AppCompatActivity implements View.OnClickListener,View.OnFocusChangeListener {
21
22     Button doneButton;
23     TextView databaseInfo;
24     TextView databaseAddressInfo;
25     private SSH_MySQL ssh;//Connection object between Android & Host
26
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         setContentView(R.layout.activity_add_device);
31
32         doneButton = (Button) findViewById(R.id.doneButton);
33         databaseInfo = (EditText)findViewById(R.id.textInfo);
34         databaseAddressInfo = (EditText)findViewById(R.id.textInfoAddress);
35
36         doneButton.setOnClickListener(this);
37         databaseInfo.setOnFocusChangeListener(this);
38         databaseAddressInfo.setOnFocusChangeListener(this);
39         ssh = new SSH_MySQL();
40         // Set config text from file for device
41         try {
42             InputStream is = getAssets().open(MainActivity.DEF_ADD_DEVICE_FILE);
43             int size = is.available();
44             byte[] buffer = new byte[size];
45             is.read(buffer);
46             is.close();
47             String text = new String(buffer);
48             databaseInfo.setGravity(Gravity.LEFT);
49             databaseInfo.setText(text);
50             Log.d("LOADINGFILE", "Add device info file is already loaded!");
51         } catch (IOException ex) {
52             Log.d("LOADINGFILE", "Add device info file is NOT loaded!");
53             ex.printStackTrace();
54         }
55         // Set config text from file for device address
56         try {
57             InputStream is = getAssets().open(MainActivity.DEF_ADD_DEVICE_ADDRESS_FILE);
58             int size = is.available();
59             byte[] buffer = new byte[size];
60             is.read(buffer);
61             is.close();
62             String text = new String(buffer);
63             databaseAddressInfo.setGravity(Gravity.LEFT);
64             databaseAddressInfo.setText(text);
65             Log.d("LOADINGFILE", "Add device address info file is already loaded!");
66         } catch (IOException ex) {
67             Log.d("LOADINGFILE", "Add device address info file is NOT loaded!");
68             ex.printStackTrace();
69         }
70
71     }
72
73     @Override
74     public void onClick(View v) {
75         if(v == doneButton){
76             // 1) Create a new file and insert the configuration
77             // 2) Run iotinstaller code for device installation
78             // 3) Remove the existing config file
79             // 4) Repeat 1, 2, and 3 for device address
80             ssh.execute("echo \"" + databaseInfo.getText().toString() + "\" >> " +
81                     MainActivity.DEF_MYSQL_CONFIG_FILE + ";" +
82                     MainActivity.DEF_INSTALL_CMD + " " + MainActivity.DEF_MYSQL_CONFIG_FILE + ";" +
83                     "rm -rf " + MainActivity.DEF_MYSQL_CONFIG_FILE + ";" +
84                     // repeat process for device address
85                     "echo \"" + databaseAddressInfo.getText().toString() + "\" >> " +
86                     MainActivity.DEF_MYSQL_CONFIG_FILE + ";" +
87                     MainActivity.DEF_INSTALL_ADDRESS_CMD + " " + MainActivity.DEF_MYSQL_CONFIG_FILE + ";" +
88                     "rm -rf " + MainActivity.DEF_MYSQL_CONFIG_FILE);
89             finish();
90         }
91     }
92
93     @Override
94     public void onFocusChange(View view, boolean hasFocus) {
95         InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
96         if (hasFocus) {
97             imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
98         } else {
99             imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
100         }
101     }
102 }