Browse Source

[최진오]
웹소켓 리시버 수정
노드 컨트롤 수정
순서변경 수정

jinochoi 8 năm trước cách đây
mục cha
commit
1583dde754

+ 2 - 0
onecable/src/main/java/com/ntels/onecable/common/Constants.java

@@ -661,6 +661,8 @@ public interface Constants {
    */
   public static final String KEY_CONDITION_TYPE_CODE = "condition_type_code";
   public static final String KEY_CONDITION_TYPE_CODE_NAME = "condition_type_code_name";
+  public static final String KEY_COMMANDCLASS_ID = "commandclass_id";
+  public static final String KEY_VALUE = "value";
   public static final String KEY_CMDCLS_VALUE = "cmdcls_value";
   public static final String KEY_AVAILABLE_YN = "available_yn";
   public static final String KEY_DELETE_YN = "delete_yn";

+ 24 - 0
onecable/src/main/java/com/ntels/onecable/common/http/HttpSend.java

@@ -558,6 +558,30 @@ public class HttpSend {
             e.printStackTrace();
         }
     }
+    /**
+     * [PUT]R.9.6 디바이스 순서 초기화
+     *
+     * @param bodyVal 요청타입(device or node)
+     */
+    public void putDeviceSeq(String bodyVal) {
+        String url = "";
+        String interfaceId = "";
+        String sendType = "";
+        String body = "";
+        String fileParamName = "";
+        String filePath = "";
+        ArrayList<HashMap<String, Object>> alPost = new ArrayList<HashMap<String, Object>>();
+        ArrayList<String> alFilePath = new ArrayList<String>();
+        try {
+            interfaceId = mUtil.getString(context, R.string.API_VERSION)
+                    + mUtil.getString(context, R.string.SEND_P_device_seq, mAppConfig.getCustId(), mAppConfig.getCtrtGroupId());
+            sendType = Constants.SEND_TYPE_PUT1;
+            body = bodyVal;
+            setHttp(url, interfaceId, sendType, alPost, body, fileParamName, filePath, alFilePath);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
     /**
      * [GET]퀴즈 문제 리스트 조회.

+ 17 - 3
onecable/src/main/java/com/ntels/onecable/common/widget/CustomActivity.java

@@ -63,6 +63,7 @@ public class CustomActivity extends AppCompatActivity {
     private Boolean mIsWebSocket = false;
     private Boolean mIsPermissionCheckLogic = false;
     private WebSocketService mWebSocketService;
+    private Boolean mIsMain = false;
 
     private ServiceConnection mServiceConnection = new ServiceConnection() {
         @Override
@@ -134,11 +135,16 @@ public class CustomActivity extends AppCompatActivity {
             Dlog.v(intentData);
 
             String nameType = intentData.getStringExtra(INTENT_NAME_TYPE);
-            if (nameType.equals(KneetMessageLocalBroadCast.INTENT_ACTION_WEBSOCKET_MSG_RECEIVED)) {
-                recevicedWebSocket(intentData);
-            } else if (nameType.equals(KneetMessageLocalBroadCast.INTENT_ACTION_HOMEHUB_STATE_CHANGE)) {
+
+            if (nameType.equals(KneetMessageLocalBroadCast.INTENT_ACTION_HOMEHUB_STATE_CHANGE)) {
                 setHomeHubStateAll();
             } else {
+                if (nameType.equals(KneetMessageLocalBroadCast.INTENT_ACTION_WEBSOCKET_MSG_RECEIVED)) {
+                    recevicedWebSocket(intentData);
+                    if (!mIsMain) {
+                        return;
+                    }
+                }
                 Bundle bundle = intentData.getExtras();
 
                 Intent intent = getIntent();
@@ -505,6 +511,14 @@ public class CustomActivity extends AppCompatActivity {
         mIsWebSocket = webSocket;
     }
 
+    public Boolean getIsMain() {
+        return mIsMain;
+    }
+
+    public void setIsMain(Boolean isMain) {
+        mIsMain = isMain;
+    }
+
     @Override
     @TargetApi(Build.VERSION_CODES.M)
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

+ 4 - 1
onecable/src/main/java/com/ntels/onecable/view/Main.java

@@ -212,7 +212,9 @@ public class Main extends CustomActivity implements View.OnClickListener,
                 } else if (messageType.equals(Constants.WEBSOCKET_TYPE_AUTH_AUTO)) {
                     resultWsAuth(jsonObject);
                 } else {
-                    return;
+//                    return;
+
+
                 }
             } catch (JSONException ex) {
                 ex.printStackTrace();
@@ -244,6 +246,7 @@ public class Main extends CustomActivity implements View.OnClickListener,
         Dlog.v("mAppConfig.getIntro()=" + mAppConfig.getIntro());
 
         setIsWebSocket(true);
+        setIsMain(true);
 
         View viewToLoad = LayoutInflater.from(mActivity).inflate(R.layout.main, null);
         this.setContentView(viewToLoad);

+ 97 - 17
onecable/src/main/java/com/ntels/onecable/view/things/FragmentThings.java

@@ -76,6 +76,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
     private static final int MSG_COM_D_CLOUD_NODE = 4;
     private static final int MSG_COM_WS_NODE_DELETE = 5;
     private static final int MSG_COM_P_DEVICE_SEQ_INIT = 6;
+    private static final int MSG_COM_P_DEVICE_SEQ =7;
     /**
      * The Com handler.
      */
@@ -106,7 +107,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
     private MainInterface mCallback;
     private Intent mIntent;
     private Util mUtil = new Util();
-    private String mDeviceId = "";
+    private String mSelectDeviceId = "";
     /**
      * 노드 제어 타임아웃 체크 리스너.
      */
@@ -348,16 +349,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
             @Override
             public void onClick(View view) {
 
-                mUtil.getView(toolbar, R.id.llToolbar).setVisibility(View.VISIBLE);
-                mUtil.getView(toolbar, R.id.llToolbarMore).setVisibility(View.GONE);
-                mUtil.getView(toolbar, R.id.btnToolbarClose).setVisibility(View.GONE);
-                mUtil.getView(toolbar, R.id.btnToolbarMore).setVisibility(View.VISIBLE);
-                mDataAdapter.setListCheck(false);
-                mDataAdapter.setDeleteCheck(false);
-                mDataAdapter.setMoveCheck(false);
-                mDataAdapter.notifyDataSetChanged();
-                mIsListEdit = false;
-                setRefresh(true);
+                mComHandler.sendMessageDelayed(mComHandler.obtainMessage(MSG_COM_P_DEVICE_SEQ), 10);
             }
         });
         mUtil.getView(toolbar, R.id.btnToolbarClose).setOnClickListener(new View.OnClickListener() {
@@ -422,6 +414,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
                 Dlog.v("jino111113");
                 if (mAppConfig.getDevicesList().size()==1) {
                     mUtil.getTextView(toolbar, R.id.tvToolbarTitle1).setText(mAppConfig.getFirstHomehubDeviceName());
+
                 } else {
                     //여기서 장치 선택 관련 작업을 해야함
 
@@ -681,9 +674,11 @@ public class FragmentThings extends Fragment implements View.OnClickListener
         sendParams.put(Constants.KEY_DEVICE_ID, callHttpDeviceId);
         sendParams.put(Constants.KEY_NODE_ID, callHttpNodeId);
         sendParams.put(Constants.KEY_COMMAND_TYPE, Constants.WEBSOCKET_COMM_TYPE_CONTROL);
+        sendParams.put(Constants.KEY_REQUEST_ID, mAppConfig.getSelectServicehubRequestId());
+        sendParams.put(Constants.KEY_CUST_ID, mAppConfig.getCustId());
+        sendParams.put(Constants.KEY_CTRT_GRP_ID, mAppConfig.getCtrtGroupId());
         sendParams.put(Constants.KEY_CMDCLS_ID, callHttpCmdclsId);
         sendParams.put(Constants.KEY_CMDCLS_VALUE, callHttpRequestValue);
-        sendParams.put(Constants.KEY_REQUEST_ID, mAppConfig.getSelectServicehubRequestId());
 
         mCallback.getWebSocketService().send(Constants.WEBSOCKET_SEND_NODE_COMMAND, sendParams);
         // 제어 요청 10초 후까지 응답이 없으면 타임아웃 처리.
@@ -742,10 +737,10 @@ public class FragmentThings extends Fragment implements View.OnClickListener
         String resultRequestTime = mUtil.null2string(joResult.get(Constants.KEY_REQUEST_TIME));
         int loadingRow = -1;
         for (int row = 0; row < mAlTotalList.size(); row++) {
-
             String deviceId = mUtil.null2string(mAlTotalList.get(row).get(Constants.KEY_DEVICE_ID));
             String nodeId = mUtil.null2string(mAlTotalList.get(row).get(Constants.KEY_NODE_ID));
             if (resultDeviceId.equals(deviceId) && resultNodeId.equals(nodeId)) {
+
                 mAlTotalList.get(row).put(Constants.KEY_REQUEST_TIME, "");
 
                 Dlog.v("Things jino0 =" + resultRequestTime);
@@ -779,11 +774,16 @@ public class FragmentThings extends Fragment implements View.OnClickListener
             String currentDeviceId = mUtil.null2string(mAlTotalList.get(row).get(Constants.KEY_DEVICE_ID));
             String currentNodeId = mUtil.null2string(mAlTotalList.get(row).get(Constants.KEY_NODE_ID));
             String contentValue = mUtil.null2string(hmContentValue.get(mAlTotalList.get(row).get(Constants.KEY_CMDCLS_ID)));
+
+            Dlog.v("contentValue = " + contentValue);
             if (resultDeviceId.equals(currentDeviceId) && resultNodeId.equals(currentNodeId)) {
+                Dlog.v("contentValue1 = " + contentValue);
                 if (!contentValue.isEmpty()) {
+                    Dlog.v("contentValue2 = " + contentValue);
                     mAlTotalList.get(row).put(Constants.KEY_CONTENT_VALUE, contentValue);
                 }
                 if (!resultOnlineState.isEmpty()) {
+                    Dlog.v("contentValue3 = " + contentValue);
                     mAlTotalList.get(row).put(Constants.KEY_ONLINE_STATE, resultOnlineState);
                 }
                 mAlTotalList.get(row).put(Constants.KEY_COLLECT_TIME, resultCollectTime);
@@ -971,9 +971,8 @@ public class FragmentThings extends Fragment implements View.OnClickListener
                     resultPutDeviceSeqInit(result);
                 }
             });
-            mAlTotalList.clear();
             mSwipeRefreshLayout.setVisibility(View.GONE);
-            httpSend.putDeviceSeqInit("node");
+            httpSend.putDeviceSeq("node");
         } catch (Exception ex) {
             ex.printStackTrace();
         }
@@ -1013,6 +1012,84 @@ public class FragmentThings extends Fragment implements View.OnClickListener
         }
     }
 
