Model
package binh.dev.data.model;
import binh.dev.data.dao.DatabaseDao;
import java.sql.Timestamp;
public class Order {
private int id;
private String code;
private String status;
private int userId;
private Timestamp createdAt;
public static final String PENDING = "pending";
public static final String FINISHED = "finish";
public Order(String code, String status, int userId) {
super();
this.code = code;
this.status = status;
this.userId = userId;
}
public Order(int id, String code, String status, int userId, Timestamp createdAt) {
super();
this.id = id;
this.code = code;
this.status = status;
this.userId = userId;
this.createdAt = createdAt;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public Timestamp getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Timestamp createdAt) {
this.createdAt = createdAt;
}
public User getUser(){
return DatabaseDao.getInstance().getUserDao().find(this.userId);
}
}
DAO Interface
package binh.dev.data.dao;
import java.util.List;
import binh.dev.data.model.Order;
public interface OrderDao {
public boolean insert(Order order);
public boolean update(Order order);
public boolean delete(int id);
public Order find(int id);
public List<Order> findAll();
public List<Order> findByUser(int userId);
public Order findByCode(String code);
public List<Order> findByStatus(String status);
public int countOrderByDay(String date);
public double earningOrderByDay(String date);
}
DAO Implement
package binh.dev.data.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import binh.dev.data.dao.OrderDao;
import binh.dev.data.driver.MySQLDriver;
import binh.dev.data.model.Order;
import java.util.logging.Logger;
import java.util.logging.Level;
public class OrderImpl implements OrderDao {
Connection con = MySQLDriver.getInstance().getConnection();
@Override
public boolean insert(Order order) {
String sql = "INSERT INTO ORDERS(ID, CODE, STATUS, USER_ID) VALUES(NULL, ?, ?, ?)";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, order.getCode());
stmt.setString(2, order.getStatus());
stmt.setInt(3, order.getUserId());
stmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
@Override
public boolean update(Order order) {
String sql = "UPDATE ORDERS SET code = ?, status = ?, user_id = ?, created_at = ? WHERE id = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, order.getCode());
stmt.setString(2, order.getStatus());
stmt.setInt(3, order.getUserId());
stmt.setTimestamp(4, order.getCreatedAt());
stmt.setInt(5, order.getId());
return stmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
@Override
public boolean delete(int id) {
// TODO Auto-generated method stub
String sql = "DELETE FROM ORDERS WHERE ID = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, id);
return stmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
@Override
public Order find(int id) {
String sql = "SELECT * FROM ORDERS WHERE ID = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, id);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
String code = rs.getString("code");
String status = rs.getString("status");
int userId = rs.getInt("user_id");
Timestamp created_at = rs.getTimestamp("created_at");
return new Order(id, code, status, userId, created_at);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public List<Order> findAll() {
// TODO Auto-generated method stub
List<Order> orders = new ArrayList<>();
String sql = "SELECT * FROM ORDERS";
try {
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String code = rs.getString("code");
String status = rs.getString("status");
int userId = rs.getInt("user_id");
Timestamp created_at = rs.getTimestamp("created_at");
orders.add(new Order(id, code, status, userId, created_at));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return orders;
}
@Override
public List<Order> findByUser(int userId) {
List<Order> orderList = new ArrayList<>();
String sql = "SELECT * FROM ORDERS WHERE user_id = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, userId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String code = rs.getString("code");
String status = rs.getString("status");
Timestamp createdAt = rs.getTimestamp("created_at");
orderList.add(new Order(id, code, status, userId, createdAt));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return orderList;
}
@Override
public List<Order> findByStatus(String status) {
List<Order> orderList = new ArrayList<>();
try {
String sql = "SELECT * FROM ORDERS WHERE STATUS = ?";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, status);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String code = rs.getString("code");
int userId = rs.getInt("user_id");
Timestamp createdAt = rs.getTimestamp("created_at");
orderList.add(new Order(id, code, status, userId, createdAt));
}
} catch (SQLException ex) {
}
return orderList;
}
@Override
public Order findByCode(String code) {
String sql = "SELECT * FROM ORDERS WHERE CODE= ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, code);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String status = rs.getString("status");
int userId = rs.getInt("user_id");
Timestamp createdAt = rs.getTimestamp("created_at");
return new Order(id, code, status, userId, createdAt);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public int countOrderByDay(String date) {
int count = 0;
String sql = "SELECT COUNT(*) AS count FROM orders where date(created_at)=?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, date);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
count = rs.getInt("count");
}
} catch (SQLException ex) {
Logger.getLogger(UserImpl.class.getName()).log(Level.SEVERE, null, ex);
}
return count;
}
@Override
public double earningOrderByDay(String date) {
double total = 0;
String sql = "SELECT * FROM orders where date(created_at)=?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, date);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String code = rs.getString("code");
String status = rs.getString("status");
int userId = rs.getInt("user_id");
Timestamp createdAt = rs.getTimestamp("created_at");
Order order = new Order(id, code, status, userId, createdAt);
// total += order.getTotal();
}
} catch (SQLException ex) {
Logger.getLogger(UserImpl.class.getName()).log(Level.SEVERE, null, ex);
}
return total;
}
}