/* * $Id: CashierQueueBMPBean.java,v 1.1 2005/07/07 02:59:05 gimmi Exp $ * Created on Jul 6, 2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package is.idega.idegaweb.travel.data; import java.sql.Timestamp; import java.util.Collection; import java.util.Iterator; import javax.ejb.FinderException; import javax.ejb.RemoveException; import com.idega.data.GenericEntity; import com.idega.data.IDOAddRelationshipException; import com.idega.data.IDORelationshipException; import com.idega.data.query.Column; import com.idega.data.query.MatchCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.user.data.Group; import com.idega.user.data.User; import com.idega.util.IWTimestamp; public class CashierQueueBMPBean extends GenericEntity implements CashierQueue{ private static final String TABLE_NAME = "TB_CASHIER_QUEUE"; private static final String COLUMN_SUPPLIER_MANAGER_ID = "SUPPLIER_MANAGER_ID"; private static final String COLUMN_CASHIER_ID = "CASHIER_ID"; private static final String COLUMN_OWNER_ID = "OWNER_ID"; private static final String COLUMN_AUTHENTICATION_NUMBER = "AUTH_NR"; private static final String COLUMN_IS_VALID = "IS_VALID"; private static final String COLUMN_CLIENT_NAME = "CLIENT_NAME"; private static final String COLUMN_CREATION_DATE = "CREATION_DATE"; private static final String COLUMN_MODIFICATION_DATE = "MODIFICATION_DATE"; public String getEntityName() { return TABLE_NAME; } public void initializeAttributes() { addAttribute(getIDColumnName()); addManyToOneRelationship(COLUMN_SUPPLIER_MANAGER_ID, Group.class); addManyToOneRelationship(COLUMN_CASHIER_ID, User.class); addManyToOneRelationship(COLUMN_OWNER_ID, User.class); addAttribute(COLUMN_CLIENT_NAME, "client_name", true, true, String.class, 70); addAttribute(COLUMN_IS_VALID, "is_valid", true, true, Boolean.class); addAttribute(COLUMN_AUTHENTICATION_NUMBER, "auth_number", true, true, String.class); addAttribute(COLUMN_CREATION_DATE, "creation_date", true, true, Timestamp.class); addAttribute(COLUMN_MODIFICATION_DATE, "modification_date", true, true, Timestamp.class); addManyToManyRelationShip(GeneralBooking.class); setNullable(COLUMN_CASHIER_ID, true); setNullable(COLUMN_OWNER_ID, false); setNullable(COLUMN_SUPPLIER_MANAGER_ID, false); addIndex(COLUMN_SUPPLIER_MANAGER_ID); } public void setDefaultValues() { setColumn(COLUMN_IS_VALID, true); setColumn(COLUMN_CREATION_DATE, IWTimestamp.getTimestampRightNow()); } public void removeAndDisableBookings() throws RemoveException { try { Collection coll = idoGetRelatedEntities(GeneralBooking.class); if (coll != null && !coll.isEmpty()) { Iterator iter = coll.iterator(); GeneralBooking b; while (iter.hasNext()) { b = (GeneralBooking) iter.next(); b.setIsValid(false); b.store(); } } } catch (IDORelationshipException e) { e.printStackTrace(); } remove(); } public void remove() throws RemoveException { setColumn(COLUMN_IS_VALID, false); store(); } public void store() { setColumn(COLUMN_MODIFICATION_DATE, IWTimestamp.getTimestampRightNow()); super.store(); } public void addBooking(GeneralBooking booking) throws IDOAddRelationshipException { this.idoAddTo(booking); } public void setSupplierManager(Group supplierManager) { setColumn(COLUMN_SUPPLIER_MANAGER_ID, supplierManager.getPrimaryKey()); } public Group getSupplierManager() { return (Group) getColumnValue(COLUMN_SUPPLIER_MANAGER_ID); } public void setCashier(User cashier) { setColumn(COLUMN_CASHIER_ID, cashier.getPrimaryKey()); } public User getCashier() { return (User) getColumnValue( COLUMN_CASHIER_ID ); } public void setOwner(User owner) { setColumn(COLUMN_OWNER_ID, owner.getPrimaryKey()); } public User getOwner() { return (User) getColumnValue( COLUMN_OWNER_ID ); } public void setAuthenticationNumber(String authNumber) { setColumn(COLUMN_AUTHENTICATION_NUMBER, authNumber); } public void setClientName(String name) { setColumn(COLUMN_CLIENT_NAME, name); } public String getClientName() { return getStringColumnValue(COLUMN_CLIENT_NAME); } public String getAuthenticationNumber() { return getStringColumnValue(COLUMN_AUTHENTICATION_NUMBER); } public Collection ejbFindAllBySupplierManager(Group supplierManager) throws FinderException { return ejbFindAll(supplierManager, null, null); } public Collection ejbFindAllByCashier(User cashier) throws FinderException { return ejbFindAll(null, cashier, null); } public Collection ejbFindAllByOwner(User owner) throws FinderException { return ejbFindAll(null, null, owner); } public Collection ejbFindAll(Group supplierManager, User cashier, User owner) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new Column(table, getIDColumnName())); query.addCriteria(new MatchCriteria(new Column(table, COLUMN_IS_VALID), MatchCriteria.EQUALS, true)); if (supplierManager != null) { query.addCriteria(new MatchCriteria(new Column(table, COLUMN_SUPPLIER_MANAGER_ID), MatchCriteria.EQUALS, supplierManager)); } if (cashier != null) { query.addCriteria(new MatchCriteria(new Column(table, COLUMN_CASHIER_ID), MatchCriteria.EQUALS, cashier)); } if (owner != null) { query.addCriteria(new MatchCriteria(new Column(table, COLUMN_OWNER_ID), MatchCriteria.EQUALS, owner)); } query.addOrder(table, getIDColumnName(), true); return this.idoFindPKsByQuery(query); } public Collection getBookingIDs() throws IDORelationshipException, FinderException { return this.idoGetRelatedEntityPKs(this.getStaticInstanceIDO(GeneralBooking.class)); } }