package com.basic.security.fragment;
|
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.BaseAdapter;
|
import android.widget.Button;
|
import android.widget.EditText;
|
import android.widget.ListView;
|
import android.widget.RadioButton;
|
import android.widget.TextView;
|
|
import com.basic.security.base.BaseFragment;
|
import com.basic.security.manager.ClusterSerfSyncManager;
|
import com.basic.security.manager.ClusterSettingManager;
|
import com.basic.security.model.ClusterSetting;
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.Constants;
|
import com.basic.security.utils.ResolutionAdaptation;
|
import com.basic.security.utils.ToastUtil;
|
import com.basic.security.widget.ClusterRoundView;
|
|
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.TextChange;
|
import org.androidannotations.annotations.UiThread;
|
import org.androidannotations.annotations.ViewById;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
@EFragment
|
public class ClusterFragment extends BaseFragment {
|
@ViewById
|
Button cluster_a, cluster_b, cluster_c, cluster_plus, confirm_save, cancel_save, cluster_add, cluster_exit;
|
@ViewById
|
RadioButton only_allow, no_limit;
|
@ViewById
|
EditText cluster_name, cluster_id, cluster_cookie, cluster_ip;
|
@ViewById
|
ClusterRoundView round_view;
|
@ViewById
|
ListView lv_device_list;
|
private DeviceListAdapter deviceListAdapter;
|
private List<Map<String, String>> deviceList = new ArrayList<>();
|
private boolean isCreateCluster = true;
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
return inflater.inflate(ResolutionAdaptation.fragment_cluster1(), container, false);
|
}
|
|
@AfterViews
|
public void afterViews() {
|
}
|
|
public void queryDeviceList() {
|
}
|
|
@UiThread
|
public void queryDeviceListReturn() {
|
if (deviceListAdapter == null) {
|
deviceListAdapter = new DeviceListAdapter();
|
lv_device_list.setAdapter(deviceListAdapter);
|
}
|
deviceListAdapter.notifyDataSetChanged();
|
}
|
|
@UiThread
|
public void show() {
|
super.show();
|
ModelAdapter cluster = ClusterSettingManager.getCluster();
|
cluster_name.setText(cluster.getString(ClusterSetting.cluster_name));
|
cluster_id.setText(cluster.getString(ClusterSetting.cluster_id));
|
String password = cluster.getString(ClusterSetting.password);
|
if (!TextUtils.isEmpty(password)) {
|
try {
|
// password = new String(Base64.decode(password, Base64.NO_WRAP), "UTF8");
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
cluster_cookie.setText(password);
|
cluster_ip.setText(cluster.getString(ClusterSetting.other_node_ip));
|
isCreateCluster = true;
|
deviceListAdapter = new DeviceListAdapter();
|
lv_device_list.setAdapter(deviceListAdapter);
|
}
|
|
@Click
|
public void cluster_plus() {
|
isCreateCluster = true;
|
}
|
|
@Click
|
void confirm_save() {
|
ModelAdapter cluster = ClusterSettingManager.cluster;
|
String cluster_name = this.cluster_name.getText().toString().trim();
|
String cluster_id = this.cluster_id.getText().toString().trim();
|
String password = this.cluster_cookie.getText().toString().trim();
|
String cluster_ip = this.cluster_ip.getText().toString().trim();
|
if (TextUtils.isEmpty(cluster_name)) {
|
ToastUtil.show("请输入集群名称");
|
return;
|
}
|
if (TextUtils.isEmpty(password)) {
|
ToastUtil.show("请输入集群密码");
|
return;
|
}
|
try {
|
// password = Base64.encodeToString(password.getBytes("UTF-8"), Base64.NO_WRAP);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
cluster.setString(ClusterSetting.cluster_name, cluster_name);
|
cluster.setString(ClusterSetting.cluster_id, cluster_id);
|
cluster.setString(ClusterSetting.password, password);
|
cluster.setString(ClusterSetting.other_node_ip, cluster_ip);
|
cluster.setString(ClusterSetting.exit, Constants.FALSE);
|
ClusterSettingManager.saveCluster(cluster);
|
ToastUtil.show("操作成功");
|
synchronized (ClusterSerfSyncManager.serfQueueLock) {
|
ClusterSerfSyncManager.serfQueue.add("1");
|
ClusterSerfSyncManager.serfQueueLock.notify();
|
}
|
}
|
|
@Click
|
void cancel_save() {
|
}
|
|
@Click
|
public void cluster_add() {
|
confirm_save();
|
isCreateCluster = false;
|
}
|
|
@TextChange(com.basic.security.utils.RUtils.R_id_cluster_ip)
|
public void cluster_ip(TextView tv, CharSequence text) {
|
if (TextUtils.isEmpty(text)) {
|
cluster_add.setText("创建集群");
|
} else {
|
cluster_add.setText("加入集群");
|
}
|
}
|
|
@Click
|
public void cluster_exit() {
|
ClusterSettingManager.cluster.setTrue(ClusterSetting.exit);
|
ClusterSettingManager.saveCluster(ClusterSettingManager.cluster);
|
updateDeviceList(new ArrayList<>());
|
synchronized (ClusterSerfSyncManager.serfQueueLock) {
|
ClusterSerfSyncManager.serfQueue.add("exit");
|
ClusterSerfSyncManager.serfQueueLock.notify();
|
}
|
ToastUtil.show("退出集群成功");
|
}
|
|
@UiThread
|
public void updateDeviceList(List<Map<String, String>> availableNodes) {
|
try {
|
if (deviceList != null && deviceListAdapter != null) {
|
if (availableNodes != null) {
|
if (availableNodes.size() == 0 && deviceList.size() == 0) {
|
return;
|
}
|
for (Map<String, String> availableNode : availableNodes) {
|
String nodeIp = availableNode.get("nodeAddress");
|
if (!TextUtils.isEmpty(nodeIp)) {
|
nodeIp = nodeIp.replace(":30190", "");
|
} else {
|
nodeIp = "";
|
}
|
availableNode.put("device_id", availableNode.get("nodeID"));
|
availableNode.put("node_ip", nodeIp);
|
availableNode.put("father_node", "");
|
}
|
deviceList = availableNodes;
|
deviceListAdapter.notifyDataSetChanged();
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Click
|
public void search_cluster() {
|
// synchronized (ClusterSerfSyncManager.serfQueueLock) {
|
// ClusterSerfSyncManager.serfQueue.add("search");
|
// ClusterSerfSyncManager.serfQueueLock.notify();
|
// }
|
}
|
|
private class DeviceListAdapter extends BaseAdapter {
|
public int getCount() {
|
return deviceList == null ? 0 : deviceList.size();
|
}
|
|
public Object getItem(int position) {
|
return deviceList.get(position);
|
}
|
|
public long getItemId(int position) {
|
return position;
|
}
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
viewHolder = new ViewHolder();
|
convertView = View.inflate(getContext(), com.basic.security.utils.ResolutionAdaptation.cluster_setting_list_item(), null);
|
viewHolder.deviceID = convertView.findViewById(com.basic.security.utils.RUtils.R_id_tv_cluster_device_id);
|
viewHolder.IP = convertView.findViewById(com.basic.security.utils.RUtils.R_id_tv_cluster_ip);
|
viewHolder.fatherClusterName = convertView.findViewById(com.basic.security.utils.RUtils.R_id_tv_cluster_father_name);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
Map<String, String> device = deviceList.get(position);
|
viewHolder.deviceID.setText(device.get("device_id"));
|
viewHolder.IP.setText(device.get("node_ip"));
|
viewHolder.fatherClusterName.setText(device.get("father_node"));
|
return convertView;
|
}
|
|
class ViewHolder {
|
TextView deviceID;
|
TextView IP;
|
TextView fatherClusterName;
|
}
|
}
|
}
|