Ejemplo n.º 1
0
  @Override
  public void fill(Uebergabeblatt bbzr, Collection<FetchPlan> plans) {
    if (log.isDebugEnabled()) log.debug("Entering BbzrServiceImpl:fill()");

    if (plans.contains(FetchPlan.BBZR_HEADER)
        || plans.contains(FetchPlan.UEB_HEADER_SENDER)
        || plans.contains(FetchPlan.UEB_HEADER_EMPFAENGER)) {
      Hibernate.initialize(bbzr.getHeader());

      if (plans.contains(FetchPlan.UEB_HEADER_SENDER) && bbzr.getHeader() != null)
        Hibernate.initialize(bbzr.getHeader().getSender());
      if (plans.contains(FetchPlan.UEB_HEADER_EMPFAENGER) && bbzr.getHeader() != null) {
        Header h = bbzr.getHeader();
        Hibernate.initialize(h.getEmpfaenger());
      }
    }

    if (plans.contains(FetchPlan.BBZR_BAUMASSNAHMEN)) {
      Hibernate.initialize(bbzr.getMassnahmen());
      for (Massnahme m : bbzr.getMassnahmen()) {
        if (m == null) continue;

        if (plans.contains(FetchPlan.ZVF_MN_VERSION)) {
          Hibernate.initialize(m.getVersion());
        }
        if (plans.contains(FetchPlan.ZVF_MN_STRECKEN)) {
          Hibernate.initialize(m.getStrecke());

          if (plans.contains(FetchPlan.ZVF_MN_STRECKE_STRECKEVZG)) {
            StreckeService streckeService = EasyServiceFactory.getInstance().createStreckeService();
            streckeService.fill(m.getStrecke(), plans);
          }
        }
        if (plans.contains(FetchPlan.ZVF_MN_BBPSTRECKE)) {
          Hibernate.initialize(m.getBbp());
        }
        if (plans.contains(FetchPlan.ZVF_MN_ALLG_REGELUNGEN)) {
          Hibernate.initialize(m.getAllgregelungen());
        }
        if (plans.contains(FetchPlan.BBZR_MN_ZUEGE)) {
          Hibernate.initialize(m.getZug());
          if (m.getZug() != null) {
            // uebergabeblattspezifische fetchplans entfernen
            FetchPlan[] newFetchPlans = new FetchPlan[0];
            List<FetchPlan> newPlans = new ArrayList<FetchPlan>(plans);
            newPlans.remove(FetchPlan.UEB_MN_ZUEGE);
            newPlans.remove(FetchPlan.UEB_KNOTENZEITEN);
            newPlans.remove(FetchPlan.UEB_BEARBEITUNGSSTATUS);
            newFetchPlans = newPlans.toArray(newFetchPlans);
            ZugService zugService = EasyServiceFactory.getInstance().createZugService();
            zugService.fill(m.getZug(), newFetchPlans);
          }
        }
      }
    }
  }