package org.steeven.lunch.model;
/**
* 订单
* <p>Title: 午餐订饭系统</p>
* <p>Description: Echo教程的一个演示</p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author steeven
* @version 1.0
*/
import java.util.*;
import nextapp.echo.*;
import java.text.SimpleDateFormat;
public class Order implements Comparable{
public static final int STATUS_OPEN = 0; //未交易
public static final int STATUS_CLOSED = 1; //交易完成
public static final int STATUS_FAILED = 2; //交易失败
public String userName; //用户
public String dishName; //菜名
public double price; //单价
public double count; //数量
public Date date; //下单日期
public int status; //状态: 未交易/完成/失败
public static final String[] STATUS_MARK = new String[]{"?","V","X"};
public String toString(){
return "["+STATUS_MARK[status]+"] "+
SimpleDateFormat.getDateInstance().format(date)
+" : "+userName+" : "+dishName+" x "+count+"";
}
private static TreeSet db = new TreeSet();
public static ListModel getListModel(){
DefaultListModel model = new DefaultListModel();
Iterator ito = db.iterator();
while(ito.hasNext()){
Order order = (Order)ito.next();
if (System.currentTimeMillis()-order.date.getTime() < 7*24*3600*1000)
model.add(order);
}
return model;
}
//find orders after last week
public static ListModel getListModel(User user){
DefaultListModel model = new DefaultListModel();
Iterator ito = db.iterator();
while(ito.hasNext()){
Order order = (Order)ito.next();
if (System.currentTimeMillis()-order.date.getTime() < 7*24*3600*1000 &&
order.userName.equals(user.name))
model.add(order);
}
return model;
}
public static double sumOrderAmount(User user){
double sum = 0;
Iterator ito = db.iterator();
while(ito.hasNext()){
Order order = (Order)ito.next();
if (order.userName.equals(user.name) && order.status == Order.STATUS_OPEN)
sum += order.price * order.count;
}
return sum;
}
public void insert(){
db.add(this);
}
public void update(){
}
public void remove(){
db.remove(this);
}
public int compareTo(Object o) {
if (this == o)
return 0;
if (!(o instanceof Order))
return -1;
Order obj = (Order)o;
if (!date.equals(obj.date))
return date.compareTo(obj.date);
else
if (userName.equals(obj.userName))
return -1;
else
return userName.compareTo(obj.userName);
}
/**
* 返回指定日期的所有订单
* @param date
* @return List of Order
*/
public static List findByDate(Date date){
List list = new ArrayList();
findByDate(date,list);
return list;
}
public static void findByDate(Date date, List result){
result.clear();
Iterator ito = db.iterator();
while(ito.hasNext()){
Order order = (Order)ito.next();
if (order.date.getTime()/24/3600/1000 == date.getTime()/24/3600/1000)
result.add(order);
}
}
public static boolean isOpen(Date date){
if (date.getTime() < System.currentTimeMillis()-24*3600*1000)
return false;
//if has closed order
Iterator ito = db.iterator();
while(ito.hasNext()){
Order order = (Order)ito.next();
if (order.date.equals(date) && order.status!=Order.STATUS_OPEN)
return false;
}
return true;
}
/**
* 汇总指定日期的订单
* @param date
* @return Map: dishName -> Order
*/
public static void sumByDate(Date date, Map sums){
sums.clear();
List orders = findByDate(date);
for (int i = 0; i < orders.size(); i++) {
Order order = (Order)orders.get(i);
Order sum = (Order)sums.get(order.dishName);
if (sum==null){
sum = new Order();
sum.dishName = order.dishName;
sum.count = order.count;
sum.price = order.price;
}else{
sum.count += order.count;
sum.price += order.price * order.count;
}
sums.put(sum.dishName,sum);
}
}
/**
* 指定日期下单.
* @param date
*/
public static void makeOrder(Date date){
if (!isOpen(date))
return;
List orders = findByDate(date);
for (int i = 0; i < orders.size(); i++) {
Order order = (Order)orders.get(i);
User user = User.getByName(order.userName);
if (user == null)
order.status = STATUS_FAILED;
else{
if (user.ballence < order.price*order.count)
order.status = STATUS_FAILED;
else{
user.ballence -= order.price * order.count;
order.status = STATUS_CLOSED;
user.update();
}
}
order.update();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Echo的午餐订饭程序
共134个文件
java:46个
class:45个
repository:9个
需积分: 50 61 下载量 172 浏览量
2003-07-15
00:00:00
上传
评论
收藏 2.08MB ZIP 举报
温馨提示
一个基于Echo的午餐订饭程序 如果您重新编译, 请采用WEB-INF/lib/echo.jar echoserver.jar, 或者直接从echo cvs取得最新版本. 支持ListBox设定宽度.
资源推荐
资源详情
资源评论
收起资源包目录
基于Echo的午餐订饭程序 (134个子文件)
Order.class 5KB
ReflectionResolver.class 5KB
DataBind.class 4KB
SelectManager.class 4KB
MainUI.class 4KB
UsersUI.class 4KB
User.class 4KB
LoginUI.class 3KB
EchoResolver.class 3KB
MyLunchUI.class 3KB
CommonGrid.class 3KB
OrderUI.class 3KB
DishUI.class 3KB
RegisterUI.class 3KB
Dish.class 3KB
OrderView.class 3KB
ComboBox.class 2KB
MainView.class 2KB
LoginView.class 2KB
MyLunchView.class 2KB
DutyUI.class 2KB
MasterView.class 2KB
ListBindSource.class 2KB
FieldResolver.class 2KB
LinkUI.class 2KB
CollectionBindSource.class 2KB
BindSource.class 2KB
UsersView.class 2KB
TableBind.class 2KB
EnumarationBindSource.class 2KB
BindGroup.class 1KB
OrderView$Render.class 1KB
MainServlet.class 1KB
DataControl.class 1KB
DutyView.class 1KB
Link.class 1KB
RegisterView.class 955B
MapBindSource.class 948B
DishView.class 915B
VersionSelectModel.class 539B
BindData.class 510B
MainInstance.class 467B
FieldResolver$IResolver.class 266B
IModelProvider.class 203B
IBinder.class 174B
.cvsignore 6B
Entries 474B
Entries 405B
Entries 264B
Entries 172B
Entries 145B
Entries 63B
Entries 55B
Entries 30B
Entries 11B
index.html 1KB
Echo.jar 617KB
echopoint.jar 520KB
jfreechart-0.9.4.jar 355KB
EchoServer.jar 207KB
jfreechart-0.9.4-demo.jar 164KB
jcommon-0.7.1.jar 95KB
bind4j.jar 22KB
Order.java 5KB
SelectManager.java 5KB
ReflectionResolver.java 4KB
EchoResolver.java 4KB
DataBind.java 4KB
MainUI.java 3KB
TestDataBind.java 3KB
CommonGrid.java 3KB
UsersUI.java 3KB
MyLunchUI.java 3KB
User.java 3KB
DishUI.java 2KB
OrderUI.java 2KB
OrderView.java 2KB
LoginUI.java 2KB
RegisterUI.java 2KB
MainView.java 2KB
ComboBox.java 2KB
Dish.java 2KB
MyLunchView.java 2KB
FieldResolver.java 2KB
CollectionBindSource.java 2KB
BindSource.java 2KB
ListBindSource.java 1KB
TableBind.java 1KB
DutyUI.java 1KB
EnumarationBindSource.java 1KB
LoginView.java 1KB
MasterView.java 1KB
UsersView.java 1KB
DataControl.java 1KB
DataBindFixture.java 959B
LinkUI.java 955B
MainServlet.java 929B
BindGroup.java 834B
DutyView.java 762B
TestClass.java 758B
共 134 条
- 1
- 2
资源评论
普通网友
- 粉丝: 882
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功