/* * $Id: ApartmentCategoryBMPBean.java,v 1.8.2.4 2008/02/13 17:00:20 palli Exp $ * * Copyright (C) 2002 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. * */ package com.idega.block.building.data; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.text.data.TextEntityBMPBean; import com.idega.data.IDOQuery; import com.idega.data.IDORelationshipException; import com.idega.data.query.Column; import com.idega.data.query.MatchCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.data.query.WildCardColumn; /** * @author <a href="mailto:aron@idega.is">Aron Birkir</a> * @version 1.0 */ public class ApartmentCategoryBMPBean extends TextEntityBMPBean implements ApartmentCategory { protected static final String ENTITY_NAME = "bu_aprt_cat"; protected static final String COLUMN_IMAGE = "ic_image_id"; protected static final String COLUMN_INFO = "info"; protected static final String COLUMN_NAME = "name"; protected static final String COLUMN_SHOW_SPOUSE = "show_spouse"; protected static final String COLUMN_SPOUSE_MANDATORY = "spouse_mandatory"; protected static final String COLUMN_SHOW_CHILDREN = "show_children"; protected static final String COLUMN_CHILDREN_MANDATORY = "children_mandatory"; protected static final String COLUMN_MAX_NUMBER_OF_CHOICES = "number_of_choices"; public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(COLUMN_NAME, "Name", String.class); addAttribute(COLUMN_INFO, "Info", String.class); addAttribute(COLUMN_IMAGE, "Icon", Integer.class); super.setMaxLength(COLUMN_INFO, 4000); addAttribute(COLUMN_SHOW_SPOUSE, "Show spouse", Boolean.class); addAttribute(COLUMN_SPOUSE_MANDATORY, "Spouse mandatory", Boolean.class); addAttribute(COLUMN_SHOW_CHILDREN, "Show children", Boolean.class); addAttribute(COLUMN_CHILDREN_MANDATORY, "Children mandatory", Boolean.class); addAttribute(COLUMN_MAX_NUMBER_OF_CHOICES, "Max number of choices", Integer.class); } //getters public String getEntityName() { return ENTITY_NAME; } public String getName() { return getStringColumnValue(COLUMN_NAME); } public String getInfo() { return getStringColumnValue(COLUMN_INFO); } public int getImageId() { return getIntColumnValue(COLUMN_IMAGE); } public boolean getShowSpouse() { return getBooleanColumnValue(COLUMN_SHOW_SPOUSE, true); } public boolean getSpouseMandatory() { return getBooleanColumnValue(COLUMN_SPOUSE_MANDATORY, false); } public boolean getShowChildren() { return getBooleanColumnValue(COLUMN_SHOW_CHILDREN, true); } public boolean getChildrenMandatory() { return getBooleanColumnValue(COLUMN_CHILDREN_MANDATORY, false); } public int getMaxNumberOfChoices() { return getIntColumnValue(COLUMN_MAX_NUMBER_OF_CHOICES, 3); } //setters public void setName(String name) { setColumn(COLUMN_NAME, name); } public void setInfo(String info) { setColumn(COLUMN_INFO, info); } public void setImageId(int image_id) { setColumn(COLUMN_IMAGE, image_id); } public void setImageId(Integer image_id) { setColumn(COLUMN_IMAGE, image_id); } public void setShowSpouse(boolean showSpouse) { setColumn(COLUMN_SHOW_SPOUSE, showSpouse); } public void setSpouseMandatory(boolean spouseMandatory) { setColumn(COLUMN_SPOUSE_MANDATORY, spouseMandatory); } public void setShowChildren(boolean showChildren) { setColumn(COLUMN_SHOW_CHILDREN, showChildren); } public void setChildrenMandatory(boolean childrenMandatory) { setColumn(COLUMN_CHILDREN_MANDATORY, childrenMandatory); } public void setMaxNumberOfChoices(int maxNumberOfChoices) { setColumn(COLUMN_MAX_NUMBER_OF_CHOICES, maxNumberOfChoices); } //sql public Collection ejbFindAll() throws FinderException { return super.idoFindAllIDsBySQL(); } public Object ejbFindByName(String name) throws FinderException { IDOQuery query = idoQuery(); query.appendSelectAllFrom(this); query.appendWhereEqualsQuoted(COLUMN_NAME, name); return this.idoFindOnePKByQuery(query); } public Collection getApartmentTypes() { try { return super.idoGetRelatedEntities(ApartmentType.class); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Error in getApartmentTypes() : " + e.getMessage()); } } public Collection ejbFindByComplex(Integer complexID) throws FinderException { Table category = new Table(this, "c"); Table subcategory = new Table(ApartmentSubcategory.class, "s"); Table type = new Table(ApartmentType.class, "t"); Table apartment = new Table(Apartment.class, "a"); Table floor = new Table(Floor.class, "f"); Table building = new Table(Building.class, "b"); SelectQuery query = new SelectQuery(category); query.setAsDistinct(true); query.addColumn(new WildCardColumn(category)); try { query.addJoin(subcategory, category); query.addJoin(type, subcategory); query.addJoin(apartment, type); query.addJoin(apartment, floor); query.addJoin(floor, building); } catch (IDORelationshipException e) { throw new FinderException(e.getMessage()); } query.addCriteria(new MatchCriteria(new Column(building, BuildingBMPBean.COLUMN_COMPLEX), MatchCriteria.EQUALS, complexID.intValue())); query.addOrder(category, this.getIDColumnName(), true); return idoFindPKsBySQL(query.toString()); } }