Explorar el Código

비밀번호 동기화, 모바일 등록 ID 동기화

jslee(madeinlab) hace 3 años
padre
commit
a55e82ad2b

+ 28 - 17
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/MainActivity.java

@@ -36,6 +36,7 @@ import com.artncore.commons.define;
 import com.artncore.wallpadapi.WallPadAPI;
 import com.util.LogUtil;
 
+import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
@@ -225,7 +226,8 @@ public class MainActivity extends WpadActivity
             wallpaddbmgr.AddressSet addc = wdb.getAddressMGR(); //DB에서 동호 정보 받아옴
             //동, 호, ip 정보 저장
             myIP = addc.IPAddress;
-            myHo = Integer.valueOf(myIP.substring(myIP.length()-1));
+            myHo = addc.Ho;
+            ho = Integer.valueOf(myHo.substring(0,1));
         }
         catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -1939,7 +1941,8 @@ public class MainActivity extends WpadActivity
     int mMultiAddress;
 
     String myIP = "NONE";
-    int myHo = 0;
+    String myHo = "NONE";
+    int ho = 0;
 
     public String millToDate(long mills) {
         String pattern = "yyyy-MM-dd'T'HH:mm:ss";
@@ -1950,26 +1953,26 @@ public class MainActivity extends WpadActivity
 
     class ClientThread extends Thread {
         private Handler handler;
-        private String  pwNum;
-        private int menu, kind, reason, state, position;
+        private String  value1;
+        private String  value2;
+        private int menu, reason, state, position;
         private int roomNumber;
 
-        public ClientThread(Handler handler, int menu, int kind, int reason, int position, String pwNum) {
+        public ClientThread(Handler handler, int menu, int reason, int position, String value1, String value2) {
             this.handler = handler;
             this.menu = menu;
-            this.kind = kind;
             this.reason = reason;
             this.position = position;
-            this.pwNum = pwNum;
+            this.value1 = value1;
+            this.value2 = value2;
         }
 
         public void run() {
             //String host = "10.1.1.1";
-            //String host = "10.1.1.2";
-            String host = "10.1.1." + position;
+            //String host = "10.1.1." + position;
+            String host = "10.1."+position+".1";
             int port = 9998;
             String json = "";
-            // build jsonObject
             JSONObject jsonObject = new JSONObject();
 
             try {
@@ -1977,12 +1980,20 @@ public class MainActivity extends WpadActivity
                 jsonObject.accumulate("timestamp", millToDate(System.currentTimeMillis()));
                 jsonObject.accumulate("wallpadip", myIP);
                 jsonObject.accumulate("menu", menu);
-                jsonObject.accumulate("kind", kind);
                 jsonObject.accumulate("reason", reason);
                 jsonObject.accumulate("position", position);
-                //제어
-                if (reason == JSON.REASON.PassWordChange) {
-                    jsonObject.accumulate("number", pwNum);
+                //비밀번호 변경
+                if (menu == JSON.MENU.PASSWORD) {
+                    jsonObject.accumulate("number", value1);
+                }
+                //모바일 기기 등록
+                else if (menu == JSON.MENU.MOBILE) {
+                    if(reason == JSON.REASON.MobileRegister) {
+                        jsonObject.accumulate("name", value1);
+                        jsonObject.accumulate("id", value2);
+                    } else if(reason == JSON.REASON.MobileDelete) {
+                        jsonObject.accumulate("id", value2);
+                    }
                 }
             } catch (JSONException e) {
                 e.printStackTrace();
@@ -2040,9 +2051,9 @@ public class MainActivity extends WpadActivity
         }
     }
 
-    public void requestMultiControl(Handler handler, int menu, int kind, int reason, int position, String pwNum) {
-        if(position!=myHo) {
-            ClientThread thread = new ClientThread(handler, menu, kind, reason, position, pwNum);
+    public void requestMultiControl(Handler handler, int menu, int reason, int position, String value1, String value2) {
+        if(position!=ho) {
+            ClientThread thread = new ClientThread(handler, menu, reason, position, value1, value2);
             thread.start();
         }
     }

+ 3 - 0
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/declare/Common.java

@@ -234,6 +234,7 @@ public final class Common
             public final static int GAS      	= MENU_BASE + 6;
             public final static int COOKTOP  	= MENU_BASE + 7;
             public final static int PASSWORD  	= MENU_BASE + 8;
+            public final static int MOBILE 	= MENU_BASE + 9;
         }
 
         public static final class REASON
@@ -241,6 +242,8 @@ public final class Common
             public final static int Status              = 0;
             public final static int Control             = 1;
             public final static int PassWordChange      = 2;
+            public final static int MobileRegister      = 3;
+            public final static int MobileDelete        = 4;
         }
 
         public static final class KIND

+ 51 - 0
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/ConfigMobileDeviceAddScreen.java

@@ -1,11 +1,15 @@
 package kr.co.icontrols.wallpadconfig.screen;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.os.PowerManager;
 import android.util.Log;
 import android.view.Gravity;
@@ -22,13 +26,18 @@ import com.artncore.WallPadDataMgr.WallpadMobileDeviceData.MobileDeviceClass;
 import com.artncore.commons.define;
 import com.artncore.wallpadapi.WallPadAPI;
 import com.artncore.wallpadimap.RetProci;
+import com.google.gson.Gson;
 import com.util.LogUtil;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.ArrayList;
 import java.util.List;
 
 import kr.co.icontrols.wallpadconfig.MainActivity;
 import kr.co.icontrols.wallpadconfig.R;
+import kr.co.icontrols.wallpadconfig.data.ResultData;
 import kr.co.icontrols.wallpadconfig.declare.Common;
 import kr.co.icontrols.wallpadconfig.declare.ID;
 import kr.co.icontrols.wallpadconfig.imap.iMAPDeleteNewMobileDevice;
@@ -47,6 +56,7 @@ import kr.co.icontrols.wallpadsupport.WpadTextView;
 public class ConfigMobileDeviceAddScreen extends WpadScreen
 {
     private final String TAG = "ConfigMobileDevAdd";
+    private Context mContext;
 
     private final boolean DEBUG_LOG_ON = true;
     private void DebugLogOutput(String s) { if(DEBUG_LOG_ON) Log.d(TAG, s); }
@@ -328,6 +338,32 @@ public class ConfigMobileDeviceAddScreen extends WpadScreen
     private int nRemoteCallUserCnt = 0; // 방문객원격통화 사용자 수
     private final static int MAX_MOBILE_USER_CNT = 100; // 모바일 기기 최대 등록 개수
 
+    @SuppressLint("HandlerLeak")
+    final Handler handler = new Handler() {
+        Gson gson = new Gson();
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case 1000:
+                    try {
+                        Bundle bundle = msg.getData();
+                        String response = bundle.getString("response");
+                        JSONObject jsonObject = new JSONObject(response);
+                        ResultData resultData = gson.fromJson(jsonObject.toString(), ResultData.class);
+                        if(resultData.getType().equals("controlResponse")&&resultData.getResult().equals("ok")) {
+                            //제어 명령을 내리고 제대로 응답이 오면 필요시 상태를 다시 조회해서 UI 갱신하도록 한다.
+                        }
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
     // =================================================================================================
     // [[ Create & Close ]] region
     // =================================================================================================
@@ -342,6 +378,7 @@ public class ConfigMobileDeviceAddScreen extends WpadScreen
     public ConfigMobileDeviceAddScreen(Context context, RelativeLayout layout, WallPadAPI wpapi, int operationMode)
     {
         super(context, layout);
+        mContext = context;
 
         Log.i(TAG, "[START - Screen] --------------------------------------------");
 
@@ -479,6 +516,20 @@ public class ConfigMobileDeviceAddScreen extends WpadScreen
                             String strPhoneKey = intent.getStringExtra("DEL_PHONEKEY");
                             deleteRemoteCallUser(strPhoneKey);
                         }
+                        //모바일이 삭제되면 월패드 간 공유 되어야 한다.
+                        for(int i=1; i<4; i++) {
+                            String delID = intent.getStringExtra("DEL_ID");
+                            ((MainActivity) mContext).requestMultiControl(handler, Common.JSON.MENU.MOBILE, Common.JSON.REASON.MobileDelete, i, "", delID);
+                        }
+                    }
+                    else{
+                        //모바일이 등록되면 월패드 간 공유 되어야 한다.
+                        List<MobileDeviceClass> DataList = wallpadMobileDeviceData.GetMobileDeviceData();
+                        int size = mData.DataList.size()-1;
+                        for(int i=1; i<4; i++) {
+                            String delID = intent.getStringExtra("DEL_ID");
+                            ((MainActivity) mContext).requestMultiControl(handler, Common.JSON.MENU.MOBILE, Common.JSON.REASON.MobileRegister, i, DataList.get(size).Name, DataList.get(size).Uid);
+                        }
                     }
 
                     int size = mData.DataList.size();

+ 2 - 2
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/ConfigPwChangeMainScreen.java

@@ -527,8 +527,8 @@ public class ConfigPwChangeMainScreen extends WpadScreen{
 				wd.closeDB();
 			}
 			//변경된 패스워드는 월패드 간 공유 되어야 한다.
-			for(int i=0; i<3; i++) {
-				((MainActivity) mContext).requestMultiControl(handler, JSON.MENU.PASSWORD, JSON.KIND.All, JSON.REASON.PassWordChange, i, CurrentPassWord);
+			for(int i=1; i<4; i++) {
+				((MainActivity) mContext).requestMultiControl(handler, JSON.MENU.PASSWORD, JSON.REASON.PassWordChange, i, CurrentPassWord, "");
 			}
 		}
 		catch (RuntimeException re) {

+ 5 - 2
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/PopupMobileDeviceDel.java

@@ -137,7 +137,6 @@ public class PopupMobileDeviceDel extends WpadScreen
                 mDelUid = intent.getStringExtra("DEL_UID");
                 mDelName = intent.getStringExtra("DEL_NAME");
                 mDelPhoneKey = intent.getStringExtra("DEL_PHONEKEY");
-                mDelID = intent.getStringExtra("DEL_ID");
                 DebugLogOutput("[PopupMobileDeviceDel] mType == 1 && mDelName : " + mDelName + ", mDelPhoneKey : " + mDelPhoneKey + ", mDelID : " + mDelID + ", mDelPhoneKey : " + mDelPhoneKey);
                 // 카카오 홈 삭제시
                 Tel_Potal_del(mDelName);
@@ -512,7 +511,11 @@ public class PopupMobileDeviceDel extends WpadScreen
         data.putExtra("SCREEN", ID.screen.PopupMobileDeviceDel);
         data.putExtra("REFRESH", true); //갱신 여부
         data.putExtra("DEL_PHONEKEY", mDelPhoneKey);
-        data.putExtra("DEL_ID", mDelID);
+        if(mType==1) {
+            data.putExtra("DEL_ID", mDelUid);
+        }else if(mType==2){
+            data.putExtra("DEL_ID", "all");
+        }
         super.setPopupResult(data);
     }