package com.banking.xc.utils.user; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import java.util.Random; import skytv_com.banking.enjoymovie.MyApplication; import android.content.Context; import android.net.DhcpInfo; import android.net.wifi.WifiManager; import android.text.TextUtils; import com.banking.xc.database.table.UserTable; import com.banking.xc.entity.User; import com.banking.xc.entity.VacationEntity; import com.banking.xc.utils.HttpGroup; import com.banking.xc.utils.HttpGroup.HttpError; import com.banking.xc.utils.HttpGroup.HttpResponse; import com.banking.xc.utils.HttpGroup.HttpSetting; import com.banking.xc.utils.HttpGroup.HttpSettingParams; import com.banking.xc.utils.HttpGroup.OnCommonListener; import com.banking.xc.utils.HttpGroupUtils; import com.banking.xc.utils.Log; import com.banking.xc.utils.webService.request.UserRequest; import com.banking.xc.utils.webService.request.vacation.VacationOrderAmountRequest; import com.banking.xc.utils.webService.request.vacation.VacationOrderCreateRequest; import com.banking.xc.utils.xml.UserXmlParseHandler; import com.banking.xc.utils.xml.frame.XmlParseListener; import com.banking.xc.utils.xml.vacation.VacationOrderAmountXmlParseHandler; import com.banking.xc.utils.xml.vacation.VacationOrderCreateXmlParseHandler; import com.banking.xc.utils.xml.vacation.VacationPackageInfoXmlParseHandler; public class UserUtil { private static String TAG = "UserUtil"; /** * 1表示UserUniqueID 28表示AllianceID 501表示订单号 503表示SID */ private static User mUser; /** * 通过这个randonName来唯一指定 * @return */ public static String getRandomName(){ StringBuffer sb = new StringBuffer("用户"); final String[] sArray = new String[]{"a","b","c","d","e","f","g", "h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w", "x","y","z","0","1","2","3","4","5","6","7","8","9"}; Random random = new Random(); int size = sArray.length; for(int i=0;i<6;i++){ final int x = random.nextInt(size); sb.append(sArray[x]); } if(Log.D){ Log.d(TAG, "New random User"+sb.toString()); } return sb.toString(); } public static void initializeUser(){ User user = UserTable.getUser(); if(user == null){ getUserByUniqueID(getRandomName()); }else{ if(Log.D){ Log.d(TAG, "get User"+user.getRandomName()+user.getUniqueID()); } if(!TextUtils.isEmpty(user.getUniqueID())){ mUser = user; }else{ //还需要 getUserByUniqueID(getRandomName()); } } } public static void getUserByUniqueID(final String randomUserName) { HttpGroupUtils.getHttpGroupaAsynPool(); UserRequest userRequest = new UserRequest(); userRequest.setUidKey(randomUserName); HttpSetting httpSetting = new HttpGroup.HttpSetting(userRequest); httpSetting.setListener(new OnCommonListener() { @Override public void onEnd(HttpResponse httpResponse) { String result = httpResponse.getString(); InputStream inputStream = new ByteArrayInputStream(result.getBytes()); final UserXmlParseHandler parseHandler = new UserXmlParseHandler(new XmlParseListener() { @Override public void onParseStart() { } @Override public void onParseError(String reason) { } @Override public void onParseSuccess(Object o) { User user = (User) o; mUser = user; System.out.println("mUser.getUniqueID()"+mUser.getUniqueID()); UserTable.insertUser(randomUserName,mUser.getUniqueID()); //VacationDetailActivity.getVacationItem(); //VacationDetailActivity.getVacationOption(); //createVacationOrder(); //getVacationOrderAmout(); } }, inputStream); parseHandler.parse(); } @Override public void onError(HttpError error) { // TODO Auto-generated method stub } @Override public void onReady(HttpSettingParams httpSettingParams) { // TODO Auto-generated method stub } }); HttpGroupUtils.getHttpGroupaAsynPool().add(httpSetting); } /*public static void createVacationOrder(){ VacationOrderCreateRequest request = new VacationOrderCreateRequest(); request.setPkg("93912");//vacationBaseInfo.getPkg() request.setUid(UserUtil.getUser().getUniqueID()); //request.setTemporaryOrderDate("2011-04-05");//DateTimeUtil.getTodayDate()); HttpSetting httpSetting = new HttpGroup.HttpSetting(request); httpSetting.setEffect(HttpSetting.EFFECT_DEFAULT); httpSetting.setListener(new OnCommonListener() { @Override public void onReady(HttpSettingParams httpSettingParams) { } @Override public void onError(HttpError error) { } @Override public void onEnd(HttpResponse httpResponse) { String result = httpResponse.getString(); System.out.println("createVacationOrder()"); if(Log.D){ Log.dAll("","createVacationOrder()",result); } InputStream inputStream = new ByteArrayInputStream(result.getBytes()); final VacationOrderCreateXmlParseHandler parseHandler = new VacationOrderCreateXmlParseHandler(new XmlParseListener() { @Override public void onParseStart() { } @Override public void onParseError(String reason) { } @Override public void onParseSuccess(Object o) { String tempOrder = (String)o; System.out.println("XC tempOrder"+tempOrder); getVacationOrderAmout(tempOrder); } }, inputStream); parseHandler.parse(); } }); HttpGroupUtils.getHttpGroupaAsynPool().add(httpSetting); }*/ public static User getRememberedUser() { //TODO数据库中读取 return null; } public static User getUser(){ if(mUser==null){ mUser = getRememberedUser(); } return mUser; } public static String getIp(){ WifiManager wm = (WifiManager) MyApplication.getInstance() .getSystemService(Context.WIFI_SERVICE); DhcpInfo di = wm.getDhcpInfo(); if (di != null) { return String.valueOf(di.ipAddress); } return ""; } public static String getNetAddressInfo() { try { StringBuffer sb = new StringBuffer(); for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf .getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { String addr = inetAddress.getHostAddress(); if (!TextUtils.isEmpty(addr)) { if (sb.length() == 0) { sb.append(addr); } else { sb.append(", ").append(addr); //$NON-NLS-1$ } } } } } String netAddress = sb.toString(); if (!TextUtils.isEmpty(netAddress)) { return netAddress; } } catch (SocketException e) { Log.e(TAG, e.getLocalizedMessage(), e); } return null; } /** * * @return */ public boolean isUserAvaliable() { if (mUser != null) { return true; } if ((mUser = getRememberedUser()) != null) { return true; } return false; } }