package is.idega.idegaweb.travel.data; import java.rmi.RemoteException; import java.sql.SQLException; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.trade.stockroom.data.Product; import com.idega.block.trade.stockroom.data.Supplier; import com.idega.core.location.data.Address; import com.idega.data.IDOAddRelationshipException; import com.idega.data.IDORemoveRelationshipException; /** * Title: IW Travel * Description: * Copyright: Copyright (c) 2001 * Company: idega.is * @author 2000 - idega team - <br><a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a><br><a href="mailto:gimmi@idega.is">Gr�mur J�nsson</a> * @version 1.0 */ public class PickupPlaceBMPBean extends com.idega.data.GenericEntity implements PickupPlace{ public static final int TYPE_PICKUP = 1; public static final int TYPE_DROPOFF = 2; public PickupPlaceBMPBean(){ super(); } public PickupPlaceBMPBean(int id)throws SQLException{ super(id); } public void initializeAttributes(){ addAttribute(getIDColumnName()); addAttribute(getNameColumnName(), "Name", true, true, String.class); addAttribute(getAddressIDColumnName(), "Heimilisfang", true, true, Integer.class ,"many_to_one",Address.class); addAttribute(getDeletedColumnName(), "Hent", true, true, Boolean.class); addAttribute(getTypeColumnName(), "Type", true, true, Integer.class); this.addManyToManyRelationShip(Supplier.class,"TB_HOTEL_PICKUP_PL_SR_SUPPLIER"); addIndex("IDX_PLACE_TYPE", new String[]{getIDColumnName(), getTypeColumnName()}); } public void insertStartData()throws Exception{ } public static String getHotelPickupPlaceTableName(){return "TB_HOTEL_PICKUP_PLACE";} public static String getNameColumnName() {return "NAME";} public static String getAddressIDColumnName() {return "IC_ADDRESS_ID";} public static String getDeletedColumnName() {return "DELETED";} public static String getTypeColumnName() { return "PLACE_TYPE";} public void setDefaultValues() { setColumn(getDeletedColumnName(),false); } public String getEntityName(){ return getHotelPickupPlaceTableName(); } public String getName(){ return getStringColumnValue(getNameColumnName()); } public void delete() { try { setColumn(getDeletedColumnName(),true); this.update(); }catch (SQLException sql) { sql.printStackTrace(System.err); } } public void setName(String name){ setColumn(getNameColumnName(),name); } public Address getAddress() { return (Address) getColumnValue(getAddressIDColumnName()); } public void setAddress(Address address) { setColumn(getAddressIDColumnName(), address.getID()); } public void setAddressId(int addressId) { setColumn(getAddressIDColumnName(), addressId); } public Collection ejbFindDropoffPlaces(Service service)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(service, TYPE_DROPOFF); } public Collection ejbFindHotelPickupPlaces(Service service)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(service, TYPE_PICKUP); } public Collection ejbFindDropoffPlaces(Product product)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(product, TYPE_DROPOFF); } public Collection ejbFindHotelPickupPlaces(Product product)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(product, TYPE_PICKUP); } public Collection ejbFindHotelPickupPlaces(Service service, int PLACE_TYPE)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(service.getPrimaryKey().toString(), PLACE_TYPE); } public Collection ejbFindHotelPickupPlaces(Product product, int PLACE_TYPE)throws RemoteException, FinderException { return ejbFindHotelPickupPlaces(product.getPrimaryKey().toString(), PLACE_TYPE); } public Collection ejbFindHotelPickupPlaces(String serviceID, int PLACE_TYPE)throws RemoteException, FinderException { Collection returner = null; // HotelPickupPlace hp = (HotelPickupPlace) is.idega.idegaweb.travel.data.HotelPickupPlaceBMPBean.getStaticInstance(HotelPickupPlace.class); StringBuffer buffer = new StringBuffer(); buffer.append("select h.* from "); buffer.append(is.idega.idegaweb.travel.data.ServiceBMPBean.getServiceTableName()+" s,"); buffer.append(com.idega.data.EntityControl.getManyToManyRelationShipTableName(Service.class,PickupPlace.class)+" smh, "); buffer.append(getEntityName() +" h "); buffer.append(" WHERE "); buffer.append("s."+is.idega.idegaweb.travel.data.ServiceBMPBean.getServiceIDColumnName()+" = "+serviceID); buffer.append(" AND "); buffer.append("s."+is.idega.idegaweb.travel.data.ServiceBMPBean.getServiceIDColumnName()+" = smh."+is.idega.idegaweb.travel.data.ServiceBMPBean.getServiceIDColumnName()); buffer.append(" AND "); buffer.append(" smh."+getIDColumnName()+" = h."+getIDColumnName()); if (PLACE_TYPE == TYPE_DROPOFF) { buffer.append(" AND "); buffer.append(" h."+getTypeColumnName()+" = "+PLACE_TYPE); }else if (PLACE_TYPE == TYPE_PICKUP) { buffer.append(" AND "); buffer.append(" h."+getTypeColumnName()+" not in ("+TYPE_DROPOFF+")"); } buffer.append(" AND "); buffer.append(getDeletedColumnName() +" = 'N'"); buffer.append(" ORDER BY "+getNameColumnName()); //System.out.println("[PickupPlaceBMPBean] sql = "+buffer.toString()); returner = this.idoFindPKsBySQL(buffer.toString()); // returner = (HotelPickupPlace[]) hp.findAll(buffer.toString()); return returner; } public Collection ejbFindDropoffPlaces(Supplier supplier) throws FinderException{ return ejbFindHotelPickupPlaces(supplier, TYPE_DROPOFF); } public Collection ejbFindHotelPickupPlaces(Supplier supplier) throws FinderException{ return ejbFindHotelPickupPlaces(supplier, TYPE_PICKUP); } public Collection ejbFindAllPlaces(int PLACE_TYPE) throws FinderException { return ejbFindHotelPickupPlacesBySupplier(null, PLACE_TYPE); } public Collection ejbFindHotelPickupPlaces(Supplier supplier, int PLACE_TYPE) throws FinderException{ return ejbFindHotelPickupPlacesBySupplier(supplier, PLACE_TYPE); } private Collection ejbFindHotelPickupPlacesBySupplier(Supplier supplier, int PLACE_TYPE) throws FinderException{ Collection returner = null; boolean useSupplier = (supplier != null); StringBuffer buffer = new StringBuffer(); buffer.append("select h.* from "); if (useSupplier) { buffer.append(com.idega.block.trade.stockroom.data.SupplierBMPBean.getSupplierTableName()+" s,"); buffer.append(com.idega.data.EntityControl.getManyToManyRelationShipTableName(Supplier.class,PickupPlace.class)+" smh, "); } buffer.append(getEntityName() +" h "); buffer.append(" WHERE "); if (useSupplier) { buffer.append("s."+supplier.getIDColumnName()+" = "+supplier.getID()); buffer.append(" AND "); buffer.append("s."+supplier.getIDColumnName()+" = smh."+supplier.getIDColumnName()); buffer.append(" AND "); buffer.append(" smh."+getIDColumnName()+" = h."+getIDColumnName()); buffer.append(" AND "); } if (PLACE_TYPE == TYPE_DROPOFF) { buffer.append(" h."+getTypeColumnName()+" = "+PLACE_TYPE); }else if (PLACE_TYPE == TYPE_PICKUP) { buffer.append(" h."+getTypeColumnName()+" not in ("+TYPE_DROPOFF+")"); } buffer.append(" AND "); buffer.append("h."+is.idega.idegaweb.travel.data.PickupPlaceBMPBean.getDeletedColumnName() +" = 'N'"); buffer.append(" ORDER BY h."+is.idega.idegaweb.travel.data.PickupPlaceBMPBean.getNameColumnName()); //System.out.println("[PickupPlaceBMPBean] sql = "+buffer.toString()); returner = this.idoFindPKsBySQL(buffer.toString()); // returner = (HotelPickupPlace[]) hp.findAll(buffer.toString()); return returner; } public void addToSupplier(Supplier supplier) throws IDOAddRelationshipException { this.idoAddTo(supplier); } public void removeFromSupplier(Supplier supplier) throws IDORemoveRelationshipException{ //System.err.println("Trying to remove ID "+this.getID()+" from "+supplier.getName()); //System.err.println("Trying to remove PK "+this.getPrimaryKey()+" from "+supplier.getName()); super.idoRemoveFrom(supplier); } public void addToService(Service service) throws IDOAddRelationshipException { this.idoAddTo(service); } public void removeFromService(Service service) throws IDORemoveRelationshipException{ this.idoRemoveFrom(service); } public void setAsPickup() { setColumn(getTypeColumnName(), TYPE_PICKUP); } public void setAsDropoff() { setColumn(getTypeColumnName(), TYPE_DROPOFF); } public boolean getIsPickup() { return TYPE_PICKUP == getType(); } public boolean getIsDropoff() { return TYPE_DROPOFF == getType(); } public int getType() { return getIntColumnValue(getTypeColumnName()); } public void setType(int type) { setColumn(getTypeColumnName(), type); } }