package is.idega.idegaweb.travel.service.tour.data; 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.data.GenericEntity; import com.idega.data.IDOCompositePrimaryKeyException; 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 TourTypeBMPBean extends GenericEntity implements TourType { private static String ENTITY_NAME = "TB_TOUR_TYPE"; private static String COLUMN_NAME = "TB_TOUR_TYPE_NAME"; private static String COLUMN_TOUR_CATEGORY = "TB_TOUR_CATEGORY"; private static String COLUMN_LOCALIZATION_KEY = "LOCALIZATION_KEY"; public String getEntityName() { return ENTITY_NAME; } public void initializeAttributes() { this.addAttribute(getIDColumnName()); this.addAttribute(COLUMN_NAME, "primKey", true, true, String.class); this.addAttribute(COLUMN_LOCALIZATION_KEY, "locKEy", true, true, String.class); this.addOneToOneRelationship(COLUMN_TOUR_CATEGORY, TourCategory.class); } public String getName() { return getStringColumnValue(COLUMN_NAME); } public void setName(String name) { setColumn(COLUMN_NAME, name); } public String getLocalizationKey() { return getStringColumnValue(COLUMN_LOCALIZATION_KEY); } public void setLocalizationKey(String key) { setColumn(COLUMN_LOCALIZATION_KEY, key); } public String getTourCategory() { return getStringColumnValue(COLUMN_TOUR_CATEGORY); } public void setTourCategory(String category) { setColumn(COLUMN_TOUR_CATEGORY, category); } public Collection ejbFindByCategory(String category) throws FinderException { return idoFindAllIDsByColumnOrderedBySQL(COLUMN_TOUR_CATEGORY, category, COLUMN_NAME); } public Collection ejbFindAll() throws FinderException { return idoFindAllIDsBySQL(); } public Collection ejbFindByCategoryUsedBySuppliers(String category, Collection suppliers) throws IDOCompositePrimaryKeyException, IDORelationshipException, FinderException { Table tourType = new Table(this); Table tour = new Table(Tour.class); Table product = new Table(Product.class); Table supplier = new Table(Supplier.class); Column prodCol = new Column(product, product.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName()); Column tourCol = new Column(tour, tour.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName()); Column suppCol = new Column(supplier, supplier.getEntityDefinition().getPrimaryKeyDefinition().getField().getSQLFieldName()); Column categoryCol = new Column(tourType, COLUMN_TOUR_CATEGORY); JoinCriteria jc = new JoinCriteria(prodCol, tourCol); Column pkCol = new Column(tourType, getIDColumnName()); pkCol.setAsDistinct(); SelectQuery query = new SelectQuery(tourType); query.addColumn(pkCol); query.addJoin(tourType, tour); query.addCriteria(jc); query.addJoin(product, supplier); query.addCriteria(new MatchCriteria(categoryCol, MatchCriteria.EQUALS, category)); query.addCriteria(new InCriteria(suppCol, suppliers)); query.addOrder(tourType, COLUMN_NAME, true); return idoFindPKsByQuery(query); } }