package com.idega.block.building.business;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega multimedia
* @author <a href="mailto:aron@idega.is">aron@idega.is</a>
* @version 1.0
*/
public class BuildingFinder {
public final static int APARTMENT = 2,FLOOR=3,BUILDING=4,COMPLEX=5,CATEGORY=6,TYPE=7;
/*
public static List listOfComplex(){
try{
return EntityFinder.getInstance().findAll(Complex.class);
}
catch(Exception e){return null;}
}
public static List listOfBuilding(){
try{
return EntityFinder.getInstance().findAll(Building.class);
}
catch(Exception e){return null;}
}
public static List listOfFloor(){
try{
return EntityFinder.getInstance().findAll(Floor.class);
}
catch(Exception e){return null;}
}
public static List listOfApartmentType(){
try{
return EntityFinder.getInstance().findAll(ApartmentType.class);
}
catch(Exception e){return null;}
}
public static List listOfApartmentCategory(){
try{
return EntityFinder.getInstance().findAll(ApartmentCategory.class);
}
catch(Exception e){return null;}
}
public static List listOfApartment(){
try{
return EntityFinder.getInstance().findAll(Apartment.class);
}
catch(Exception e){return null;}
}
public static List ListOfAparmentOrderedByFloor(){
try{
return EntityFinder.getInstance().findAllOrdered(Apartment.class,com.idega.block.building.data.ApartmentBMPBean.getFloorIdColumnName());
}
catch(Exception e){return null;}
}
public static Floor[] findFloors(){
Floor[] floors = new Floor[0];
try{
List l = EntityFinder.getInstance().findAll(Floor.class);
return (Floor[]) l.toArray();
}
catch(Exception e){}
return floors;
}
public static RoomType[] findRoomTypes(){
RoomType[] types = new RoomType[0];
try{
types = (RoomType[]) (((com.idega.block.building.data.RoomTypeHome)com.idega.data.IDOLookup.getHomeLegacy(RoomType.class)).createLegacy()).findAll();
}
catch(SQLException e){}
return types;
}
public static ApartmentType[] findApartmentTypesInBuilding(int iBuildingId){
ApartmentType[] rt = new ApartmentType[0];
StringBuffer sql = new StringBuffer(" select distinct bu_aprt_type.* ");
sql.append(" from bu_aprt_type p,bu_apartment a,bu_floor f ");
sql.append(" where p.bu_aprt_type_id = a.bu_aprt_type_id");
sql.append(" and a.bu_floor_id = f.bu_floor_id");
sql.append(" and f.bu_building_id = ");
sql.append(iBuildingId);
StringBuffer sql = new StringBuffer("select distinct ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(".* from ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(" p ,");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getNameTableName());
sql.append(" a ,");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append(" f where p.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id = a.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id and a.");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getFloorIdColumnName());
sql.append(" = f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append("_id and f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getBuildingIdColumnName());
sql.append(" = ");
sql.append(iBuildingId);
try{
List l = EntityFinder.getInstance().findAll(ApartmentType.class,sql.toString());
rt= (ApartmentType[])l.toArray();
}
catch(Exception ex){}
return rt;
}
public static String[] findDistinctApartmentTypesInComplex(int iComplexId) {
StringBuffer sql = new StringBuffer("select distinct ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getApartmentCategoryIdColumnName());
sql.append(" from ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(" p ,");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getNameTableName());
sql.append(" a ,");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append(" f ,");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append(" b where p.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id = a.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id and a.");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getFloorIdColumnName());
sql.append(" = f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append("_id and f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getBuildingIdColumnName());
sql.append(" = b.");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append("_id and b.");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append("_id = ");
sql.append(iComplexId);
sql.append(" order by ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getApartmentCategoryIdColumnName());
String[] L = null;
try{
L = com.idega.data.SimpleQuerier.executeStringQuery(sql.toString());
}
catch(Exception e){}
return L;
}
public static ApartmentType[] findApartmentTypesInCategory(int iCategoryId){
ApartmentType[] rt = new ApartmentType[0];
try {
List l = EntityFinder.getInstance().findAllByColumn(ApartmentType.class,ApartmentTypeBMPBean.getApartmentCategoryIdColumnName(),iCategoryId);
rt = (ApartmentType[]) l.toArray();
}
catch (Exception ex) {
}
return rt;
}
public static ApartmentType[] findApartmentTypesInComplex(int iComplexId){
ApartmentType[] rt = new ApartmentType[0];
StringBuffer sql = new StringBuffer("select distinct ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(".* from ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(" p ,");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getNameTableName());
sql.append(" a ,");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append(" f ,");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append(" b where p.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id = a.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id and a.");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getFloorIdColumnName());
sql.append(" = f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append("_id and f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getBuildingIdColumnName());
sql.append(" = b.");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append("_id and b.");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append("_id = ");
sql.append(iComplexId);
try{
List l = EntityFinder.getInstance().findAll(ApartmentType.class,sql.toString());
rt= (ApartmentType[])l.toArray();
}
catch(Exception ex){}
return rt;
}
public static ApartmentType[] findApartmentTypesForCategory(int categoryId) {
ApartmentType aprtType[] = null;
try {
List l = EntityFinder.getInstance().findAllByColumn(ApartmentType.class,ApartmentTypeBMPBean.getApartmentCategoryIdColumnName(),categoryId);
aprtType = (ApartmentType[]) l.toArray();
}
catch(Exception e) {
}
return(aprtType);
}
public static int getComplexIdFromTypeId(int id) {
StringBuffer sql = new StringBuffer("select distinct ");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append(".* from ");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append(" p ,");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getNameTableName());
sql.append(" a ,");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append(" f ,");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append(" c ,");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append(" b where p.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id = a.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id and a.");
sql.append(com.idega.block.building.data.ApartmentBMPBean.getFloorIdColumnName());
sql.append(" = f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getNameTableName());
sql.append("_id and f.");
sql.append(com.idega.block.building.data.FloorBMPBean.getBuildingIdColumnName());
sql.append(" = b.");
sql.append(com.idega.block.building.data.BuildingBMPBean.getNameTableName());
sql.append("_id and b.");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append("_id = c.");
sql.append(com.idega.block.building.data.ComplexBMPBean.getNameTableName());
sql.append("_id and a.");
sql.append(com.idega.block.building.data.ApartmentTypeBMPBean.getNameTableName());
sql.append("_id = ");
sql.append(id);
int r = -1;
Complex[] c = new Complex[0];
try{
List l = EntityFinder.getInstance().findAll(Complex.class,sql.toString());
c= (Complex[])l.toArray();
if(c.length > 0)
r = c[0].getID();
}
catch(Exception ex){}
return r;
}
public static Hashtable getLodgingsHash(){
Hashtable hashtable = new Hashtable();
List BuildingList = listOfBuilding();
List FloorList = listOfFloor();
List TypeList = listOfApartmentType();
List CategoryList = listOfApartmentCategory();
List ComplexList = listOfComplex();
if(ComplexList != null){
int clen = ComplexList.size();
Complex C;
for (int i = 0; i < clen; i++) {
C = (Complex) ComplexList.get(i);
hashtable.put("x_"+C.getID(),C);
}
}
if(BuildingList != null){
int clen = BuildingList.size();
Building B;
for (int i = 0; i < clen; i++) {
B = (Building) BuildingList.get(i);
hashtable.put("b_"+B.getID(),B);
}
}
if(FloorList != null){
int len = FloorList.size();
Floor F;
for (int i = 0; i < len; i++) {
F = (Floor) FloorList.get(i);
hashtable.put("f_"+F.getID(),F);
}
}
if(TypeList != null){
int len = TypeList.size();
ApartmentType T;
for (int i = 0; i < len; i++) {
T = (ApartmentType) TypeList.get(i);
hashtable.put("t_"+T.getID(),T);
}
}
if(CategoryList != null){
int len = CategoryList.size();
ApartmentCategory C;
for (int i = 0; i < len; i++) {
C = (ApartmentCategory) CategoryList.get(i);
hashtable.put("c_"+C.getID(),C);
}
}
return hashtable;
}
public static List listOfApartmentsInType(int id){
List L = null;
try{
L = EntityFinder.getInstance().findAllByColumnOrdered(Apartment.class,ApartmentBMPBean.getNameTableName()+"_id",String.valueOf(id),com.idega.block.building.data.ApartmentBMPBean.getNameColumnName());
}
catch(Exception sql){}
return L;
}
public static List listOfApartmentsInTypeAndComplex(int typeId,int cmplxId){
List L = null;
StringBuffer sql = new StringBuffer("select bu_apartment.* ");
sql.append("from bu_apartment,bu_floor,bu_building,bu_aprt_type,bu_complex ");
sql.append("where bu_apartment.bu_aprt_type_id = bu_aprt_type.bu_aprt_type_id ");
sql.append("and bu_apartment.bu_floor_id = bu_floor.bu_floor_id ");
sql.append("and bu_building.bu_building_id = bu_floor.bu_building_id ");
sql.append("and bu_building.bu_complex_id = bu_complex.bu_complex_id ");
sql.append("and bu_complex.bu_complex_id = ");
sql.append(cmplxId);
sql.append(" and bu_aprt_type.bu_aprt_type_id = ");
sql.append(typeId);
sql.append(" order by bu_apartment.bu_floor_id ");
try{
L = EntityFinder.getInstance().findAll(Apartment.class,sql.toString());
}
catch(Exception ex){
ex.printStackTrace();
}
return L;
}
public static List searchApartment(String searchname){
List L = null;
try {
L = EntityFinder.getInstance().findAllByColumnOrdered(Apartment.class,ApartmentBMPBean.getNameColumnName(),searchname,ApartmentBMPBean.getFloorIdColumnName());
}
catch (Exception ex) {
}
return L;
}
public static Vector getApartmentTypesComplexForCategory(int categoryId) {
Vector v = new Vector();
Connection Conn = null;
String sqlString = "select * from v_cam_aprt_type_complex where bu_aprt_cat_id = " + categoryId;
try {
Conn = com.idega.util.database.ConnectionBroker.getConnection();
Statement stmt = Conn.createStatement();
ResultSet RS = stmt.executeQuery(sqlString);
while (RS.next()) {
ApartmentTypeComplexHelper appHelp = new ApartmentTypeComplexHelper();
int typeId = RS.getInt("bu_aprt_type_id");
int complexId = RS.getInt("bu_complex_id");
String typeName = RS.getString("aprt_type_name");
String complexName = RS.getString("complex_name");
appHelp.setKey(typeId,complexId);
appHelp.setName(typeName + " (" + complexName + ")");
v.addElement(appHelp);
}
RS.close();
stmt.close();
}
catch(SQLException e) {
System.err.println(e.toString());
}
finally{
com.idega.util.database.ConnectionBroker.freeConnection(Conn);
}
return(v);
}
public static Vector getAllApartmentTypesComplex() {
Vector v = new Vector();
Connection Conn = null;
String sqlString = "select * from v_cam_aprt_type_complex";
try {
Conn = com.idega.util.database.ConnectionBroker.getConnection();
Statement stmt = Conn.createStatement();
ResultSet RS = stmt.executeQuery(sqlString);
while (RS.next()) {
ApartmentTypeComplexHelper appHelp = new ApartmentTypeComplexHelper();
int typeId = RS.getInt("bu_aprt_type_id");
int complexId = RS.getInt("bu_complex_id");
String typeName = RS.getString("aprt_type_name");
String complexName = RS.getString("complex_name");
appHelp.setKey(typeId,complexId);
appHelp.setName(typeName + " (" + complexName + ")");
v.addElement(appHelp);
}
RS.close();
stmt.close();
}
catch(SQLException e) {
System.err.println(e.toString());
}
finally{
com.idega.util.database.ConnectionBroker.freeConnection(Conn);
}
return(v);
}
public static List listOfBuildingsInComplex(int id){
List L = null;
try {
L = EntityFinder.getInstance().findAllByColumn(Building.class,BuildingBMPBean.getComplexIdColumnName(),id);
}
catch (Exception ex) {
}
return L;
}
public static List listOfBuildingImageFiles(int iComplexId){
try {
String sql = "select distinct f.* from ic_file f, bu_building b where b.ic_image_id = f.ic_file_id and b.bu_complex_id = "+iComplexId;
//System.err.println(sql);
return EntityFinder.findAll(com.idega.core.file.data.ICFileBMPBean.getStaticInstance(com.idega.core.file.data.ICFile.class),sql);
}
catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}
public static int countApartmentsInTypeAndComplex(int typeId,int cmplxId){
StringBuffer sql = new StringBuffer("select count(*) ");
sql.append(" from bu_apartment a,bu_floor f,bu_building b,bu_complex c,bu_aprt_type t ");
sql.append(" where a.bu_aprt_type_id = t.bu_aprt_type_id ");
sql.append(" and a.bu_floor_id = f.bu_floor_id ");
sql.append(" and f.bu_building_id = b.bu_building_id ");
sql.append(" and b.bu_complex_id = c.bu_complex_id ");
sql.append(" and t.bu_aprt_type_id = ");
sql.append(typeId);
sql.append(" and c.bu_complex_id = ");
sql.append(cmplxId);
int count = 0;
try{
count = ((ComplexHome)IDOLookup.getHome(Complex.class)).create().getNumberOfRecords(sql.toString());
}
catch(Exception ex){}
if(count < 0)
count = 0;
return count;
}
public static int countRentableApartments(){
String sql = "select count(*) from "+com.idega.block.building.data.ApartmentBMPBean.getNameTableName() +" where "+com.idega.block.building.data.ApartmentBMPBean.getRentableColumnName()+" = 'Y'";
int count = 0;
//System.err.println(sql.toString());
try{
count = ((ApartmentHome)IDOLookup.getHome(Apartment.class)).create().getNumberOfRecords(sql.toString());
}
catch(Exception ex){ex.printStackTrace();}
if(count < 0)
count = 0;
return count;
}
public static List listOfApartments(String sComplexId,String sBuildingId,String sFloorId,String sType,String sCategory,int iOrder){
StringBuffer sql = new StringBuffer("select a.* ");
sql.append(" from bu_apartment a,bu_floor f,bu_building b");
sql.append(",bu_complex c,bu_aprt_type t,bu_aprt_cat y");
sql.append(" where a.bu_aprt_type_id = t.bu_aprt_type_id ");
sql.append(" and t.bu_aprt_cat_id = y.bu_aprt_cat_id");
sql.append(" and a.bu_floor_id = f.bu_floor_id ");
sql.append(" and f.bu_building_id = b.bu_building_id ");
sql.append(" and b.bu_complex_id = c.bu_complex_id ");
if(sComplexId !=null && !"-1".equals(sComplexId)){
sql.append(" and bu_complex_id = ");
sql.append(sComplexId);
}
if(sBuildingId !=null && !"-1".equals(sBuildingId)){
sql.append(" and bu_building_id = ");
sql.append(sBuildingId);
}
if(sFloorId !=null && !"-1".equals(sFloorId)){
sql.append(" and bu_floor_id = ");
sql.append(sFloorId);
}
if(sType !=null && !"-1".equals(sType)){
sql.append(" and bu_aprt_type_id = ");
sql.append(sType);
}
if(sCategory !=null && !"-1".equals(sCategory)){
sql.append(" and bu_aprt_cat_id = ");
sql.append(sCategory);
}
String order = getOrderString(iOrder);
if(order != null){
sql.append(" order by ");
sql.append(order);
}
try{
return EntityFinder.getInstance().findAll(Apartment.class,sql.toString());
}
catch(Exception ex){
return null;
}
}
private static String getOrderString(int type){
String order = null;
switch (type) {
case BUILDING : order = " b.name " ; break;
case COMPLEX: order = " c.name " ; break;
case FLOOR: order = " f.name " ; break;
case APARTMENT: order =" a.name " ; break;
case CATEGORY: order = " y.name " ; break;
case TYPE: order =" t.name " ; break;
default: order = " a.bu_apartment_id ";
}
return order;
}
*/
}// class end