📄 getdatathread.java
字号:
package junwei;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
import java.util.*;
import rms.*;
/**
* 负责和服务器交互获取数据,存入info
* 根据需要把数据存入rms
* @author hong
*
*/
public class GetDataThread extends Thread {
private int reqTag; // 请求类型
//请求类型定义
final static int rt_login=0;
final static int rt_breed=1;
final static int rt_menu=2;
final static int rt_table=3;
final static int rt_PDA=4;
final static int rt_work=5;//开台、撤台、换台、并台、点菜、退菜、催菜
final static int rt_taste=6;
final static int rt_searchBill=7;
final static int rt_backReason=8;
final static int rt_page=9;
private String url;
private Vector info = new Vector();
public void init(int reqTag) {
this.reqTag = reqTag;
this.url = getLink("");
System.out.println("准备连接:" + this.url);
}
public void init(int reqTag,String reqStr){
this.reqTag = reqTag;
this.url = getLink(reqStr);
//System.out.println("准备连接:" + this.url);
}
/**
* 根据请求类型获取访问连接字符串
*
* @return 访问连接字符串
*/
private String getLink(String reqStr) {
String str = "";
switch (reqTag) {
case rt_login://登录
str = MainMidlet.serverLink + "/myServer/servlet/"+reqStr;
break;
case rt_breed:// 品种类型
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=1";
break;
case rt_menu:// 菜品
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=2";
break;
case rt_table://桌台信息
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=3&areaID="+MainMidlet.areaID;
break;
case rt_PDA:// PDA设置信息
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=4&PDAID="+MainMidlet.PDAID;
break;
case rt_work:
case rt_searchBill:
str=MainMidlet.serverLink + "/myServer/servlet/"+reqStr;
break;
case rt_taste:// 口味
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=5";
break;
case rt_backReason://退菜原因
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=6";
break;
case rt_page://菜单信息
str = MainMidlet.serverLink + "/myServer/servlet/SearchServlet?tag=7";
break;
}
return str;
}
public void run() {
boolean error = false;
HttpConnection conn = null;
InputStream inputStream = null;
DataInputStream dataInputStream = null;
String s;
info.removeAllElements();
try {
conn = (HttpConnection) Connector.open(url);
inputStream = conn.openInputStream();
dataInputStream = new DataInputStream(inputStream);
while (true) {
s = dataInputStream.readUTF();
System.out.println(s);
info.addElement(s);
}
} catch (EOFException e) {
}catch(IllegalArgumentException e){
error = true;
Alert al;
al = AlertScreen.getInstance("联机时期发生错误","服务器连接出错,请先进行系统设置");
Navigator.display.setCurrent(al);
}
catch(ConnectionNotFoundException e){
error = true;
Alert al;
al = AlertScreen.getInstance("联机时期发生错误","找不到服务器");
Navigator.display.setCurrent(al);
}
catch (Exception e) {
error = true;
Alert al;
al = AlertScreen.getInstance("联机时期发生错误", e.toString());
Navigator.display.setCurrent(al);
}finally {
try {
if (conn != null)
conn.close();
} catch (Exception e) {
}
}
if (!error) {
dealData();
}
}
private void dealData() {
switch (reqTag) {
case rt_login:
deal_login();
break;
case rt_breed:// 品种类型
deal_syscode(1);
break;
case rt_menu:// 菜单
deal_menu();
break;
case rt_table:// 桌台
deal_table();
break;
case rt_PDA:
deal_PDA();
break;
case rt_work:
deal_work();
break;
case rt_taste:
deal_syscode(2);
break;
case rt_backReason:
deal_syscode(3);
break;
case rt_searchBill:
deal_searchBill();
break;
case rt_page:
deal_syscode(4);
}
}
private void deal_login(){
if ((info.elementAt(0).toString().equals("0"))&&(info.size()==4))
{
MainMidlet.glbUserID=info.elementAt(1).toString();
MainMidlet.glbUserNo=info.elementAt(2).toString();
MainMidlet.glbUserName=info.elementAt(3).toString();
MainMidlet.islogin=true;
MainScreen.getInstance().showInfo("登录成功");
}
else
{
MainMidlet.islogin=false;
MainScreen.getInstance().showInfo("登录失败:"+info.elementAt(1).toString());
}
MainScreen.getInstance().repaintBottom();
MainScreen.getInstance().initMenu();
}
//处理系统编码 tag 1-菜品类型 2-客户要求 3-退菜原因 4-菜单类型
private void deal_syscode(int tag){
RecordEnumeration re;
RecordStore rs=null;
switch (tag){
case 1:
rs = RMSUtil.openRSAnymay(MainMidlet.RMS_BREED);
break;
case 2:
rs = RMSUtil.openRSAnymay(MainMidlet.RMS_TASTE);
break;
case 3:
rs = RMSUtil.openRSAnymay(MainMidlet.RMS_BACKREASON);
break;
case 4:
rs=RMSUtil.openRSAnymay(MainMidlet.RMS_PAGE);
break;
}
if (rs != null) {
try {
// 删除原纪录
re = rs.enumerateRecords(null, null, false);
while (re.hasNextElement()) {
rs.deleteRecord(re.nextRecordId());
}
// 写入当前纪录
Syscode aSyscode = new Syscode();
for (int i = 0; i < info.size(); i++) {
String[] spStr = MainMidlet.splitString(info.elementAt(i)
.toString(), '-');
aSyscode.setId(spStr[0]);
aSyscode.setName(spStr[1]);
byte[] tmp = aSyscode.encode();
rs.addRecord(tmp, 0, tmp.length);
}
rs.closeRecordStore();
} catch (Exception e) {
System.out.println(e);
}
}
}
private void deal_menu(){
RecordEnumeration re;
RecordStore rs;
rs = RMSUtil.openRSAnymay(MainMidlet.RMS_MENU);
if (rs != null) {
try {
// 删除原纪录
re = rs.enumerateRecords(null, null, false);
while (re.hasNextElement()) {
rs.deleteRecord(re.nextRecordId());
}
// 写入当前纪录
Menu aMenu = new Menu();
System.out.println("infosize:"+info.size());
for (int i = 0; i < info.size(); i++) {
String[] spStr = MainMidlet.splitString(info.elementAt(i)
.toString(), '-');
aMenu.setMenuId(spStr[0]);
aMenu.setMenuName(spStr[1]);
aMenu.setBreedId(spStr[2]);
aMenu.setUnit(spStr[3]);
aMenu.setPrice(spStr[4]);
aMenu.setPageId(spStr[5]);
byte[] tmp = aMenu.encode();
rs.addRecord(tmp, 0, tmp.length);
}
rs.closeRecordStore();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
}
private void deal_table(){
try {
Table[] tables = new Table[info.size()];
for (int i = 0; i < info.size(); i++) {
String[] spStr = MainMidlet.splitString(info.elementAt(i).toString(),
'-');
int status = Table.ST_free;
switch (Integer.parseInt(spStr[2])) {
case 1:
status = Table.ST_free;
break;
case 2:
status = Table.ST_use;
break;
case 3:
status = Table.ST_engage;
break;
case 4:
status = Table.ST_stop;
}
tables[i] = new Table(spStr[0],spStr[1],status);
}
MainScreen.getInstance().createTables(tables);
} catch (Exception e) {
System.out.println(e.toString());
}
}
private void deal_PDA(){
if ((info.elementAt(0).toString().equals("1"))&&(info.size()==6))
{
MainMidlet.PDAID=info.elementAt(1).toString();
MainMidlet.posID=info.elementAt(2).toString();
MainMidlet.posName=info.elementAt(3).toString();
MainMidlet.areaID=info.elementAt(4).toString();
MainMidlet.areaName=info.elementAt(5).toString();
MainScreen.getInstance().repaintBottom();
//存储PDAID
byte[] tmp = null;
RecordStore rs;
rs = RMSUtil.openRSAnymay(MainMidlet.RMS_SYSINFO);
if (rs != null) {
try {
ByteArrayOutputStream byteOutStrean = new ByteArrayOutputStream();
DataOutputStream outStream = new DataOutputStream(byteOutStrean);
outStream.writeUTF(MainMidlet.PDAID);
tmp = byteOutStrean.toByteArray();
outStream.close();
byteOutStrean.close();
RecordEnumeration re = rs.enumerateRecords(null, null, false);
if (re.numRecords() == 0) {
rs.addRecord(tmp, 0, tmp.length);
} else {
while (re.hasNextElement()) {
int id = re.nextRecordId();
rs.setRecord(id, tmp, 0, tmp.length);
}
}
rs.closeRecordStore();
} catch (Exception e) {
e.printStackTrace();
}
}
GetDataThread t = new GetDataThread();
t.init(GetDataThread.rt_table);
t.start();
}
else
{
Navigator.current=Navigator.SYSINFO_SCREEN;
Navigator.show(null);
}
}
private void deal_work() {
MainScreen.getInstance().showInfo(info.elementAt(1).toString());
if (info.elementAt(0).equals("0")) {
GetDataThread t = new GetDataThread();
t.init(GetDataThread.rt_table);
t.start();
}
}
private void deal_searchBill(){
if (info.elementAt(0).equals("0")) {
String str="";
for (int i=1;i<info.size();i++)
str+=info.elementAt(i)+"\r\n";
Navigator.display.setCurrent(AlertScreen.getInstance("账单信息",str));
}
else{
MainScreen.getInstance().showInfo(info.elementAt(1).toString());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -