ServersList.java
上传用户:haojie1228
上传日期:2022-08-08
资源大小:347k
文件大小:7k
源码类别:

通讯/手机编程

开发平台:

Java

  1. package poker;
  2. import java.io.*;
  3. import javax.microedition.lcdui.*;
  4. import javax.microedition.rms.*;
  5. import javax.microedition.lcdui.Command;
  6. /**
  7.  * <p>Title: </p>
  8.  * <p>Description: </p>
  9.  * <p>Copyright: Copyright (c) 2004</p>
  10.  * <p>Company: </p>
  11.  * @author not attributable
  12.  * @version 1.0
  13.  */
  14. public class ServersList implements CommandListener{
  15.   List imList;
  16.   String[] imValue=new String[20];
  17.   String[] imID=new String[20];
  18.   RecordStore rs=null;
  19.   Image iamge;
  20.   InputStream is=null;
  21.   String url;
  22.   Command exitCmd,okCmd,downCmd,cancelCmd,helpCmd;
  23.   Alert MsgBox=new Alert("ERROR");
  24.   Form waitForm=new Form(" downloading...");
  25.   RoomList room;
  26.   static ServersList _instance;
  27.   static synchronized public ServersList getInstance() {
  28.     if (_instance == null) {
  29.       _instance = new ServersList();
  30.     }
  31.     return _instance;
  32.   }
  33.   public ServersList() {
  34.     //super("ServerList");
  35.     try {
  36.       jbInit();
  37.     }
  38.     catch(Exception e) {
  39.       e.printStackTrace();
  40.     }
  41.   }
  42.   public void jbInit(){
  43.     imList=new List("server list:",List.IMPLICIT);
  44.     exitCmd=new Command("exit",Command.EXIT,1);
  45.     okCmd=new Command("go on",Command.OK,1);
  46.     cancelCmd=new Command("Cancel me",Command.CANCEL,1);
  47.     downCmd=new Command("download new servers list",Command.SCREEN,2);
  48.     helpCmd=new Command("Help me",Command.HELP,1);
  49.     imList.addCommand(okCmd);
  50.     imList.addCommand(downCmd);
  51.     imList.addCommand(cancelCmd);
  52.     imList.addCommand(exitCmd);
  53.     imList.addCommand(helpCmd);
  54.     imList.setCommandListener(this);
  55.     //read from rms ,and put it into imList;
  56.     try{
  57.       rs.deleteRecordStore("db_serverList");
  58.       rs=RecordStore.openRecordStore("db_serverList",true);
  59.       int len=rs.getNumRecords();
  60.       //System.out.println("record len "+len);
  61.       if (len==0){
  62.         //if rms has not data,then put default data;
  63.         //create a new rms : db_serverList
  64.         DbRecord.set("Liu Yan","192.168.1.19","1");
  65.         rs.addRecord(DbRecord.recordByte,0,DbRecord.recordByte.length);
  66.         DbRecord.set("ZhangYin","192.168.1.19","2");
  67.         rs.addRecord(DbRecord.recordByte,0,DbRecord.recordByte.length);
  68.         rs.closeRecordStore();
  69.       }
  70.     }catch(Exception e){
  71.       Error.errCode=1;
  72.       Error.errStr="open RMS error";
  73.       return;
  74.     }
  75.     readFromRMS();
  76.   }
  77.   public void readFromRMS(){
  78.   try{
  79.    rs=RecordStore.openRecordStore("db_serverList",true);
  80.    int len=rs.getNumRecords();
  81.    for(int i=1;i<=len;i++){
  82.     DbRecord.get(rs.getRecord(i));
  83.     //after do this,the class DbRecord's servername and address can have  a value;
  84.     String s1=DbRecord.serverName.toString();
  85.     String s2=DbRecord.address.toString();
  86.     String s3=DbRecord.ServerID.toString();
  87.     imList.append(s1,GetServicData.ServerImage);
  88.     imValue[i]=s2;
  89.     imID[i]=s3;
  90.     //System.out.println(imList.getString(i-1)+imValue[i]+imID[i]);
  91.    }
  92.     rs.closeRecordStore();
  93.  }catch(RecordStoreException e){
  94.     Error.errCode=1;
  95.     Error.errStr="Error when read RMS.";
  96.  return;
  97.  }
  98. }
  99. private void writeRMSfromList(){
  100.   int len=imList.size();
  101.   try{
  102.      try{rs.closeRecordStore();}catch(Exception e1){};
  103.      RecordStore.deleteRecordStore("db_serverList");
  104.     }catch (Exception e){
  105.       Error.errCode=1;
  106.       Error.errStr="Error when delete RMS.";
  107.       return;
  108.    }
  109.   try{
  110.     rs = RecordStore.openRecordStore("db_serverList", true);
  111.     for (int i = 0; i < len; i++) {
  112.       //System.out.println(imList.getString(i)+imValue[i+1]+imID[i+1]);
  113.       DbRecord.set(imList.getString(i), imValue[i+1],imID[i+1]);
  114.       rs.addRecord(DbRecord.recordByte, 0, DbRecord.recordByte.length);
  115.     }
  116.     rs.closeRecordStore();
  117.   }catch (Exception e){
  118.     Error.errCode=1;
  119.     Error.errStr="Error when read RMS after delete";
  120.     return;
  121.   }
  122. }
  123.   private void connect() {
  124.      GetServicData.kind=1;
  125.      GetServicData.url=url;
  126.      GetServicData.imList=imList;
  127.      GetServicData.imID=imID;
  128.      GetServicData.imValue=imValue;
  129.      GetServicData.connect();
  130.      imList=GetServicData.imList;
  131.      imID=GetServicData.imID;
  132.      imValue=GetServicData.imValue;
  133.      writeRMSfromList();
  134.    }
  135. public void downLoadServerList(){
  136.      int ss=0;
  137.      ss=imList.getSelectedIndex();
  138.      //System.out.println("you select:"+ss);
  139.      url="http://"+imValue[ss+1]+"/gameservice/infomationservice.asmx/GetServerList";
  140.      //System.out.println(url);
  141.      connect();
  142.      return;
  143.    }
  144.    public String loginServer(){
  145.      //0 : login ok
  146.      //1 : password or accountName wrong
  147.      //2 : other error
  148.    try{
  149.     rs=RecordStore.openRecordStore("db_AccountInfo",true);
  150.     int len=rs.getNumRecords();
  151.      DbAccount.get(rs.getRecord(1));
  152.      String account=DbAccount.account;
  153.      String password=DbAccount.password;
  154.      System.out.println(account+password);
  155.      rs.closeRecordStore();
  156.      Login ll=Login.getInstance();
  157.      String rr=ll.login(account,password).trim();
  158.      System.out.println("login result:"+rr);
  159.      if (rr=="0"){
  160.        GameInfo.Account=account;
  161.        GameInfo.password=password;
  162.      }
  163.      System.out.println("after checking login ,rr="+rr);
  164.      return rr;
  165.   }catch(RecordStoreException e){
  166.      Error.errCode=3;
  167.      Error.errStr="Login Error.";
  168.      return "Wrong";
  169.   }
  170.  }
  171.   public void commandAction(Command c, Displayable d) {
  172.     if (c==okCmd){
  173.       // go to room list
  174.       int k = imList.getSelectedIndex();
  175.       GameInfo.ServerAddress = imValue[k + 1].toString();
  176.       GameInfo.ServerName = imList.getString(k);
  177.       GameInfo.display.setCurrent(Func.waitForm);
  178.       String ss=loginServer().trim();
  179.       System.out.println("ss="+ss);
  180.       if (ss.equals("0")){
  181.         //login ok
  182.         room=RoomList.getInstance();
  183.         room.downLoad();
  184.         _instance=null;
  185.       }else{
  186.         MsgBox.setType(AlertType.ERROR);
  187.         MsgBox.setTimeout(5000);
  188.         MsgBox.setString("login server failed.please check you account and password. In some case,please try to change the server to login again!");
  189.         GameInfo.display.setCurrent(MsgBox,imList);
  190.         Error.errCode=0;
  191.       }
  192.     }
  193.     if (c==downCmd){
  194.         Error.errCode=0;
  195.         GameInfo.display.setCurrent(waitForm);
  196.         downLoadServerList();
  197.         if (Error.errCode>0)
  198.         {
  199.           MsgBox.setType(AlertType.ERROR);
  200.           MsgBox.setTimeout(5000);
  201.           MsgBox.setString(Error.errStr);
  202.           GameInfo.display.setCurrent(MsgBox,imList);
  203.           Error.errCode=0;
  204.         }
  205.         else
  206.         {
  207.           MsgBox.setTitle("DONE!");
  208.           MsgBox.setString("ok");
  209.           MsgBox.setTimeout(1000);
  210.           MsgBox.setType(AlertType.INFO);
  211.           GameInfo.display.setCurrent(MsgBox,imList);
  212.         }
  213.         return;
  214.       }
  215.     if (c==cancelCmd){
  216.       Login login=Login.getInstance();
  217.       GameInfo.display.setCurrent(login);
  218.       login.drawFace();
  219.       _instance=null;
  220.     }
  221.   }
  222. }