/* * $Id: NackaCitizenElementarySchoolPlacementReportModel.java,v 1.9 2004/02/17 18:09:44 anders Exp $ * * Copyright (C) 2003 Agura IT. All Rights Reserved. * * This software is the proprietary information of Agura IT AB. * Use is subject to license terms. * */ package se.idega.idegaweb.commune.school.report.business; import java.rmi.RemoteException; /** * Report model for Nacka citizen placement for elementary schools. * <p> * Last modified: $Date: 2004/02/17 18:09:44 $ by $Author: anders $ * * @author Anders Lindman * @version $Revision: 1.9 $ */ public class NackaCitizenElementarySchoolPlacementReportModel extends ReportModel { private final static int ROW_SIZE = 10; private final static int COLUMN_SIZE = 16; private final static int ROW_METHOD_ELEMENTARY_NACKA_COMMUNE = 1; private final static int ROW_METHOD_ELEMENTARY_OTHER_COMMUNES = 2; private final static int ROW_METHOD_ELEMENTARY_PRIVATE_SCHOOLS = 3; private final static int ROW_METHOD_ELEMENTARY_FOREIGN_SCHOOLS = 4; private final static int ROW_METHOD_ELEMENTARY_SUM = 5; private final static int ROW_METHOD_COMPULSORY_NACKA_COMMUNE = 6; private final static int ROW_METHOD_COMPULSORY_OTHER_COMMUNES = 7; private final static int ROW_METHOD_COMPULSORY_PRIVATE_SCHOOLS = 8; private final static int ROW_METHOD_COMPULSORY_SUM = 9; private final static int ROW_METHOD_TOTAL = 10; private final static int COLUMN_METHOD_SCHOOL_YEAR = 101; private final static int COLUMN_METHOD_SUM_1_3 = 102; private final static int COLUMN_METHOD_SUM_4_6 = 103; private final static int COLUMN_METHOD_SUM_7_10 = 104; private final static int COLUMN_METHOD_TOTAL_1_10 = 105; private final static String QUERY_NACKA_COMMUNE = "nacka_commune"; private final static String QUERY_NACKA_COMMUNE_6_YEAR_STUDENTS = "nacka_commune_6"; private final static String QUERY_OTHER_COMMUNES = "other_communes"; private final static String QUERY_OTHER_COMMUNES_6_YEAR_STUDENTS = "other_communes_6"; private final static String QUERY_PRIVATE = "private"; private final static String QUERY_PRIVATE_6_YEAR_STUDENTS = "private_6"; private final static String QUERY_FOREIGN = "foreign"; private final static String QUERY_FOREIGN_6_YEAR_STUDENTS = "foreign_6"; private final static String QUERY_COMPULSORY_NACKA = "compulsory_nacka"; private final static String QUERY_COMPULSORY_NACKA_6_YEAR_STUDENTS = "compulsory_nacka_6"; private final static String QUERY_COMPULSORY_OTHER_COMMUNES = "compulsory_other_communes"; private final static String QUERY_COMPULSORY_OTHER_COMMUNES_6_YEAR_STUDENTS = "compulsory_other_communes_6"; private final static String QUERY_COMPULSORY_PRIVATE = "compulsory_private"; private final static String QUERY_COMPULSORY_PRIVATE_6_YEAR_STUDENTS = "compulsory_other_communes_6"; private final static String KEY_REPORT_TITLE = KP + "title_nacka_citizen_elementary_school_placements"; /** * Constructs this report model. * @param reportBusiness the report business instance for calculating cell values */ public NackaCitizenElementarySchoolPlacementReportModel(ReportBusiness reportBusiness) { super(reportBusiness); } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#initReportSize() */ protected void initReportSize() { setReportSize(ROW_SIZE, COLUMN_SIZE); } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#buildRowHeaders() */ protected Header[] buildRowHeaders() { Header[] headers = new Header[3]; Header h = new Header(KEY_ELEMENTARY_SCHOOL, Header.HEADERTYPE_ROW_HEADER, 5); Header child0 = new Header(KEY_NACKA_COMMUNE, Header.HEADERTYPE_ROW_NORMAL); Header child1 = new Header(KEY_OTHER_COMMUNES, Header.HEADERTYPE_ROW_NORMAL); Header child2 = new Header(KEY_PRIVATE_SCHOOLS, Header.HEADERTYPE_ROW_NORMAL); Header child3 = new Header(KEY_FOREIGN_SCHOOLS, Header.HEADERTYPE_ROW_NORMAL); Header child4 = new Header(KEY_SUM, Header.HEADERTYPE_ROW_SUM); h.setChild(0, child0); h.setChild(1, child1); h.setChild(2, child2); h.setChild(3, child3); h.setChild(4, child4); headers[0] = h; h = new Header(KEY_COMPULSORY_SCHOOLS, Header.HEADERTYPE_ROW_HEADER, 4); child0 = new Header(KEY_NACKA_COMMUNE, Header.HEADERTYPE_ROW_NORMAL); child1 = new Header(KEY_OTHER_COMMUNES, Header.HEADERTYPE_ROW_NORMAL); child2 = new Header(KEY_PRIVATE_SCHOOLS, Header.HEADERTYPE_ROW_NORMAL); child3 = new Header(KEY_SUM, Header.HEADERTYPE_ROW_SUM); h.setChild(0, child0); h.setChild(1, child1); h.setChild(2, child2); h.setChild(3, child3); headers[1] = h; h = new Header(KEY_TOTAL, Header.HEADERTYPE_ROW_TOTAL); headers[2] = h; return headers; } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#buildColumnHeaders() */ protected Header[] buildColumnHeaders() { Header[] headers = new Header[9]; Header h = new Header(KEY_SCHOOL_YEAR_F, Header.HEADERTYPE_COLUMN_NORMAL); headers[0] = h; h = new Header(KEY_SCHOOL_YEAR, Header.HEADERTYPE_COLUMN_HEADER, 3); Header child0 = new Header(KEY_SCHOOL_YEAR_1, Header.HEADERTYPE_COLUMN_NORMAL); Header child1 = new Header(KEY_SCHOOL_YEAR_2, Header.HEADERTYPE_COLUMN_NORMAL); Header child2 = new Header(KEY_SCHOOL_YEAR_3, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); h.setChild(1, child1); h.setChild(2, child2); headers[1] = h; h = new Header(KEY_SUM, Header.HEADERTYPE_COLUMN_HEADER, 1); child0 = new Header(KEY_SUM_1_3, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); headers[2] = h; h = new Header(KEY_SCHOOL_YEAR, Header.HEADERTYPE_COLUMN_HEADER, 3); child0 = new Header(KEY_SCHOOL_YEAR_4, Header.HEADERTYPE_COLUMN_NORMAL); child1 = new Header(KEY_SCHOOL_YEAR_5, Header.HEADERTYPE_COLUMN_NORMAL); child2 = new Header(KEY_SCHOOL_YEAR_6, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); h.setChild(1, child1); h.setChild(2, child2); headers[3] = h; h = new Header(KEY_SUM, Header.HEADERTYPE_COLUMN_HEADER, 1); child0 = new Header(KEY_SUM_4_6, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); headers[4] = h; h = new Header(KEY_SCHOOL_YEAR, Header.HEADERTYPE_COLUMN_HEADER, 4); child0 = new Header(KEY_SCHOOL_YEAR_7, Header.HEADERTYPE_COLUMN_NORMAL); child1 = new Header(KEY_SCHOOL_YEAR_8, Header.HEADERTYPE_COLUMN_NORMAL); child2 = new Header(KEY_SCHOOL_YEAR_9, Header.HEADERTYPE_COLUMN_NORMAL); Header child3 = new Header(KEY_SCHOOL_YEAR_10, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); h.setChild(1, child1); h.setChild(2, child2); h.setChild(3, child3); headers[5] = h; h = new Header(KEY_SUM, Header.HEADERTYPE_COLUMN_HEADER, 1); child0 = new Header(KEY_SUM_7_10, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); headers[6] = h; h = new Header(KEY_TOTAL, Header.HEADERTYPE_COLUMN_HEADER, 1); child0 = new Header(KEY_TOTAL_1_10, Header.HEADERTYPE_COLUMN_NORMAL); h.setChild(0, child0); headers[7] = h; h = new Header(KEY_SIX_YEARS_STUDENTS, Header.HEADERTYPE_COLUMN_NORMAL); headers[8] = h; return headers; } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#buildCells() */ protected void buildCells() { for (int column = 0; column < getColumnSize(); column++) { int row = 0; int columnMethod = 0; Object columnParameter = null; switch (column) { case 0: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "F"; break; case 1: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "1"; break; case 2: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "2"; break; case 3: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "3"; break; case 4: columnMethod = COLUMN_METHOD_SUM_1_3; columnParameter = null; break; case 5: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "4"; break; case 6: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "5"; break; case 7: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "6"; break; case 8: columnMethod = COLUMN_METHOD_SUM_4_6; columnParameter = null; break; case 9: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "7"; break; case 10: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "8"; break; case 11: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "9"; break; case 12: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "10"; break; case 13: columnMethod = COLUMN_METHOD_SUM_7_10; columnParameter = null; break; case 14: columnMethod = COLUMN_METHOD_TOTAL_1_10; columnParameter = null; break; case 15: columnMethod = COLUMN_METHOD_SCHOOL_YEAR; columnParameter = "0"; break; } Cell cell = new Cell(this, row, column, ROW_METHOD_ELEMENTARY_NACKA_COMMUNE, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_ELEMENTARY_OTHER_COMMUNES, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_ELEMENTARY_PRIVATE_SCHOOLS, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_ELEMENTARY_FOREIGN_SCHOOLS, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_ELEMENTARY_SUM, columnMethod, null, columnParameter, Cell.CELLTYPE_SUM); setCell(row, column, cell); if (columnParameter != null) { columnParameter = "S" + columnParameter; } row++; cell = new Cell(this, row, column, ROW_METHOD_COMPULSORY_NACKA_COMMUNE, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_COMPULSORY_OTHER_COMMUNES, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_COMPULSORY_PRIVATE_SCHOOLS, columnMethod, null, columnParameter, Cell.CELLTYPE_NORMAL); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_COMPULSORY_SUM, columnMethod, null, columnParameter, Cell.CELLTYPE_SUM); setCell(row, column, cell); row++; cell = new Cell(this, row, column, ROW_METHOD_TOTAL, columnMethod, null, columnParameter, Cell.CELLTYPE_TOTAL); setCell(row, column, cell); row++; } } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#calculate() */ protected float calculate(Cell cell) throws RemoteException { float value = 0f; String schoolYearName = (String) cell.getColumnParameter(); if (cell.getColumnMethod() == COLUMN_METHOD_SCHOOL_YEAR) { switch (cell.getRowMethod()) { case ROW_METHOD_ELEMENTARY_NACKA_COMMUNE: value = getElementaryNackaCommunePlacementCount(schoolYearName); break; case ROW_METHOD_ELEMENTARY_OTHER_COMMUNES: value = getElementaryOtherCommunesPlacementCount(schoolYearName); break; case ROW_METHOD_ELEMENTARY_PRIVATE_SCHOOLS: value = getElementaryPrivateSchoolPlacementCount(schoolYearName); break; case ROW_METHOD_ELEMENTARY_FOREIGN_SCHOOLS: value = getElementaryForeignSchoolPlacementCount(schoolYearName); break; case ROW_METHOD_ELEMENTARY_SUM: for (int i = 0; i < 4; i++) { value += getCell(i, cell.getColumn()).getFloatValue(); } break; case ROW_METHOD_COMPULSORY_NACKA_COMMUNE: value = getCompulsoryNackaCommunePlacementCount(schoolYearName); break; case ROW_METHOD_COMPULSORY_OTHER_COMMUNES: value = getCompulsoryOtherCommunesPlacementCount(schoolYearName); break; case ROW_METHOD_COMPULSORY_PRIVATE_SCHOOLS: value = getCompulsoryPrivateSchoolPlacementCount(schoolYearName); break; case ROW_METHOD_COMPULSORY_SUM: for (int i = 5; i < 8; i++) { value += getCell(i, cell.getColumn()).getFloatValue(); } break; case ROW_METHOD_TOTAL: value = getCell(4, cell.getColumn()).getFloatValue() + getCell(8, cell.getColumn()).getFloatValue(); break; } } else { switch (cell.getColumnMethod()) { case COLUMN_METHOD_SUM_1_3: for (int i = 1; i < 4; i++) { value += getCell(cell.getRow(), i).getFloatValue(); } break; case COLUMN_METHOD_SUM_4_6: for (int i = 5; i < 8; i++) { value += getCell(cell.getRow(), i).getFloatValue(); } break; case COLUMN_METHOD_SUM_7_10: for (int i = 9; i < 13; i++) { value += getCell(cell.getRow(), i).getFloatValue(); } break; case COLUMN_METHOD_TOTAL_1_10: value = getCell(cell.getRow(), 4).getFloatValue() + getCell(cell.getRow(), 8).getFloatValue() + getCell(cell.getRow(), 13).getFloatValue(); break; } } return value; } /** * @see se.idega.idegaweb.commune.school.report.business.ReportModel#getReportTitleLocalizationKey() */ public String getReportTitleLocalizationKey() { return KEY_REPORT_TITLE; } /** * Returns the number of student placements for elementary schools * in Nacka commune for the specified school year. * Only students in Nacka commune are counted. */ protected int getElementaryNackaCommunePlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_NACKA_COMMUNE); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyNackaSchools(); query.setOnlyCommuneSchools(); query.setNotForeignSchools(); query.setSchoolType(); // parameter 1 query.setSchoolYearName(); // parameter 2 query.prepare(); setQuery(QUERY_NACKA_COMMUNE, query); } if (schoolYearName.equals("F")) { query.setInt(1, rb.getPreSchoolClassTypeId()); } else { query.setInt(1, rb.getElementarySchoolTypeId()); } query.setString(2, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_NACKA_COMMUNE_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyNackaSchools(); query.setOnlyCommuneSchools(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setNotForeignSchools(); query.setSchoolYearName("1"); query.setSchoolTypeElementarySchool(); query.prepare(); setQuery(QUERY_NACKA_COMMUNE_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for elementary schools * outside Nacka commune for the specified school year. * Only students in Nacka commune are counted. */ protected int getElementaryOtherCommunesPlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_OTHER_COMMUNES); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlySchoolsInOtherCommunes(); query.setOnlyCommuneSchools(); query.setNotForeignSchools(); query.setSchoolType(); // parameter 1 query.setSchoolYearName(); // parameter 2 query.prepare(); setQuery(QUERY_OTHER_COMMUNES, query); } if (schoolYearName.equals("F")) { query.setInt(1, rb.getPreSchoolClassTypeId()); } else { query.setInt(1, rb.getElementarySchoolTypeId()); } query.setString(2, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_OTHER_COMMUNES_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlySchoolsInOtherCommunes(); query.setOnlyCommuneSchools(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setNotForeignSchools(); query.setSchoolYearName("1"); query.setSchoolTypeElementarySchool(); query.prepare(); setQuery(QUERY_OTHER_COMMUNES_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for elementary private schools * for the specified school year. * Only students in Nacka commune are counted. */ protected int getElementaryPrivateSchoolPlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_PRIVATE); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyPrivateSchools(); query.setNotForeignSchools(); query.setSchoolType(); // parameter 1 query.setSchoolYearName(); // parameter 2 query.prepare(); setQuery(QUERY_PRIVATE, query); } if (schoolYearName.equals("F")) { query.setInt(1, rb.getPreSchoolClassTypeId()); } else { query.setInt(1, rb.getElementarySchoolTypeId()); } query.setString(2, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_PRIVATE_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setOnlyPrivateSchools(); query.setNotForeignSchools(); query.setSchoolYearName("1"); query.setSchoolTypeElementarySchool(); query.prepare(); setQuery(QUERY_PRIVATE_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for foreign schools * for the specified school year. * Only students in Nacka commune are counted. */ protected int getElementaryForeignSchoolPlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_FOREIGN); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyForeignSchools(); query.setSchoolType(); // parameter 1 query.setSchoolYearName(); // parameter 2 query.prepare(); setQuery(QUERY_FOREIGN, query); } if (schoolYearName.equals("F")) { query.setInt(1, rb.getPreSchoolClassTypeId()); } else { query.setInt(1, rb.getElementarySchoolTypeId()); } query.setString(2, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_FOREIGN_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setOnlyForeignSchools(); query.setSchoolYearName("1"); query.setSchoolTypeElementarySchool(); query.prepare(); setQuery(QUERY_FOREIGN_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for compulsory schools * in Nacka commune for the specified school year. * Only students in Nacka commune are counted. */ protected int getCompulsoryNackaCommunePlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_COMPULSORY_NACKA); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyNackaSchools(); query.setOnlyCommuneSchools(); query.setNotPrivateSchools(); query.setNotForeignSchools(); query.setSchoolTypeCompulsorySchool(); query.setSchoolYearName(); // parameter 1 query.prepare(); setQuery(QUERY_COMPULSORY_NACKA, query); } if (schoolYearName.equals("F")) { return 0; } query.setString(1, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_COMPULSORY_NACKA_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyNackaSchools(); query.setOnlyCommuneSchools(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setNotPrivateSchools(); query.setNotForeignSchools(); query.setSchoolYearName("S1"); query.setSchoolTypeCompulsorySchool(); query.prepare(); setQuery(QUERY_COMPULSORY_NACKA_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for compulsory schools * outside Nacka commune for the specified school year. * Only students in Nacka commune are counted. */ protected int getCompulsoryOtherCommunesPlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_COMPULSORY_OTHER_COMMUNES); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlySchoolsInOtherCommunes(); query.setOnlyCommuneSchools(); query.setNotPrivateSchools(); query.setNotForeignSchools(); query.setSchoolTypeCompulsorySchool(); query.setSchoolYearName(); // parameter 1 query.prepare(); setQuery(QUERY_COMPULSORY_OTHER_COMMUNES, query); } if (schoolYearName.equals("F")) { return 0; } query.setString(1, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_COMPULSORY_OTHER_COMMUNES_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlySchoolsInOtherCommunes(); query.setOnlyCommuneSchools(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setNotPrivateSchools(); query.setNotForeignSchools(); query.setSchoolYearName("S1"); query.setSchoolTypeCompulsorySchool(); query.prepare(); setQuery(QUERY_COMPULSORY_OTHER_COMMUNES_6_YEAR_STUDENTS, query); } } return query.execute(); } /** * Returns the number of student placements for compulsory private schools * for the specified school year. * Only students in Nacka commune are counted. */ protected int getCompulsoryPrivateSchoolPlacementCount(String schoolYearName) throws RemoteException { PreparedQuery query = null; if (!schoolYearName.equals("0")) { ReportBusiness rb = getReportBusiness(); query = getQuery(QUERY_COMPULSORY_PRIVATE); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(rb.getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyPrivateSchools(); query.setNotForeignSchools(); query.setSchoolTypeCompulsorySchool(); query.setSchoolYearName(); // parameter 1 query.prepare(); setQuery(QUERY_COMPULSORY_PRIVATE, query); } if (schoolYearName.equals("F")) { return 0; } query.setString(1, schoolYearName); } else { // 6 years old students query = getQuery(QUERY_COMPULSORY_PRIVATE_6_YEAR_STUDENTS); if (query == null) { query = new PreparedQuery(getConnection()); query.setSelectCountDistinctUsers(); query.setPlacements(getReportBusiness().getSchoolSeasonId()); query.setOnlyNackaCitizens(); query.setOnlyStudentsBorn(getReportBusiness().getSchoolSeasonStartYear() - 6); query.setOnlyPrivateSchools(); query.setNotForeignSchools(); query.setSchoolYearName("S1"); query.setSchoolTypeCompulsorySchool(); query.prepare(); setQuery(QUERY_COMPULSORY_PRIVATE_6_YEAR_STUDENTS, query); } } return query.execute(); } }