package business;
import data.DBDriver;
import data.SchemaBuilder;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class BookOrder extends DBObject implements Serializable {
private int orderId;
private int buyerId;
private int listId;
private Date orderDate;
private String paymentMethod;
private User user;
private BookListing bookListing;
public BookOrder() {
this.user = new User();
this.bookListing = new BookListing();
}
/**
* Initialize the object. This must be called prior to any database-related methods.
* @param driver The database driver instance.
*/
@Override
public void init( DBDriver driver ) {
super.init( driver );
String className = this.getClass().getName();
Field[] fields = this.getClass().getDeclaredFields();
SchemaBuilder builder = new SchemaBuilder( driver );
schema = builder.getSchema( className, fields );
}
/**
* Populates the object with the ResultSet cursor content.
* @param row The ResultSet cursor to populate the object with.
* @return True on success, false otherwise.
* @throws SQLException
*/
@Override
public boolean populate( ResultSet row ) throws SQLException {
return super.populate( row );
}
/**
* Saves the object to the database.
* @return True if the object has been saved successfully, false otherwise.
*/
@Override
public boolean save() {
return super.save();
}
/**
* Removes the database record matching this object's primary key content fields.
* @return True if the record has been removed successfully, false otherwise.
*/
public boolean remove() {
return driver.delete( schema.getTableName(), formatPKWhere( schema.getPrimaryKeys() ) ) > 0;
}
/**
* Inserts a record into the database containing the content of this object.
* @return True if the record has been inserted successfully, false otherwise.
*/
protected boolean insert() {
int affectedRows;
if( ( affectedRows = driver.insert( schema.getTableName(), getDatabaseFields() ) ) > 0 ) {
newObject = false;
}
return affectedRows > 0;
}
/**
* Updates the database record matching this object's primary key content fields.
* @return True if the record has been updated successfully, false otherwise.
*/
protected boolean update() {
int affectedRows;
if( ( affectedRows = driver.update( schema.getTableName(), getDatabaseFields(), formatPKWhere( schema.getPrimaryKeys() ) ) ) > 0 ) {
dirty = false;
}
return affectedRows > 0;
}
/**
* @return the orderId
*/
public int getOrderId() {
return orderId;
}
/**
* @param orderId the orderId to set
*/
public void setOrderId(int orderId) {
this.orderId = orderId;
}
/**
* @return the buyerId
*/
public int getBuyerId() {
return buyerId;
}
/**
* @param buyerId the buyerId to set
*/
public void setBuyerId(int buyerId) {
this.buyerId = buyerId;
}
/**
* @return the orderDate
*/
public Date getOrderDate() {
return orderDate;
}
/**
* @param orderDate the orderDate to set
*/
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
/**
* @return the paymentMethod
*/
public String getPaymentMethod() {
return paymentMethod;
}
/**
* @param paymentMethod the paymentMethod to set
*/
public void setPaymentMethod(String paymentMethod) {
this.paymentMethod = paymentMethod;
}
/**
* @return the user
*/
public User getUser() {
return user;
}
/**
* @param user the user to set
*/
public void setUser(User user) {
this.user = user;
}
/**
* @return the bookListing
*/
public BookListing getBookListing() {
return bookListing;
}
/**
* @param bookListing the bookListing to set
*/
public void setBookListing(BookListing bookListing) {
this.bookListing = bookListing;
}
/**
* @return the listId
*/
public int getListId() {
return listId;
}
/**
* @param listId the listId to set
*/
public void setListId(int listId) {
this.listId = listId;
}
}