package nebula.data.db.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import nebula.data.Order;
import nebula.data.OrderDetail;
public class OrderDAO implements DAO<Order> {
Connection conn;
public List<Order> query() throws SQLException {
PreparedStatement psmt;
ResultSet res;
List<Order> os = new ArrayList<Order>();
psmt = conn.prepareStatement("select * from NOrder order by id");
res = psmt.executeQuery();
while (res.next()) {
Order order = new Order();
order.setId(res.getInt(1));
os.add(order);
}
psmt = conn.prepareStatement("select * from NOrder_Detail order by order_id,seq");
res = psmt.executeQuery();
if (res.next()) {
int id = res.getInt(1);
outerfor: for (Order o : os) {
while (id == o.getId()) {
OrderDetail od = new OrderDetail();
od.setSeq(res.getInt(2));
od.setPrice(res.getInt(3));
od.setCount(res.getInt(4));
od.setAmount(res.getInt(5));
o.getDetails().add(od);
if (!res.next()) break outerfor;
id = res.getInt(1);
}
}
}
return os;
}
public Order get(int id) throws SQLException {
PreparedStatement psmt;
ResultSet res;
Order o = new Order();
psmt = conn.prepareStatement("select * from NOrder where id=? order by id");
psmt.setInt(1, id);
res = psmt.executeQuery();
if (res.next()) {
System.out.println("header start");
o.setId(res.getInt(1));
System.out.println("header end");
}
psmt = conn.prepareStatement("select * from NOrder_Detail where order_id=? order by order_id,seq");
psmt.setInt(1, id);
res = psmt.executeQuery();
if (res.next()) {
while (res.next()) {
OrderDetail od = new OrderDetail();
System.out.println("detail start");
od.setSeq(res.getInt(2));
od.setPrice(res.getInt(3));
od.setCount(res.getInt(4));
od.setAmount(res.getInt(5));
System.out.println("detail end");
o.getDetails().add(od);
}
}
return o;
}
@Override
public void setConn(Connection conn) {
this.conn = conn;
}
}