package is.idega.idegaweb.travel.data; import java.rmi.RemoteException; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; import java.util.List; import java.util.Vector; import javax.ejb.FinderException; import com.idega.block.trade.stockroom.data.Reseller; import com.idega.block.trade.stockroom.data.TravelAddress; import com.idega.data.EntityControl; import com.idega.data.IDOAddRelationshipException; import com.idega.data.IDOQuery; import com.idega.data.IDORelationshipException; import com.idega.data.SimpleQuerier; import com.idega.util.IWTimestamp; import com.idega.util.ListUtil; /** * 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 InqueryBMPBean extends com.idega.data.GenericEntity implements is.idega.idegaweb.travel.data.Inquery { public InqueryBMPBean(){ super(); } public InqueryBMPBean(int id)throws SQLException{ super(id); } public void initializeAttributes(){ addAttribute(getIDColumnName()); addAttribute(getNameColumnName(), "Name", true, true, String.class, 255); addAttribute(getEmailColumnName(), "T�lvup�stur", true, true, String.class, 255); addAttribute(getInqueryColumnName(), "Fyrirspurn",true ,true, String.class, 510); addAttribute(getInqueryDateColumnName(), "Dagur sem spurt er um", true ,true, java.sql.Timestamp.class); addAttribute(getInqueryPostDateColumnName(), "Dagur �egar spurt var", true ,true, java.sql.Timestamp.class); addAttribute(getAnsweredColumnName(), "Svara�", true,true, Boolean.class); addAttribute(getAnswerDateColumnName(), "Hven�r var svara�", true, true, java.sql.Timestamp.class); addAttribute(getServiceIDColumnName(), "Vara", true, true, Integer.class, "many-to-one", Service.class); addAttribute(getNumberOfSeatsColumnName(), "s�ti", true, true, Integer.class); addAttribute(getBookingIdColumnName(), "b�kun", true, true, Integer.class); addAttribute(getInqueryTypeColumnName(), "type", true, true, String.class); addAttribute(getAuthorizationStringColumnName(), "authorization string",true,true,String.class); this.addManyToManyRelationShip(Reseller.class); addIndex(getBookingIdColumnName()); addIndex(getServiceIDColumnName()); } public String getEntityName(){ return getInqueryTableName(); } public String getName(){ return getStringColumnValue(getNameColumnName()); } public void setName(String name){ setColumn(getNameColumnName(),name); } public Service getService() { return (Service) getColumnValue(getServiceIDColumnName()); } public int getServiceID() { return getIntColumnValue(getServiceIDColumnName()); } public void setServiceID(int id) { setColumn(getServiceIDColumnName(), id); } public String getEmail() { return getStringColumnValue(getEmailColumnName()); } public void setEmail(String email) { setColumn(getEmailColumnName(), email); } public String getInquery() { return getStringColumnValue(getInqueryColumnName()); } public void setInquery(String inquery) { setColumn(getInqueryColumnName(), inquery); } public Timestamp getInqueryDate() { return (Timestamp) getColumnValue(getInqueryDateColumnName()); } public void setInqueryDate(Timestamp timestamp) { setColumn(getInqueryDateColumnName(), timestamp); } public Timestamp getInqueryPostDate() { return (Timestamp) getColumnValue(getInqueryPostDateColumnName()); } public void setInqueryPostDate(Timestamp timestamp) { setColumn(getInqueryPostDateColumnName(), timestamp); } public boolean getIfAnswered() { return getAnswered(); } public boolean getAnswered() { return getBooleanColumnValue(getAnsweredColumnName()); } public void setIfAnswered(boolean answered) { setAnswered(answered); } public void setAnswered(boolean answered) { setColumn(getAnsweredColumnName(), answered); } public Timestamp getAnswerDate() { return (Timestamp) getColumnValue(getAnswerDateColumnName()); } public void setAnswerDate(Timestamp timestamp) { setColumn(getAnswerDateColumnName(), timestamp); } public int getNumberOfSeats() { return getIntColumnValue(getNumberOfSeatsColumnName()); } public void setNumberOfSeats(int numberOfSeats) { setColumn(getNumberOfSeatsColumnName(),numberOfSeats); } public void setBookingId(int bookingId) { setColumn(getBookingIdColumnName(), bookingId); } public int getBookingId() { return getIntColumnValue(getBookingIdColumnName()); } public GeneralBooking getBooking() throws FinderException, RemoteException { return ((is.idega.idegaweb.travel.data.GeneralBookingHome)com.idega.data.IDOLookup.getHome(GeneralBooking.class)).findByPrimaryKey(new Integer(getBookingId())); } public void setAuthorizationString(String authorizationString) { setColumn(getAuthorizationStringColumnName(),authorizationString); } public String getAuthorizationString() { return getStringColumnValue(getAuthorizationStringColumnName()); } public void setInqueryType(String queryType) { setColumn(getInqueryTypeColumnName(),queryType); } public String getInqueryType() { return getStringColumnValue(getInqueryTypeColumnName()); } public static String getInqueryTableName(){return "TB_INQUERY";} public static String getNameColumnName() {return "NAME";} public static String getEmailColumnName() {return "EMAIL";} public static String getInqueryColumnName() {return "INQUERY";} public static String getInqueryDateColumnName() {return "INQUERY_DATE";} public static String getInqueryPostDateColumnName() {return "INQUERY_POST_DATE";} public static String getAnsweredColumnName() {return "ANSWERED";} public static String getAnswerDateColumnName() {return "ANSWER_DATE";} public static String getServiceIDColumnName() {return "TB_SERVICE_ID";} public static String getNumberOfSeatsColumnName() {return "NUMBER_OF_SEATS";} public static String getBookingIdColumnName() {return "TB_BOOKING_ID";} public static String getAuthorizationStringColumnName() {return "AUTHORIZATION_STRING";} public static String getInqueryTypeColumnName() {return "INQUERY_TYPE";} public int ejbHomeGetInqueredSeats(int serviceId, IWTimestamp stamp, int resellerId, boolean unansweredOnly) throws FinderException{ int returner = 0; try { Reseller res = (Reseller)com.idega.block.trade.stockroom.data.ResellerBMPBean.getStaticInstance(Reseller.class); String middleTable = EntityControl.getManyToManyRelationShipTableName(Inquery.class, Reseller.class); StringBuffer buffer = new StringBuffer(); buffer.append("SELECT sum(i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getNumberOfSeatsColumnName()+") FROM "+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryTableName()+" i"); if (resellerId != -1) { buffer.append(", "+com.idega.block.trade.stockroom.data.ResellerBMPBean.getResellerTableName()+" r, "+middleTable+" mi"); } buffer.append(" WHERE "); if (resellerId != -1) { buffer.append("i."+getIDColumnName()+" = mi."+getIDColumnName()); buffer.append(" AND "); buffer.append("r."+res.getIDColumnName()+" = mi."+res.getIDColumnName()); buffer.append(" AND "); } if (unansweredOnly) { buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getAnsweredColumnName() +" = 'N'"); } buffer.append(" AND "); buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getServiceIDColumnName()+" = "+serviceId); buffer.append(" AND "); buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryDateColumnName() +" like '"+stamp.toSQLDateString()+"%'"); if (resellerId != -1) { buffer.append(" AND "); buffer.append("r."+res.getIDColumnName()+" = "+resellerId); } String[] bufferReturn = SimpleQuerier.executeStringQuery(buffer.toString()); if (bufferReturn != null) if (bufferReturn.length > 0) { if (bufferReturn[0] != null) returner = Integer.parseInt(bufferReturn[0]); } }catch (Exception e) { throw new FinderException(e.getMessage()); // e.printStackTrace(System.err); } return returner; } public Collection ejbFindInqueries(int serviceId, IWTimestamp stamp, int resellerId, boolean unansweredOnly, String orderBy) throws FinderException { return ejbFindInqueries(serviceId, stamp, resellerId, unansweredOnly, null, orderBy); } public Collection ejbFindInqueries(int serviceId, IWTimestamp stamp, int resellerId, boolean unansweredOnly, TravelAddress travelAddress ,String orderBy) throws FinderException { Collection inqueries = null; if (orderBy == null) orderBy = ""; Reseller res = (Reseller)com.idega.block.trade.stockroom.data.ResellerBMPBean.getStaticInstance(Reseller.class); String middleTable = EntityControl.getManyToManyRelationShipTableName(Inquery.class, Reseller.class); String middleTableBookingAddress = EntityControl.getManyToManyRelationShipTableName(TravelAddress.class, GeneralBooking.class); StringBuffer buffer = new StringBuffer(); buffer.append("SELECT i.* FROM "+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryTableName()+" i, "+GeneralBookingBMPBean.getBookingTableName()+" b"); if (travelAddress != null) { buffer.append(" ,"+middleTableBookingAddress+" ba"); } if (resellerId != -1) { buffer.append(" , "+com.idega.block.trade.stockroom.data.ResellerBMPBean.getResellerTableName()+" r, "+middleTable+" mi"); } buffer.append(" WHERE "); buffer.append(" i."+this.getBookingIdColumnName()+" = b."+GeneralBookingBMPBean.getBookingTableName()+"_ID"); buffer.append(" AND "); if (travelAddress != null) { buffer.append("ba."+GeneralBookingBMPBean.getBookingTableName()+"_ID = b."+GeneralBookingBMPBean.getBookingTableName()+"_ID"); buffer.append(" AND "); buffer.append("ba."+travelAddress.getIDColumnName()+" = "+travelAddress.getID()); buffer.append(" AND "); } if (resellerId != -1) { buffer.append("i."+getIDColumnName()+" = mi."+getIDColumnName()); buffer.append(" AND "); buffer.append("r."+res.getIDColumnName()+" = mi."+res.getIDColumnName()); buffer.append(" AND "); } if (unansweredOnly) { buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getAnsweredColumnName() +" = 'N'"); buffer.append(" AND "); } buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getServiceIDColumnName()+" = "+serviceId); buffer.append(" AND "); buffer.append("i."+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryDateColumnName() +" like '"+stamp.toSQLDateString()+"%'"); if (resellerId != -1) { buffer.append(" AND "); buffer.append("r."+res.getIDColumnName()+" = "+resellerId); } if (!orderBy.equals("")) { buffer.append(" ORDER BY i."+orderBy); } inqueries = this.idoFindPKsBySQL(buffer.toString()); return inqueries; } public List getMultibleInquiries(Inquery inquiry) throws RemoteException, FinderException{ List list = new Vector(); IDOQuery buff = idoQuery(); buff.append("SELECT * FROM "+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryTableName()); buff.append(" WHERE "); if (inquiry.getAnswerDate() != null) { buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getAnswerDateColumnName()+" = '"+inquiry.getAnswerDate()+"'"); }else { buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getAnswerDateColumnName()+" is null"); } buff.append(" AND "); if (inquiry.getAnswered()) { buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getAnsweredColumnName()+" = 'Y'"); }else { buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getAnsweredColumnName()+" = 'N'"); } buff.append(" AND "); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getEmailColumnName()+" = '"+inquiry.getEmail()+"'"); buff.append(" AND "); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryColumnName()+" = '"+inquiry.getInquery()+"'"); buff.append(" AND "); // buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryPostDateColumnName()+" = '"+inquiry.getInqueryPostDate()+"'"); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryPostDateColumnName()+" like '"+(new IWTimestamp(inquiry.getInqueryPostDate()))+"%'"); buff.append(" AND "); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getNameColumnName()+" = '"+inquiry.getName()+"'"); buff.append(" AND "); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getNumberOfSeatsColumnName()+" = "+inquiry.getNumberOfSeats()); buff.append(" AND "); buff.append(is.idega.idegaweb.travel.data.InqueryBMPBean.getServiceIDColumnName()+" = "+inquiry.getServiceID()); buff.append(" ORDER BY "+is.idega.idegaweb.travel.data.InqueryBMPBean.getInqueryDateColumnName()); // System.out.println("buff.toString(): " + buff.toString()); Collection coll = this.idoFindPKsBySQL(buff.toString()); list = ListUtil.convertCollectionToList(coll); // list = EntityFinder.findAll(inquiry, buff.toString()); return list; } public Collection getResellers() throws IDORelationshipException{ return this.idoGetRelatedEntities(Reseller.class); } public void addReseller(Reseller reseller) throws IDOAddRelationshipException{ this.idoAddTo(reseller); } }