+    /**
+     * 디바이스 노드 순서 초기화
+     */
+    private void sendPutDeviceSeq() {
+
+        try {
+            HttpSend httpSend;
+
+            httpSend = new HttpSend(mActivity, !mSwipeRefreshLayout.isRefreshing());
+
+            httpSend.setOnDataSendToReslutEvent(new OnDataSendToReslut() {
+
+                @Override
+                public void resultResponse(Response result) {
+
+                    resultPutDeviceSeq(result);
+                }
+            });
+
+            ArrayList<HashMap<String, Object>> tempAlList = new ArrayList<HashMap<String, Object>>();
+            tempAlList = mDataAdapter.getItemList();
+
+            ArrayList<HashMap<String, Object>> sendAlList = new ArrayList<HashMap<String, Object>>();
+            for (int row = 0; row < tempAlList.size(); row++) {
+                HashMap<String, Object> hmTempDevice = new HashMap<String, Object>();
+                hmTempDevice = tempAlList.get(row);
+                if (hmTempDevice.get(Constants.KEY_PRD_NAME) != null){
+                    Dlog.v("hmTempDevice name " + hmTempDevice.get(Constants.KEY_PRD_NAME));
+                    HashMap<String, Object> tempMap = new HashMap<String, Object>();
+                    tempMap.put(Constants.KEY_DEVICE_ID, mUtil.null2string(hmTempDevice.get(Constants.KEY_DEVICE_ID)));
+                    tempMap.put(Constants.KEY_NODE_ID, mUtil.null2string(hmTempDevice.get(Constants.KEY_NODE_ID)));
+                    sendAlList.add(tempMap);
+                }
+            }
+
+            HashMap<String, Object> sendMap = new HashMap<String, Object>();
+            sendMap.put(Constants.KEY_NODES, sendAlList);
+            Dlog.v(mUtil.MapToJson(sendMap));
+            httpSend.putDeviceSeq(mUtil.MapToJson(sendMap));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * 디바이스 노드 순서 초기화 결과
+     *
+     * @param result 결과 data
+     */
+    private void resultPutDeviceSeq(Response result) {
+
+        mLoading = false;
+        try {
+            if (result.getStatusCode() == 200) {
+                mUtil.getView(toolbar, R.id.btnToolbarClose).performClick();
+                onListReload();
+            } else {
+                JSONObject joResult = new JSONObject(result.getContent());
+                Dlog.v(joResult.toString());
+//                String errorCode = mUtil.null2string(joResult.get(Constants.KEY_ERR_CODE));
+                String resultCode = mUtil.null2string(joResult.get(Constants.KEY_RESULT_CODE));
+//                String errorMsg = mUtil.null2string(joResult.get(Constants.KEY_ERR_MSG));
+                String resultMsg = mUtil.null2string(joResult.get(Constants.KEY_RESULT_MSG));
+
+                if (resultCode.equals("401")) {
+                    customDialog.msgAlert(mActivity, Constants.MSG998, resultMsg);
+                } else if (resultCode.equals("401-106")) {
+                    customDialog.msgAlert(mActivity, Constants.MSG997, resultMsg);
+                } else {
+                    customDialog.msgAlert(mActivity, Constants.MSG000, resultMsg);
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            customDialog.msgAlert(mActivity, Constants.MSG807);
+        }
+    }
+
     /**
      * Cloud to Cloud 연동 Node 삭제.
      */
@@ -1289,6 +1366,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
             return;
         }
 
+
         if (callType == 0) {
             //추가하기
             thingsDeviceAdd();
@@ -1411,7 +1489,7 @@ public class FragmentThings extends Fragment implements View.OnClickListener
         } else if (callType == 3) {
             // 실행하기
             callHttpRequestValue = mDataAdapter.getHttpValue();
-            callHttpDeviceId = mAppConfig.getSelect_Homegrp_Homehub_Device_Id();
+            callHttpDeviceId = mUtil.null2string(mAlTotalList.get(position).get(Constants.KEY_DEVICE_ID));
             callHttpNodeId = mUtil.null2string(mAlTotalList.get(position).get(Constants.KEY_NODE_ID));
             callHttpCmdclsId = mUtil.null2string(mAlTotalList.get(position).get(Constants.KEY_CMDCLS_ID));
             String contentValue = mUtil.null2string(mAlTotalList.get(position).get(Constants.KEY_CONTENT_VALUE));
@@ -1470,7 +1548,9 @@ public class FragmentThings extends Fragment implements View.OnClickListener
                 case MSG_COM_P_DEVICE_SEQ_INIT:
                     sendPutDeviceSeqInit();
                     break;
-
+                case MSG_COM_P_DEVICE_SEQ:
+                    sendPutDeviceSeq();
+                    break;
                 default:
                     break;
             }

+ 16 - 1
onecable/src/main/java/com/ntels/onecable/view/things/FragmentThingsAdapter.java

@@ -170,6 +170,11 @@ public class FragmentThingsAdapter extends RecyclerView.Adapter<RecyclerView.Vie
         return alTotalList.size();
     }
 
+    public ArrayList<HashMap<String, Object>>  getItemList() {
+
+        return alTotalList;
+    }
+
     @Override
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
@@ -776,8 +781,18 @@ public class FragmentThingsAdapter extends RecyclerView.Adapter<RecyclerView.Vie
 
     @Override
     public boolean onItemMove(int fromPosition, int toPosition) {
-        Collections.swap(alTotalList, fromPosition, toPosition);
+        if (fromPosition < toPosition) {
+            for (int i = fromPosition; i < toPosition; i++) {
+                Collections.swap(alTotalList, i, i + 1);
+            }
+        } else {
+            for (int i = fromPosition; i > toPosition; i--) {
+                Collections.swap(alTotalList, i, i - 1);
+            }
+        }
         notifyItemMoved(fromPosition, toPosition);
+
         return true;
     }
+
 }

+ 2 - 0
onecable/src/main/res/values/strings_send_url.xml

@@ -96,6 +96,8 @@
     <string name="SEND_P_deviceinfo" translatable="false">http://%1$s:8877/deviceinfo</string>
     <!-- R.9.6	디바이스 순서 초기화	PUT  /ocs/v1/customer/{cust_id}/group/{ctrt_grp_id}/device/seq/init		-->
     <string name="SEND_P_device_seq_init" translatable="false">/customer/%1$s/group/%2$s/device/seq/init</string>
+    <!-- R.9.9	디바이스/노드 순서변경	PUT  /ocs/v1/customer/{cust_id}/group/{ctrt_grp_id}/device/seq	-->
+    <string name="SEND_P_device_seq" translatable="false">/customer/%1$s/group/%2$s/device/seq</string>
 
     <!--3.4 Rules(홈 규칙)   -->