public SortedMap<Long, Boolean> berechneZustandsWechselZustand(Long von, Long bis, int jahr)
  {
    // Die Abfrage besitzt eine eigene Zustandsliste
    //ListeZustandsWechsel listeZustandsWechselAbfrage = new ListeZustandsWechsel();
    listeZustandsWechsel = new ListeZustandsWechsel();

    Integer temp = jahr;

    Iterator it1 = jahrVonBis.iterator();
    while (it1.hasNext())
    {
      String s1 = null;
      String s2 = null;

      String[] _jahr = (String[])it1.next();

      long jahre = 0;

      try
      {
        Calendar cal1 = new GregorianCalendar();
        Calendar cal2 = new GregorianCalendar();

        SimpleDateFormat df_jahr = new SimpleDateFormat("dd.MM.yyyy");

        Date dt_jahr = new Date();

        s1 = _jahr[0];
        s2 = _jahr[1];

        if (_jahr[0].contains("*"))
        {

          s1 = _jahr[0].replace("*", temp.toString());

        }

        if (_jahr[1].contains("*"))
        {

          s2 = _jahr[1].replace("*", temp.toString());

        }

        Long def1 = df_jahr.parse(s1).getTime();
        Long def2 = df_jahr.parse(s2).getTime();

        // Definition von-bis
        cal1.setTimeInMillis(def1);
        cal2.setTimeInMillis(def2);

        int vonDef = cal1.get(Calendar.YEAR);
        int bisDef = cal2.get(Calendar.YEAR);

        cal1.setTimeInMillis(von);
        cal2.setTimeInMillis(bis);

        if (jahr < vonDef)
        {

          return listeZustandsWechsel.getListeZustandsWechsel();
          //return listeZustandsWechselAbfrage.getListeZustandsWechsel();

        }

        if (jahr > bisDef)
        {

          return listeZustandsWechsel.getListeZustandsWechsel();
          //return listeZustandsWechselAbfrage.getListeZustandsWechsel();

        }

        SimpleDateFormat df_zeit = new SimpleDateFormat("HH:mm:ss,SSS");

        cal1.setTimeInMillis(def1);
        cal2.setTimeInMillis(def2);

        cal1.set(Calendar.YEAR, temp);
        cal2.set(Calendar.YEAR, temp);

        s1 = df_jahr.format(cal1.getTime());
        s2 = df_jahr.format(cal2.getTime());

        jahre = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR);

      }
      catch (ParseException e)
      {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      // Anzahl der Jahre wird durchlaufen, aber immer eins mehr wie errechnet wurde
      for (int i = 0; i < jahre + 1; i++)
      {

        String[] _zeit = { "00:00:00,000", " 23:59:59,999" };

        try
        {
          Date dt = new Date();

          Calendar cal = new GregorianCalendar();
          Calendar tmp = new GregorianCalendar();

          SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss,SSS");

          dt = df.parse(s1 + " " + _zeit[0]);
          cal.setTime(dt);
          tmp = cal;
          tmp.add(Calendar.YEAR, i);
          cal = tmp;

          listeZustandsWechsel.getListeZustandsWechsel().put(cal.getTimeInMillis(), true);
          //listeZustandsWechselAbfrage.getListeZustandsWechsel().put(cal.getTimeInMillis(), true);

          dt = df.parse(s1 + " " + _zeit[1]);
          cal.setTime(dt);
          tmp = cal;
          tmp.add(Calendar.YEAR, i);
          cal = tmp;

          listeZustandsWechsel.getListeZustandsWechsel().put(cal.getTimeInMillis(), false);
          //listeZustandsWechselAbfrage.getListeZustandsWechsel().put(cal.getTimeInMillis(), false);
          // listeZustandsWechselAbfrage.getListeZustandsWechsel().put(cal.getTimeInMillis()+1, false);

        }
        catch (ParseException e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

      }

    }

    return listeZustandsWechsel.getListeZustandsWechsel();
    //return listeZustandsWechselAbfrage.getListeZustandsWechsel();
  }