package com.wise.wawc;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import com.wise.data.CarData;
import com.wise.pubclas.Constant;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import com.wise.sql.DBExcute;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* 添加终端
* @author honesty
*/
public class DevicesAddActivity extends Activity{
private static final String TAG = "DevicesAddActivity";
private static final int check_serial = 1;
private static final int add_serial = 2;
private static final int update_sim = 3;
private static final int update_user = 4;
private static final int update_car = 5;
ImageView iv_serial;
Button iv_add;
TextView tv_car;
EditText et_serial,et_sim;
String car_id;
String device_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_devices_add);
et_serial = (EditText)findViewById(R.id.et_serial);
et_serial.setOnFocusChangeListener(onFocusChangeListener);
et_sim = (EditText)findViewById(R.id.et_sim);
et_sim.setOnFocusChangeListener(onFocusChangeListener);
tv_car = (TextView)findViewById(R.id.tv_car);
tv_car.setOnClickListener(onClickListener);
iv_serial = (ImageView)findViewById(R.id.iv_serial);
iv_serial.setOnClickListener(onClickListener);
ImageView iv_back = (ImageView)findViewById(R.id.iv_back);
iv_back.setOnClickListener(onClickListener);
iv_add = (Button)findViewById(R.id.iv_add);
iv_add.setOnClickListener(onClickListener);
}
OnClickListener onClickListener = new OnClickListener(){
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_back:
finish();
break;
case R.id.iv_serial:
startActivityForResult(new Intent(DevicesAddActivity.this, BarcodeActivity.class), 0);
break;
case R.id.iv_add:
SaveDataIn();
Toast.makeText(DevicesAddActivity.this, "终端添加中", Toast.LENGTH_LONG).show();
Add();
break;
case R.id.tv_car:
startActivityForResult(new Intent(DevicesAddActivity.this, CarSelectActivity.class), 0);
break;
}
}
};
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case check_serial:
Log.d(TAG, "返回=" + msg.obj.toString());
jsonSerial(msg.obj.toString());
break;
case add_serial:
jsonAddSerial(msg.obj.toString());
break;
case update_sim:
Log.d(TAG, "update_sim" + msg.obj.toString());
try {
String status_code = new JSONObject(msg.obj.toString()).getString("status_code");
if(status_code.equals("0")){
String url_sim = Constant.BaseUrl + "device/" + device_id + "/customer?auth_code=" + Variable.auth_code;
List<NameValuePair> paramSim = new ArrayList<NameValuePair>();
paramSim.add(new BasicNameValuePair("cust_id", Variable.cust_id));
new Thread(new NetThread.putDataThread(handler, url_sim, paramSim, update_user)).start();
}else{
SaveDataOver();
showToast();
}
} catch (Exception e) {
e.printStackTrace();
SaveDataOver();
showToast();
}
break;
case update_user:
Log.d(TAG, "更换用户 = " +msg.obj.toString());
try {
String status_code = new JSONObject(msg.obj.toString()).getString("status_code");
if(status_code.equals("0")){
if(car_id != null && !car_id.equals("")){
//绑定车辆
String url = Constant.BaseUrl + "vehicle/" + car_id + "/device?auth_code=" + Variable.auth_code;
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("device_id", device_id));
new Thread(new NetThread.putDataThread(handler, url, params, update_car)).start();
}else{
//操作完成
SaveDataOver();
Toast.makeText(DevicesAddActivity.this, "终端添加成功", Toast.LENGTH_LONG).show();
}
//TODO 发送广播更新
Intent intent = new Intent(Constant.A_UpdateDevice);
sendBroadcast(intent);
}else{
SaveDataOver();
showToast();
}
} catch (Exception e) {
e.printStackTrace();
SaveDataOver();
showToast();
}
break;
case update_car:
Log.d(TAG, "更换车辆 = " +msg.obj.toString());
//TODO 更新车辆数据
SaveDataOver();
updateVariableCarData();
updateDBData();
break;
}
}
};
/**
* 更新内存里的数据
*/
private void updateVariableCarData(){
for(CarData carData :Variable.carDatas){
if(carData.getObj_id() == Integer.valueOf(car_id)){
carData.setDevice_id(device_id);
carData.setSerial(et_serial.getText().toString().trim());
break;
}
}
}
/**
* 更新数据库里的数据
*/
private void updateDBData(){
DBExcute dbExcute = new DBExcute();
ContentValues values = new ContentValues();
values.put("device_id", device_id);
values.put("serial", et_serial.getText().toString().trim());
dbExcute.UpdateDB(this, values, "obj_id=?", new String[]{car_id}, Constant.TB_Vehicle);
}
private void showToast(){
Toast.makeText(DevicesAddActivity.this, "添加终端失败", Toast.LENGTH_SHORT).show();
}
private void Add(){
String serial = et_serial.getText().toString().trim();
String sim = et_sim.getText().toString().trim();
if(serial.equals("")){
et_serial.setError("序列号不能为空");
}else if(sim.length() != 11){
et_sim.setError("sim格式不对");
}else{
String url = Constant.BaseUrl + "device/serial/" + serial + "?auth_code=" + Variable.auth_code;
new Thread(new NetThread.GetDataThread(handler, url, add_serial)).start();
}
}
private void jsonAddSerial(String result){
try {
if(result.equals("")){
et_serial.setError("序列号不存在");
SaveDataOver();
}else{
JSONObject jsonObject = new JSONObject(result);
String status = jsonObject.getString("status");
if(status.equals("0")||status.equals("1")){
String sim = et_sim.getText().toString().trim();
device_id = jsonObject.getString("device_id");
String url = Constant.BaseUrl + "device/" + device_id + "/sim?auth_code=" + Variable.auth_code;
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("sim", sim));
new Thread(new NetThread.putDataThread(handler, url, params, update_sim)).start();
}else if(status.equals("2")){
et_serial.setError("序列号已经使用");
SaveDataOver();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void SaveDataIn(){
et_serial.setEnabled(false);
et_sim.setEnabled(false);
iv_serial.setEnabled(false);
iv_add.setEnabled(false);
}
private void SaveDataOver(){
et_serial.setEnabled(true);
et_sim.setEnabled(true);
iv_serial.setEnabled(true);
iv_add.setEnabled(true);
}
private void checkSerial(){
String serial = et_serial.getText().toString().trim();
String url = Constant.BaseUrl + "device/serial/" + serial + "?auth_code=" + Variable.auth_code;
new Thread(new NetThread.GetDataThread(handler, url, check_serial)).start();
}
private void jsonSerial(String result){
try {
if(result.equals("")){
et_serial.setError("序列号不存在");
}else{
JSONObject jsonObject = new JSONObject(result);
String status = jsonObject.getString("status");
if(status.equals("0")||status.equals("1")){
}else if(status.equals("2")){
et_serial.setError("序列号已经使用");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
OnFocusChangeListener onFocusChangeListener = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
switch (v.getId()) {
case R.id.et_serial:
checkSerial();
break;
case R.id.et_sim:
String sim = et_sim.getText().toString().trim();
if(sim.length() != 11){
et_sim.setError("sim格式不对");
}
break;
}
}
}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == 2){
String result = data.getStringExtra("result");
et_serial.setText(result);
}else if(resultCode == 1){
car_id = ""+data.getIntExtra("Obj_id", 0);
String Obj_name = data.getStringExtra("Obj_name");
tv_car.setText(Obj_name);
}
};
}