package is.idega.idegaweb.travel.data;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.Collection;
import java.util.GregorianCalendar;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.ejb.RemoveException;
import com.idega.data.IDOLookup;
import com.idega.data.IDOQuery;
import com.idega.data.SimpleQuerier;
import com.idega.util.IWTimestamp;
/**
* Title: idegaWeb TravelBooking
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="mailto:gimmi@idega.is">Grimur Jonsson</a>
* @version 1.0
*/
public class ServiceDayBMPBean extends com.idega.data.GenericEntity implements is.idega.idegaweb.travel.data.ServiceDay {
public static final int SUNDAY = GregorianCalendar.SUNDAY;
public static final int MONDAY = GregorianCalendar.MONDAY;
public static final int TUESDAY = GregorianCalendar.TUESDAY;
public static final int WEDNESDAY = GregorianCalendar.WEDNESDAY;
public static final int THURSDAY = GregorianCalendar.THURSDAY;
public static final int FRIDAY = GregorianCalendar.FRIDAY;
public static final int SATURDAY = GregorianCalendar.SATURDAY;
public ServiceDayBMPBean() {
}
public void initializeAttributes() {
addAttribute(getIDColumnName(),"Service_id",true,true,Integer.class,"one-to-one",Service.class);
addAttribute(getColumnNameDayOfWeek(), "Day of week", true, true, Integer.class);
addAttribute(getColumnNameMax(), "max", true, true, Integer.class);
addAttribute(getColumnNameMin(), "min", true, true, Integer.class);
addAttribute(getColumnNameEstimated(), "estimated", true, true, Integer.class);
this.setAsPrimaryKey(getIDColumnName(), true);
this.setAsPrimaryKey(getColumnNameDayOfWeek(), true);
addIndex("IDX_SER_DAY", new String[]{getIDColumnName(), getColumnNameDayOfWeek()});
}
public String getEntityName() {
return getServiceDaysTableName();
}
public Object ejbFindByPrimaryKey(ServiceDayPK primaryKey) throws FinderException {
return super.ejbFindByPrimaryKey(primaryKey);
}
public Object ejbCreate(ServiceDayPK primaryKey) throws CreateException {
setPrimaryKey(primaryKey);
return super.ejbCreate();
}
/* (non-Javadoc)
* @see com.idega.data.IDOEntityBean#getPrimaryKeyClass()
*/
public Class getPrimaryKeyClass() {
return ServiceDayPK.class;
}
protected boolean doInsertInCreate() {
return true;
}
public String getIDColumnName() {
return getColumnNameServiceId();
}
public void setServiceId(int serviceId) {
setColumn(getIDColumnName(), serviceId);
}
public void setDayOfWeek(int dayOfWeek) {
setColumn(getColumnNameDayOfWeek(), dayOfWeek);
}
public void setDayOfWeek(int serviceId, int dayOfWeek) {
setServiceId(serviceId);
setDayOfWeek(dayOfWeek);
}
public void setDayOfWeek(int serviceId, int dayOfWeek, int max, int min, int estimated) {
setServiceId(serviceId);
setDayOfWeek(dayOfWeek);
setMax(max);
setMin(min);
setEstimated(estimated);
}
public int getDayOfWeek() {
return getIntColumnValue(getColumnNameDayOfWeek());
}
public int getServiceId() {
return getIntColumnValue(getIDColumnName());
}
public int getMax() {
return getIntColumnValue(getColumnNameMax());
}
public void setMax(int max) {
setColumn(getColumnNameMax(), max);
}
public int getMin() {
return getIntColumnValue(getColumnNameMin());
}
public void setMin(int min) {
setColumn(getColumnNameMin(), min);
}
public int getEstimated() {
return getIntColumnValue(getColumnNameEstimated());
}
public void setEstimated(int estimated) {
setColumn(getColumnNameEstimated(), estimated);
}
public Collection getServiceDays(int serviceId) throws FinderException{
return super.idoFindAllIDsByColumnOrderedBySQL(getColumnNameServiceId(),serviceId,getColumnNameDayOfWeek());
}
public ServiceDay[] getServiceDaysOfWeek(int serviceId) throws SQLException {
ServiceDay[] serviceDays = new ServiceDay[]{};
try {
ServiceDayHome serviceDayHome = (ServiceDayHome)IDOLookup.getHome(ServiceDay.class);
int[] days = ejbHomeGetDaysOfWeek(serviceId);
serviceDays = new ServiceDay[days.length];
for (int i = 0; i < days.length; i++) {
serviceDays[i] = serviceDayHome.findByServiceAndDay(serviceId, days[i]);
}
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
return serviceDays;
//ServiceDay[] days = (ServiceDay[]) (is.idega.idegaweb.travel.data.ServiceDayBMPBean.getStaticInstance(ServiceDay.class)).findAllByColumnOrdered(getColumnNameServiceId(),Integer.toString(serviceId),getColumnNameDayOfWeek());
//return days;
}
public static int[] getDaysOfWeek(int serviceId) throws RemoteException, RemoveException, FinderException{
ServiceDayHome sdHome = (ServiceDayHome) IDOLookup.getHome(ServiceDay.class);
return sdHome.getDaysOfWeek(serviceId);
}
public int[] ejbHomeGetDaysOfWeek(int serviceId) throws RemoteException, RemoveException, FinderException{
int[] returner = {};
try {
IDOQuery query = this.idoQuery();
query.appendSelect().append(getColumnNameDayOfWeek()).appendFrom().append(getEntityName())
.appendWhereEquals(getColumnNameServiceId(), new Integer(serviceId));
String[] days = SimpleQuerier.executeStringQuery(query.toString());
if (days != null && days.length > 0) {
returner = new int[days.length];
for (int i = 0; i < days.length; i++) {
returner[i] = Integer.parseInt(days[i]);
}
}
}catch (Exception sql) {
sql.printStackTrace(System.err);
}
return returner;
}
/**
* returns null if nothing...
*/
public Object ejbFindServiceDay(int serviceId, IWTimestamp stamp) throws FinderException, RemoteException{
return this.ejbFindByServiceAndDay(serviceId, stamp.getDayOfWeek());
}
public boolean ejbHomeGetIfDay(int serviceId, int dayOfWeek) {
boolean returner = false;
try {
//ServiceDay[] days = (ServiceDay[]) (is.idega.idegaweb.travel.data.ServiceDayBMPBean.getStaticInstanceIDO(ServiceDay.class)).
Collection coll = this.idoFindAllIDsByColumnsBySQL(getColumnNameServiceId(),Integer.toString(serviceId),getColumnNameDayOfWeek(),Integer.toString(dayOfWeek));
if (coll != null && !coll.isEmpty()) {
if (coll.size() == 1) {
returner = true;
} else {
System.err.println("ServiceDay : getIfDay : Primary Key Error");
}
}
}catch (FinderException sql) {
sql.printStackTrace(System.err);
}
return returner;
}
public Object ejbFindByServiceAndDay(int serviceId, int day) throws FinderException {
IDOQuery query = this.idoQuery();
query.appendSelectAllFrom(this).appendWhereEquals(getColumnNameDayOfWeek(), day)
.appendAndEquals(getColumnNameServiceId(), serviceId);
return this.idoFindOnePKByQuery(query);
}
public boolean ejbHomeDeleteService(int serviceId) throws RemoteException , RemoveException, FinderException{
try {
int[] days = this.ejbHomeGetDaysOfWeek(serviceId);
if (days != null && days.length > 0) {
ServiceDayHome serviceDayHome = (ServiceDayHome)IDOLookup.getHome(ServiceDay.class);
ServiceDay sd;
for (int i = 0; i < days.length; i++) {
sd = (ServiceDay) serviceDayHome.findByServiceAndDay(serviceId, days[i]);
sd.remove();
sd.store();
}
}
return true;
}catch (FinderException sql) {
System.out.println(sql.getMessage());
//throw new RemoveException(sql.getMessage());
}
return false;
}
public boolean ejbHomeSetServiceWithNoDays(int serviceId) throws RemoteException , RemoveException, FinderException{
return ejbHomeDeleteService(serviceId);
}
public static String getServiceDaysTableName() {return "TB_SERVICE_DAY";}
public static String getColumnNameServiceId() {return "SERVICE_ID";}
public static String getColumnNameDayOfWeek() {return "DAY_OF_WEEK";}
public static String getColumnNameMax() {return "SD_MAX";}
public static String getColumnNameMin() {return "SD_MIN";}
public static String getColumnNameEstimated() {return "SD_ESTIMATED";}
}