@Before
 public void setUp() throws Exception {
   ueb = new Uebergabeblatt();
   initializeNiederlassungen();
   initializeZuege();
   ueb.initializeBeteiligteRb();
   ueb.refreshZugStatusRbEntry();
 }
  @Test
  public void testInitializeBeteiligteRegionalbereiche() {
    ueb.initializeBeteiligteRb();
    Set<Regionalbereich> beteiligteRbs = ueb.getBeteiligteRegionalbereiche();

    assertEquals(2, beteiligteRbs.size());
    assertTrue(beteiligteRbs.contains(new Regionalbereich(rb1)));
    assertTrue(beteiligteRbs.contains(new Regionalbereich(rb2)));
  }
示例#3
0
  @SuppressWarnings("unchecked")
  /*
   * Gibt ACCESS_GRANTED zurueck, wenn der Benutzer eine Rolle hat, die ihm eine der
   * requestedAuthorizations auf die Baumassnahme erlaubt.
   *
   * <pre> requested: baumassnahme_bewerten, granted: baumassnahme_bewerten_alle oder
   * baumassnahme_bewerten_region, wenn die Region dem Benutzer zugeordnet ist </pre>
   */
  public int vote(Authentication authentication, Object object, ConfigAttributeDefinition config) {
    int result = ACCESS_DENIED;

    User user = UserServiceImpl.getCurrentApplicationUser();
    Uebergabeblatt zvf = (Uebergabeblatt) object;
    Iterator iter = config.getConfigAttributes();
    while (iter.hasNext()) { // Schleife über erforderliche Berechtigungen
      ConfigAttribute attribute = (ConfigAttribute) iter.next();
      if (supports(attribute)) {
        GrantedAuthority[] authorities = authentication.getAuthorities();

        // Schleife über vorhandene Berechtigungen
        for (int i = 0; i < authorities.length; i++) {
          if (authorities[i].getAuthority().startsWith(attribute.getAttribute())) {
            if (logger.isDebugEnabled())
              logger.debug(String.format("Found authority %s", authorities[i]));

            // Zentral
            if (authorities[i].getAuthority().endsWith("_ALLE")) result = ACCESS_GRANTED;
            // Regional
            else if (authorities[i].getAuthority().endsWith("_REGIONALBEREICH")) {
              if (attribute.getAttribute().startsWith("ROLE_BBZR_ANLEGEN")) {
                result = ACCESS_GRANTED;
              } else if (user.getRegionalbereich() != null) {
                // MasterRB
                try {
                  String masterRB =
                      zvf.getMassnahmen().iterator().next().getMasterniederlassung().substring(3);
                  if (user.getRegionalbereich().getName().equalsIgnoreCase(masterRB))
                    result = ACCESS_GRANTED;
                } catch (NoSuchElementException e) {
                }
              }
            }
            if (result == ACCESS_GRANTED) break;
          }
        }
      }
    }

    return result;
  }
  @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);
          }
        }
      }
    }
  }
  @Test
  public void testZugstatusRefresh() {
    ueb.initializeBeteiligteRb();
    ueb.refreshZugStatusRbEntry();
    Massnahme m = ueb.getMassnahmen().iterator().next();
    Zug z1 = m.getZug().get(0);
    Zug z2 = m.getZug().get(1);
    Map<Regionalbereich, Boolean> status1 = z1.getBearbeitungsStatusMap();
    Map<Regionalbereich, Boolean> status2 = z2.getBearbeitungsStatusMap();

    assertEquals(2, status1.size());
    assertEquals(2, status2.size());

    Set<Regionalbereich> rbs1 = status1.keySet();
    assertTrue(rbs1.contains(new Regionalbereich(rb1)));
    assertTrue(rbs1.contains(new Regionalbereich(rb2)));

    Set<Regionalbereich> rbs2 = status1.keySet();
    assertTrue(rbs2.contains(new Regionalbereich(rb1)));
    assertTrue(rbs2.contains(new Regionalbereich(rb2)));
  }
  private void initializeNiederlassungen() {
    List<Niederlassung> niederlassungen =
        ueb.getMassnahmen().iterator().next().getFplonr().getNiederlassungen();
    RegionalbereichService rbService = new RegionalbereichServiceImpl();
    List<Regionalbereich> rbs = rbService.findAll();
    List<String> rbNames = RegionalbereichAdapter.getRegionalbereichNames();
    for (Regionalbereich r : rbs) {
      if (rbNames.contains(r.getName())) {
        niederlassungen.add(new Niederlassung(r));
      }
    }

    for (Niederlassung n : niederlassungen) {
      if (n.getRegionalbereich().getName().equals(rb1)
          || n.getRegionalbereich().getName().equals(rb2)) n.setBeteiligt(true);
    }
  }
 @Test
 public void testGetStatusZug2() {
   Zug z2 = ueb.getMassnahmen().iterator().next().getZug().get(0);
   Map<Regionalbereich, Boolean> status = z2.getBearbeitungsStatusMap();
   assertEquals(2, status.size());
 }
 private void initializeZuege() {
   ueb.getMassnahmen().iterator().next().addZug(new Zug());
   ueb.getMassnahmen().iterator().next().addZug(new Zug());
 }