⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdatathread.java

📁 PDA餐饮管理系统,在掌上电脑实现的,可以开台,点菜等多功能模块
💻 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 + -