/*
* Created on Jan 22, 2004
*
*/
package com.idega.block.building.data;
import java.util.Collection;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.data.GenericView;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
/**
* ComplexTypeViewBMPBean
*
* @author aron
* @version 1.0
*/
public class ComplexSubcategoryViewBMPBean extends GenericView implements
ComplexSubcategoryView {
protected static final String COLUMN_APARTMENT_COUNT = "apartment_count";
protected static final String COLUMN_COMPLEX_NAME = "complex_name";
protected static final String COLUMN_TYPE_NAME = "type_name";
//protected static final String BU_APRT_TYPE_ID = "BU_APRT_TYPE_ID";
protected static final String COLUMN_SUBCATEGORY = "bu_subcategory_id";
protected static final String COLUMN_COMPLEX = "bu_complex_id";
protected static final String COLUMN_CATEGORY = "bu_aprt_cat_id";
protected static final String ENTITY_NAME = "v_complex_subcat";
/*
* (non-Javadoc)
*
* @see com.idega.data.IDOEntityBean#getPrimaryKeyClass()
*/
public Class getPrimaryKeyClass() {
return ComplexSubcategoryViewKey.class;
}
/*
* (non-Javadoc)
*
* @see com.idega.data.GenericEntity#initializeAttributes()
*/
public void initializeAttributes() {
addAttribute(COLUMN_CATEGORY, "Apartment category id", Integer.class);
addAttribute(COLUMN_TYPE_NAME, "Type name", String.class);
addAttribute(COLUMN_COMPLEX_NAME, "Complex name", String.class);
addManyToOneRelationship(COLUMN_COMPLEX, Complex.class);
addManyToOneRelationship(COLUMN_SUBCATEGORY, ApartmentSubcategory.class);
setAsPrimaryKey(COLUMN_COMPLEX, true);
setAsPrimaryKey(COLUMN_SUBCATEGORY, true);
}
/*
* (non-Javadoc)
*
* @see com.idega.data.GenericEntity#getEntityName()
*/
public String getEntityName() {
return (ENTITY_NAME);
}
public String getComplexName() {
return getStringColumnValue(COLUMN_COMPLEX_NAME);
}
public String getSubcategoryName() {
return getStringColumnValue(COLUMN_TYPE_NAME);
}
public Integer getSubcategoryID() {
return getIntegerColumnValue(COLUMN_SUBCATEGORY);
}
public ApartmentSubcategory getSubcategory() {
return (ApartmentSubcategory) getColumnValue(COLUMN_SUBCATEGORY);
}
public Integer getComplexID() {
return getIntegerColumnValue(COLUMN_COMPLEX);
}
public Complex getComplex() {
return (Complex) getColumnValue(COLUMN_COMPLEX);
}
public Object ejbFindByPrimaryKey(ComplexSubcategoryViewKey primaryKey)
throws FinderException {
return super.ejbFindByPrimaryKey(primaryKey);
}
public Object ejbCreate(ComplexSubcategoryViewKey primaryKey)
throws CreateException {
setPrimaryKey(primaryKey);
return super.ejbCreate();
}
/*
* (non-Javadoc)
*
* @see com.idega.data.IDOView#getCreationSQL()
*/
public String getCreationSQL() {
StringBuffer sql = new StringBuffer();
sql.append(" CREATE VIEW ").append(ENTITY_NAME).append(" ( ");
sql.append(COLUMN_CATEGORY).append(", ");
sql.append(COLUMN_COMPLEX).append(", ");
sql.append(COLUMN_SUBCATEGORY).append(", ");
sql.append(COLUMN_TYPE_NAME).append(", ");
sql.append(COLUMN_COMPLEX_NAME).append(", ");
sql.append(COLUMN_APARTMENT_COUNT);
sql.append(" ) AS ");
sql
.append(" SELECT sub.aprt_cat, c.bu_complex_id, sub.bu_aprt_sub_cat_id, sub.name, c.name, count(apa.bu_apartment_id) apartment_count");
sql
.append(" FROM bu_aprt_sub_cat sub, bu_aprt_type a, bu_complex c, bu_building bu, bu_floor fl, bu_apartment apa");
sql.append(" WHERE a.bu_aprt_type_id = apa.bu_aprt_type_id");
sql.append(" AND apa.bu_floor_id = fl.bu_floor_id ");
sql.append(" AND fl.bu_building_id = bu.bu_building_id ");
sql.append(" AND bu.bu_complex_id = c.bu_complex_id");
sql.append(" AND sub.bu_aprt_sub_cat_id = a.bu_aprt_subcat");
sql
.append(" GROUP BY sub.aprt_cat, sub.bu_aprt_sub_cat_id, sub.name, c.bu_complex_id, c.name");
return sql.toString();
}
public Collection ejbFindAll() throws FinderException {
return idoFindPKsByQuery(super.idoQueryGetSelect());
}
public Collection ejbFindByCategory(Integer categoryID)
throws FinderException {
Table apartment = new Table(this);
SelectQuery query = new SelectQuery(apartment);
query.addColumn(new WildCardColumn(apartment));
query.addCriteria(new MatchCriteria(apartment, COLUMN_CATEGORY,
MatchCriteria.EQUALS, categoryID.intValue()));
return idoFindPKsBySQL(query.toString());
}
}