/**
   * Terminates all all high school placements not included in the import (except Nacka Gymnasium
   * placements).
   */
  protected boolean terminateOldPlacements() {
    println("NackaHighSchoolPlacementHandler: Starting termination of old placements...");
    boolean success = true;
    School schoolA = null;
    School schoolB = null;
    School schoolC = null;
    try {
      schoolA =
          schoolHome.findBySchoolName(NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_A);
    } catch (FinderException e) {
      println(
          "NackaHighSchoolPlacementHandler: School '"
              + NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_A
              + "' not found.");
      return false;
    }
    try {
      schoolB =
          schoolHome.findBySchoolName(NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_B);
    } catch (FinderException e) {
      println(
          "NackaHighSchoolPlacementHandler: School '"
              + NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_B
              + "' not found.");
      return false;
    }
    try {
      schoolC =
          schoolHome.findBySchoolName(NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_C);
    } catch (FinderException e) {
      println(
          "NackaHighSchoolPlacementHandler: School '"
              + NackaProgmaPlacementImportFileHandlerBean.SCHOOL_NAME_C
              + "' not found.");
      return false;
    }
    int schoolIdA = ((Integer) schoolA.getPrimaryKey()).intValue();
    int schoolIdB = ((Integer) schoolB.getPrimaryKey()).intValue();
    int schoolIdC = ((Integer) schoolC.getPrimaryKey()).intValue();
    String[] schoolIds =
        new String[] {
          String.valueOf(schoolIdA), String.valueOf(schoolIdB), String.valueOf(schoolIdC)
        };

    SchoolCategory highSchoolCategory = null;
    try {
      highSchoolCategory = schoolBusiness.getCategoryHighSchool();
    } catch (RemoteException e) {
      println("NackaHighSchoolPlacementHandler: High school category not found.");
      return false;
    }

    Collection placements = null;
    try {
      placements =
          schoolClassMemberHome.findActiveByCategorySeasonAndSchools(
              highSchoolCategory, season, schoolIds, true);
    } catch (FinderException e) {
      println("NackaHighSchoolPlacementHandler: Error finding placements.");
      return false;
    }

    Commune defaultCommune = null;
    try {
      defaultCommune =
          ((CommuneBusiness) getServiceInstance(CommuneBusiness.class)).getDefaultCommune();
    } catch (IBOLookupException e1) {
      e1.printStackTrace();
      println("NackaHighSchoolPlacementHandler: Unable to get default commune.");

      return false;
    } catch (RemoteException e1) {
      e1.printStackTrace();

      println("NackaHighSchoolPlacementHandler: Unable to get default commune.");
      return false;
    }

    Iterator iter = placements.iterator();
    IWTimestamp now = IWTimestamp.RightNow();
    now.setAsDate();
    while (iter.hasNext()) {
      SchoolClassMember member = (SchoolClassMember) iter.next();
      IWTimestamp placementDate = null;
      try {
        PlacementImportDate p = placementImportDateHome.findByPrimaryKey(member.getPrimaryKey());
        placementDate = new IWTimestamp(p.getImportDate());
        placementDate.setAsDate();
      } catch (FinderException e) {
      }
      School memberSchool = member.getSchoolClass().getSchool();
      if ((placementDate == null || placementDate.isEarlierThan(now))
          && (memberSchool.getManagementTypeId().equals(SchoolManagementTypeBMPBean.TYPE_COMMUNE))
          && (memberSchool.getCommune().equals(defaultCommune))) {
        member.setRemovedDate(lastDayInPreviousMonth);
        member.store();
        println("Terminating placement with id: " + member.getPrimaryKey());
      }
    }

    println("NackaHighSchoolPlacementHandler: Termination of old placements finished.");
    return success;
  }