/* <<<<<<< CampusApplicationFinder.java * $Id: CampusApplicationFinder.java,v 1.18.4.4 2007/07/09 15:18:36 palli Exp $ ======= * $Id: CampusApplicationFinder.java,v 1.18.4.4 2007/07/09 15:18:36 palli Exp $ >>>>>>> 1.17 * * Copyright (C) 2001 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. * */ package is.idega.idegaweb.campus.block.application.business; import is.idega.idegaweb.campus.block.application.data.Applied; import is.idega.idegaweb.campus.block.application.data.AppliedHome; import is.idega.idegaweb.campus.block.application.data.CampusApplication; import is.idega.idegaweb.campus.block.application.data.CampusApplicationHome; import is.idega.idegaweb.campus.block.application.data.CurrentResidency; import is.idega.idegaweb.campus.block.application.data.CurrentResidencyHome; import is.idega.idegaweb.campus.block.application.data.SpouseOccupation; import is.idega.idegaweb.campus.block.application.data.SpouseOccupationHome; import is.idega.idegaweb.campus.block.application.data.WaitingList; import java.rmi.RemoteException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Vector; import javax.ejb.CreateException; import com.idega.block.application.business.ApplicationFinder; import com.idega.block.application.data.Applicant; import com.idega.block.application.data.ApplicantHome; import com.idega.block.application.data.Application; import com.idega.block.application.data.ApplicationHome; import com.idega.data.EntityFinder; import com.idega.data.IDOEntityDefinition; import com.idega.data.IDOLookup; import com.idega.data.SimpleQuerier; /** * * @author <a href="mailto:palli@idega.is">Pall Helgason</a> * @version 1.0 */ /** @deprecated use service beans instead */ public abstract class CampusApplicationFinder { public static Collection listOfApplicationInSubject(int subjectId) { try { ApplicationHome sHome = (ApplicationHome) IDOLookup .getHome(Application.class); return sHome.findBySubject(new Integer(subjectId)); } catch (Exception e) { return null; } } public static Collection listOfSpouseOccupations() { try { SpouseOccupationHome sHome = (SpouseOccupationHome) IDOLookup .getHome(SpouseOccupation.class); return sHome.findAll(); // return // EntityFinder.findAll(((is.idega.idegaweb.campus.block.application.data.SpouseOccupationHome) // com.idega.data.IDOLookup.getHomeLegacy(SpouseOccupation.class)).createLegacy()); } catch (Exception e) { return null; } } public static Collection listOfResidences() { try { CurrentResidencyHome rHome = (CurrentResidencyHome) IDOLookup .getHome(CurrentResidency.class); return rHome.findAll(); } catch (Exception e) { return null; } } public static Collection listOfNewApplied() { try { AppliedHome aHome = (AppliedHome) IDOLookup.getHome(Applied.class); return aHome.findAll(); } catch (Exception e) { return null; } } public static Collection listOfNewCampusApplication() { try { CampusApplicationHome aHome = (CampusApplicationHome) IDOLookup .getHome(CampusApplication.class); return aHome.findAll(); } catch (Exception e) { return null; } } public static Collection listOfAppliedInApplication(int id) { try { AppliedHome aHome = (AppliedHome) IDOLookup.getHome(Applied.class); return aHome.findByApplicationID(new Integer(id)); } catch (Exception e) { return null; } } public static Collection listOfApplicationHoldersInSubject(int id, String status) { Collection A = listOfNewApplied(); Collection B = listOfNewCampusApplication(); Collection C = ApplicationFinder.listOfApplicationInSubject(id, status); Collection D = ApplicationFinder.listOfNewApplicants(); return listOfCampusApplicationHolders(A, B, C, D); } public static Collection listOfCampusApplicationHolders( Collection lApplied, Collection lCamApp, Collection lApp, Collection lApplicant) { Collection A = lApplied; Collection B = lCamApp; Collection C = lApp; Collection D = lApplicant; Vector V = null; try { java.util.Iterator it = null; if (B != null && C != null && D != null) { it = D.iterator(); Hashtable HD = new Hashtable(D.size()); while (it.hasNext()) { Applicant applicant = (Applicant) it.next(); HD.put(new Integer(applicant.getPrimaryKey().toString()), applicant); } it = C.iterator(); Hashtable HC = new Hashtable(C.size()); while (it.hasNext()) { Application application = (Application) it.next(); HC.put(new Integer(application.getPrimaryKey().toString()), application); } it = B.iterator(); Hashtable HB = new Hashtable(B.size()); while (it.hasNext()) { CampusApplication campusapplication = (CampusApplication) it .next(); HB.put(new Integer(campusapplication.getPrimaryKey() .toString()), campusapplication); } if (A != null) { it = A.iterator(); Application application; Applicant applicant; CampusApplication campusApplication; Applied applied; CampusApplicationHolder AH; V = new Vector(); Vector vApplied = null; int appliedAppId = -1; while (it.hasNext()) { applied = (Applied) it.next(); if (appliedAppId == applied.getApplicationId() .intValue()) { if (vApplied != null) vApplied.add(applied); } else { vApplied = new Vector(); vApplied.add(applied); if (HB.containsKey(applied.getApplicationId())) { campusApplication = (CampusApplication) HB .get((applied.getApplicationId())); if (HC.containsKey(campusApplication .getAppApplicationId())) { application = (Application) HC .get((campusApplication .getAppApplicationId())); if (HD.containsKey(new Integer(application .getApplicantId()))) { applicant = (Applicant) HD .get(new Integer(application .getApplicantId())); AH = new CampusApplicationHolder( application, applicant, campusApplication, vApplied); V.add(AH); } } } } appliedAppId = (applied.getApplicationId()).intValue(); } } } } catch (Exception ex) { ex.printStackTrace(); } return V; } public static CampusApplicationHolder getApplicantInfo(int iApplicantId) { CampusApplicationHolder CAH = null; Applicant eApplicant = null; try { eApplicant = ((ApplicantHome) IDOLookup.getHome(Applicant.class)) .findByPrimaryKey(new Integer(iApplicantId)); CAH = getApplicantInfo(eApplicant); } catch (Exception ex) { ex.printStackTrace(); } return CAH; } public static CampusApplicationHolder getApplicantInfo(Applicant eApplicant) { CampusApplicationHolder cah = null; if (eApplicant != null) { try { ApplicationHome aHome = (ApplicationHome) IDOLookup .getHome(Application.class); Collection l = aHome.findByApplicantID(new Integer(eApplicant .getPrimaryKey().toString())); if (l != null && !l.isEmpty()) { Iterator it = l.iterator(); Application eApplication = null; while (it.hasNext()) { eApplication = (Application) it.next(); } CampusApplicationHome cHome = (CampusApplicationHome) IDOLookup .getHome(CampusApplication.class); CampusApplication eCampusApplication = cHome .findByApplicationId(new Integer(eApplication .getPrimaryKey().toString()).intValue()); l = eCampusApplication.getApplied(); Vector v = null; if (l != null) { v = new Vector(l.size()); for (Iterator iter = l.iterator(); iter.hasNext();) { Applied a = (Applied) iter.next(); v.add(a); } } cah = new CampusApplicationHolder(eApplication, eApplicant, eCampusApplication, v); } } catch (Exception ex) { ex.printStackTrace(); } } return cah; } public static CampusApplicationHolder getApplicationInfo( Application eApplication) { CampusApplicationHolder cah = null; if (eApplication != null) { try { CampusApplicationHome cHome = (CampusApplicationHome) IDOLookup .getHome(CampusApplication.class); CampusApplication eCampusApplication = cHome .findByApplicationId(new Integer(eApplication .getPrimaryKey().toString()).intValue()); Collection l = eCampusApplication.getApplied(); Vector v = null; if (l != null) { v = new Vector(l.size()); for (Iterator iter = l.iterator(); iter.hasNext();) { Applied a = (Applied) iter.next(); v.add(a); } } cah = new CampusApplicationHolder(eApplication, eApplication .getApplicant(), eCampusApplication, v); } catch (Exception ex) { ex.printStackTrace(); } } return cah; } public static CampusApplicationHolder getCampusApplicationInfo( int campusApplicationId) { CampusApplicationHolder cah = null; CampusApplication ca = null; try { ca = ((CampusApplicationHome) IDOLookup .getHome(CampusApplication.class)) .findByPrimaryKey(new Integer(campusApplicationId)); cah = getCampusApplicationInfo(ca); } catch (Exception e) { e.printStackTrace(); } return (cah); } public static CampusApplicationHolder getCampusApplicationInfo( CampusApplication ca) { CampusApplicationHolder cah = null; Collection resultSet = null; if (ca != null) { try { AppliedHome aHome = (AppliedHome) IDOLookup .getHome(Applied.class); resultSet = aHome.findByApplicationID(new Integer(ca .getPrimaryKey().toString())); Vector v = null; if (resultSet != null) { v = new Vector(resultSet.size()); for (Iterator iter = resultSet.iterator(); iter.hasNext();) { Applied applied = (Applied) iter.next(); v.add(applied); } } Application app = ((ApplicationHome) IDOLookup .getHome(Application.class)).findByPrimaryKey(ca .getAppApplicationId()); Applicant applicant = ((ApplicantHome) IDOLookup .getHome(Applicant.class)) .findByPrimaryKey(new Integer(app.getApplicantId())); cah = new CampusApplicationHolder(app, applicant, ca, v); } catch (Exception ex) { ex.printStackTrace(); } } return (cah); } public static Collection listOfEntityInWaitingList(Class entity, int aprtTypeId, int cmplxId) { Collection L = null; try { IDOEntityDefinition def = IDOLookup .getEntityDefinitionForClass(entity); boolean bapplied = false; if (def.getInterfaceClass().isAssignableFrom(Applied.class)) bapplied = true; /** @todo laga */ StringBuffer sql = getApplicationEntityQuery(def .getUniqueEntityName(), aprtTypeId, cmplxId, bapplied); // System.err.println(sql.toString()); L = EntityFinder.getInstance().findAll(def.getInterfaceClass(), sql.toString()); } catch (Exception ex) { ex.printStackTrace(); } return L; } private static StringBuffer getApplicationEntityQuery(String entityName, int aprtTypeId, int cmplxId, boolean bapplied) { boolean btype = true, bcmplx = true; if (aprtTypeId <= 0) btype = false; if (cmplxId <= 0) bcmplx = false; StringBuffer sql = new StringBuffer("select "); // if(!(btype && bcmplx)) sql.append(" distinct "); sql.append(entityName); sql.append(".* "); sql .append(" from cam_application ca,app_application an,app_applicant aa"); sql.append(",cam_waiting_list wl ,cam_applied ad"); sql.append(" where ca.app_application_id = an.app_application_id "); sql.append(" and an.app_applicant_id = aa.app_applicant_id "); sql.append(" and aa.app_applicant_id = wl.app_applicant_id "); if (bapplied) { sql.append(" and ad.bu_aprt_type_id = wl.bu_apartment_type_id "); sql.append(" and ad.bu_complex_id = wl.bu_complex_id "); } if (btype) { sql.append(" and wl.bu_apartment_type_id = "); sql.append(aprtTypeId); } if (bcmplx) { sql.append(" and wl.bu_complex_id = "); sql.append(cmplxId); } return sql; } public static Collection listOfCampusApplicationHoldersInWaitinglist( int aprtTypeId, int cmplxId) throws RemoteException, CreateException { Collection lApplication = listOfEntityInWaitingList(Application.class, aprtTypeId, cmplxId); Collection lApplicant = listOfEntityInWaitingList(Applicant.class, aprtTypeId, cmplxId); Collection lCampusApplication = listOfEntityInWaitingList( CampusApplication.class, aprtTypeId, cmplxId); Collection lApplied = listOfEntityInWaitingList(Applied.class, aprtTypeId, cmplxId); return listOfCampusApplicationHolders(lApplied, lCampusApplication, lApplication, lApplicant); } public static int countAppliedInTypeAndComplex(int typeId, int cmplxId, int order) { StringBuffer sql = new StringBuffer("select count(*) "); sql.append(" from cam_applied app "); sql.append(" where app.bu_aprt_type_id = "); sql.append(typeId); sql.append(" and app.bu_complex_id ="); sql.append(cmplxId); if (order > 0) { sql.append(" and app.ordered = "); sql.append(order); } int count = 0; try { count = SimpleQuerier.executeIntQuery(sql.toString()); // count = // ((is.idega.idegaweb.campus.block.application.data.CampusApplicationHome) // com.idega.data.IDOLookup.getHomeLegacy(CampusApplication.class)).createLegacy().getNumberOfRecords(sql.toString()); } catch (Exception ex) { } if (count < 0) count = 0; return count; } public static int countWaitingInTypeAndComplex(int typeId, int cmplxId, int order) { StringBuffer sql = new StringBuffer("select count(* ) "); sql.append(" from cam_waiting_list wl "); sql.append(" where wl.bu_apartment_type_id = "); sql.append(typeId); sql.append(" and wl.bu_complex_id = "); sql.append(cmplxId); // System.err.println(sql.toString()); int count = 0; try { count = SimpleQuerier.executeIntQuery(sql.toString()); // count = // ((is.idega.idegaweb.campus.block.application.data.AppliedHome) // com.idega.data.IDOLookup.getHomeLegacy(Applied.class)).createLegacy().getNumberOfRecords(sql.toString()); } catch (Exception ex) { } if (count < 0) count = 0; return count; } public static int countWaitingWithTypeAndComplex(int typeId, int cmplxId, int order) { StringBuffer sql = new StringBuffer( "select count(distinct cam_waiting_list_id) "); sql.append(" from cam_waiting_list wl ,cam_applied ad "); sql.append(" where wl.bu_apartment_type_id = ad.bu_aprt_type_id "); sql.append(" and wl.bu_complex_id = ad.bu_complex_id "); sql.append(" and wl.bu_apartment_type_id = "); sql.append(typeId); sql.append(" and wl.bu_complex_id = "); sql.append(cmplxId); if (order > 0) { sql.append(" and ad.ordered = "); sql.append(order); } int count = 0; // System.err.println(sql.toString()); // System.err.println(); try { count = SimpleQuerier.executeIntQuery(sql.toString()); // count = // ((is.idega.idegaweb.campus.block.application.data.AppliedHome) // com.idega.data.IDOLookup.getHomeLegacy(Applied.class)).createLegacy().getNumberOfRecords(sql.toString()); } catch (Exception ex) { } if (count < 0) count = 0; return count; } /** * */ private static void updateWatingListToRightOrder(Collection li) { Iterator it = li.iterator(); while (it.hasNext()) { WaitingList wl = (WaitingList) it.next(); if (wl.getApartmentSubcategoryID() != null) { StringBuffer sql = new StringBuffer("select count(*) from "); sql .append(is.idega.idegaweb.campus.block.application.data.WaitingListBMPBean .getEntityTableName()); sql.append(" where (("); sql .append(is.idega.idegaweb.campus.block.application.data.WaitingListBMPBean .getOrderColumnName()); sql.append(" <= "); sql.append(wl.getOrder().toString()); sql.append(" and "); sql .append(is.idega.idegaweb.campus.block.application.data.WaitingListBMPBean .getPriorityColumnName()); sql.append(" = '"); sql.append(wl.getPriorityLevel()); sql.append("') or ("); sql .append(is.idega.idegaweb.campus.block.application.data.WaitingListBMPBean .getPriorityColumnName()); sql.append(" < '"); sql.append(wl.getPriorityLevel()); sql.append("')) and "); sql .append(is.idega.idegaweb.campus.block.application.data.WaitingListBMPBean .getApartmentSubcategoryColumnName()); sql.append(" = "); sql.append(wl.getApartmentSubcategoryID().toString()); int count = 0; try { count = SimpleQuerier.executeIntQuery(sql.toString()); } catch (Exception ex) { return; } if (count < 0) count = 1; wl.setOrder(count); } } } public static Map getEmailAndApplicationIdForApprovedApplications() { Hashtable table = new Hashtable(); StringBuffer sql = new StringBuffer( "select app.app_application_id, email from cam_application cam, app_application app where cam.app_application_id = app.app_application_id and app.status = 'A'"); Connection Conn = null; try { Conn = com.idega.util.database.ConnectionBroker.getConnection(); Statement stmt = Conn.createStatement(); ResultSet RS = stmt.executeQuery(sql.toString()); while (RS.next()) { int id = RS.getInt("app_application_id"); String email = RS.getString("email"); if (email != null && !email.equals("")) table.put(new Integer(id), email); } RS.close(); stmt.close(); } catch (SQLException e) { System.err.println(e.toString()); } finally { com.idega.util.database.ConnectionBroker.freeConnection(Conn); } return table; } }