package is.idega.idegaweb.travel.service.hotel.data;
import java.util.Collection;
import javax.ejb.FinderException;
import javax.ejb.RemoveException;
import com.idega.block.trade.stockroom.data.Product;
import com.idega.block.trade.stockroom.data.Supplier;
import com.idega.data.GenericEntity;
import com.idega.data.IDOCompositePrimaryKeyException;
import com.idega.data.IDOQuery;
import com.idega.data.IDORelationshipException;
import com.idega.data.query.Column;
import com.idega.data.query.InCriteria;
import com.idega.data.query.JoinCriteria;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
/**
* @author gimmi
*/
public class HotelTypeBMPBean extends GenericEntity implements HotelType {
private static String HOTEL_TYPE_TABLE = "TB_ACCOMOTATION_TYPE";
private static String COLUMN_LOCALIZATION_KEY = "LOCALIZATION_KEY";
private static String COLUMN_USE_RATING = "USE_RATING";
private static String COLUMN_VALID = "IS_VALID";
public String getEntityName() {
return HOTEL_TYPE_TABLE;
}
public void initializeAttributes() {
this.addAttribute(getIDColumnName());
this.addAttribute(COLUMN_LOCALIZATION_KEY, "localized key", true, true, String.class);
this.addAttribute(COLUMN_VALID, "isValid", true, true, Boolean.class);
this.addAttribute(COLUMN_USE_RATING, "useRating", true, true, Boolean.class);
}
public void setDefaultValues() {
setColumn(COLUMN_VALID, true);
}
public String getLocalizationKey() {
return getStringColumnValue(COLUMN_LOCALIZATION_KEY);
}
public boolean getUseRating() {
return getBooleanColumnValue(COLUMN_USE_RATING);
}
public void setLocalizationKey(String locKey) {
setColumn(COLUMN_LOCALIZATION_KEY, locKey);
}
public void setUseRating(boolean useRating) {
setColumn(COLUMN_USE_RATING, useRating);
}
public Object ejbFindByLocalizationKey(String locKey) throws FinderException {
IDOQuery query = this.idoQuery();
query.appendSelectAllFrom(this).appendWhereEquals(COLUMN_VALID, true)
.appendAndEqualsQuoted(COLUMN_LOCALIZATION_KEY, locKey);
return this.idoFindOnePKByQuery(query);
}
public Collection ejbFindAll() throws FinderException {
IDOQuery query = this.idoQuery();
query.appendSelectAllFrom(this).appendWhereEquals(COLUMN_VALID, true);
return this.idoFindPKsByQuery(query);
}
public void remove() throws RemoveException {
setColumn(COLUMN_VALID, false);
store();
}
public Collection ejbFindAllUsedBySuppliers(Collection suppliers) throws IDOCompositePrimaryKeyException, IDORelationshipException, FinderException {
Table hotelType = new Table(this);
Table hotel = new Table(Hotel.class);
Table product = new Table(Product.class);
Table supplier = new Table(Supplier.class);
Column prodCol = new Column(product, product.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName());
Column hotelCol = new Column(hotel, hotel.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName());
Column suppCol = new Column(supplier, supplier.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName());
Column valid = new Column(hotelType, COLUMN_VALID);
JoinCriteria jc = new JoinCriteria(prodCol, hotelCol);
Column pkCol = new Column(hotelType, getIDColumnName());
pkCol.setAsDistinct();
SelectQuery query = new SelectQuery(hotelType);
query.addColumn(pkCol);
query.addJoin(hotelType, hotel);
query.addCriteria(jc);
query.addJoin(product, supplier);
query.addCriteria(new MatchCriteria(valid, MatchCriteria.EQUALS, true));
query.addCriteria(new InCriteria(suppCol, suppliers));
return idoFindPKsByQuery(query);
}
}