Пример #1
0
 // liefert Namen des vorherigen Fahrtenbuchs, oder "" wenn nicht vorhanden
 // absolut=true gibt immer einen absoluten Dateinamen zurück; absolut=false gibt den Namen so
 // zurück,
 // wie er im FB gespeichert ist (also nicht *zwangsläufig* relativ!)
 public String getPrevFb(boolean absolut) {
   if (prevFb != null && prevFb.equals("")) return prevFb;
   if (prevFb != null || (openFile() && readEinstellungen() && closeFile() && nextFb != null))
     if (absolut) return EfaUtil.makeFullPath(EfaUtil.getPathOfFile(dat), prevFb);
     else return prevFb;
   return "";
 }
Пример #2
0
  // Einstellungen aus dem Fahrtenbuch auslesen
  public boolean readEinstellungen() {
    String s;
    fbDaten.bootDatei = "boote.efbb";
    fbDaten.mitgliederDatei = "mitglieder.efbm";
    fbDaten.zieleDatei = "ziele.efbz";
    fbDaten.statistikDatei = "statistik.efbs";
    try {
      while ((s = freadLine()) != null && !s.startsWith("##ENDE_KONFIG")) {
        s = s.trim();
        if (s.startsWith("BOOTE=")) fbDaten.bootDatei = s.substring(6, s.length());
        if (s.startsWith("MITGLIEDER=")) fbDaten.mitgliederDatei = s.substring(11, s.length());
        if (s.startsWith("ZIELE=")) fbDaten.zieleDatei = s.substring(6, s.length());
        if (s.startsWith("STATISTIK=")) fbDaten.statistikDatei = s.substring(10, s.length());
        if (s.startsWith("VORHERIGESFB=")) prevFb = s.substring(13, s.length());
        if (s.startsWith("NAECHSTESFB=")) nextFb = s.substring(12, s.length());
        if (s.startsWith("NAMENSANGABEN="))
          fbDaten.erstVorname = s.substring(14, s.length()).equals("VORNACH");
        if (s.startsWith("STATUS1=")) { // aus Kompatibilität zu FBs von vor 090
          String t = s.substring(8, s.length());
          if (!t.endsWith(
              ","
                  + Daten.efaTypes.getValue(
                      EfaTypes.CATEGORY_STATUS, EfaTypes.TYPE_STATUS_GUEST))) {
            t =
                t
                    + ","
                    + Daten.efaTypes.getValue(EfaTypes.CATEGORY_STATUS, EfaTypes.TYPE_STATUS_GUEST);
          }
          fbDaten.status = EfaUtil.statusList2Arr(t);
        }
        if (s.startsWith("STATUS=")) {
          String t = s.substring(7, s.length());
          fbDaten.status = EfaUtil.statusList2Arr(t);
        }
        if (s.startsWith("ANZMITGLIEDER=")) {
          String t = s.substring(14, s.length());
          fbDaten.anzMitglieder = EfaUtil.string2int(t, 0);
        }

        if (s.startsWith("MEHRTAGESFAHRT=")) {
          String t = s.substring(15, s.length());
          DatenFelder d = new DatenFelder(6, t);
          Mehrtagesfahrt m =
              new Mehrtagesfahrt(
                  d.get(0),
                  d.get(1),
                  d.get(2),
                  EfaUtil.string2int(d.get(3), 1),
                  d.get(4),
                  d.get(5).equals("+"));
          mehrtagesfahrten.put(m.name, m);
        }
      }
    } catch (IOException e) {
      errReadingFile(dat, e.getMessage());
      return false;
    }
    return true;
  }
Пример #3
0
 public int compareTo(Object o) throws ClassCastException {
   MtourStrings b = (MtourStrings) o;
   if (this.start == null || this.ende == null || b.start == null || b.ende == null) return 0;
   if (EfaUtil.secondDateIsAfterFirst(this.start, b.start)) return -1;
   if (!this.start.equals(b.start)) return 1;
   if (EfaUtil.secondDateIsAfterFirst(this.ende, b.ende)) return -1;
   if (!this.ende.equals(b.ende)) return 1;
   if (this.name == null || b.name == null) return 0;
   return this.name.compareTo(b.name);
 }
Пример #4
0
 // Ende des Dokuments
 public void endDocument() {
   try {
     f.close();
   } catch (IOException e) {
     EfaUtil.foo();
   }
 }
Пример #5
0
 // Anfang des Dokuments
 public void startDocument() {
   try {
     f.write("<?xml version=\"1.0\" encoding=\"" + Daten.ENCODING_UTF + "\"?>\n");
   } catch (IOException e) {
     EfaUtil.foo();
   }
 }
Пример #6
0
  // Zusatzdatenbanken lesen und bei neuErstellen=true ggf. ohne Nachfrage neu erstellen
  public void readZusatzdatenbanken(boolean neuErstellen) {
    String fbPath = EfaUtil.getPathOfFile(this.dat);

    // Boote einlesen
    if (fbDaten.bootDatei.equals("")) fbDaten.boote = null;
    else {
      fbDaten.boote = new Boote(EfaUtil.makeFullPath(fbPath, fbDaten.bootDatei));
      if (DONTEVERWRITE) {
        fbDaten.boote.dontEverWrite();
      }
      if (neuErstellen && !EfaUtil.canOpenFile(fbDaten.boote.getFileName()))
        fbDaten.boote.writeFile();
      if (!fbDaten.boote.readFile()) fbDaten.bootDatei = null;
    }

    // Mitglieder einlesen
    if (fbDaten.mitgliederDatei.equals("")) fbDaten.mitglieder = null;
    else {
      fbDaten.mitglieder = new Mitglieder(EfaUtil.makeFullPath(fbPath, fbDaten.mitgliederDatei));
      if (DONTEVERWRITE) {
        fbDaten.mitglieder.dontEverWrite();
      }
      if (neuErstellen && !EfaUtil.canOpenFile(fbDaten.mitglieder.getFileName()))
        fbDaten.mitglieder.writeFile();
      if (!fbDaten.mitglieder.readFile()) fbDaten.mitgliederDatei = null;
    }

    // Ziele einlesen
    if (fbDaten.zieleDatei.equals("")) fbDaten.ziele = null;
    else {
      fbDaten.ziele = new Ziele(EfaUtil.makeFullPath(fbPath, fbDaten.zieleDatei));
      if (DONTEVERWRITE) {
        fbDaten.ziele.dontEverWrite();
      }
      if (neuErstellen && !EfaUtil.canOpenFile(fbDaten.ziele.getFileName()))
        fbDaten.ziele.writeFile();
      if (!fbDaten.ziele.readFile()) fbDaten.zieleDatei = null;
    }

    // Statistiken einlesen
    if (fbDaten.statistikDatei.equals("")) fbDaten.statistik = null;
    else {
      fbDaten.statistik = new StatSave(EfaUtil.makeFullPath(fbPath, fbDaten.statistikDatei));
      if (DONTEVERWRITE) {
        fbDaten.statistik.dontEverWrite();
      }
      if (neuErstellen && !EfaUtil.canOpenFile(fbDaten.statistik.getFileName()))
        fbDaten.statistik.writeFile();
      if (!fbDaten.statistik.readFile()) fbDaten.statistikDatei = null;
    }
  }
Пример #7
0
 // Einträge auf Gültigkeit prüfen
 public void validateValues(DatenFelder d) {
   if (d.get(LFDNR).trim().equals(""))
     return; // überspringen, da leere Keys ohnehin nicht hinzugefügt werden
   d.set(LFDNR, EfaUtil.getLfdNr(d.get(LFDNR)));
   TMJ tmj = EfaUtil.correctDate(d.get(DATUM), 1, 1, 1970);
   d.set(DATUM, tmj.tag + "." + tmj.monat + "." + tmj.jahr);
   d.set(BOOTSKM, EfaUtil.zehntelInt2String(EfaUtil.zehntelString2Int(d.get(BOOTSKM))));
   d.set(MANNSCHKM, EfaUtil.zehntelInt2String(EfaUtil.zehntelString2Int(d.get(MANNSCHKM))));
 }
Пример #8
0
 public int runXmlImport() {
   DataImportXmlParser responseHandler = null;
   try {
     XMLReader parser = EfaUtil.getXMLReader();
     responseHandler = new DataImportXmlParser(this, dataAccess);
     parser.setContentHandler(responseHandler);
     parser.parse(new InputSource(new FileInputStream(filename)));
   } catch (Exception e) {
     logInfo(e.toString());
     errorCount++;
     Logger.log(e);
     if (Daten.isGuiAppl()) {
       Dialog.error(e.toString());
     }
   }
   return (responseHandler != null ? responseHandler.getImportedRecordsCount() : 0);
 }
Пример #9
0
  // Fahrtenbuch schreiben
  public synchronized boolean writeEinstellungen() {
    try {
      fwrite("BOOTE=" + fbDaten.bootDatei + "\n");
      fwrite("MITGLIEDER=" + fbDaten.mitgliederDatei + "\n");
      fwrite("ZIELE=" + fbDaten.zieleDatei + "\n");
      fwrite("STATISTIK=" + fbDaten.statistikDatei + "\n");
      if (prevFb != null) fwrite("VORHERIGESFB=" + prevFb + "\n");
      else fwrite("VORHERIGESFB=\n");
      if (nextFb != null) fwrite("NAECHSTESFB=" + nextFb + "\n");
      else fwrite("NAECHSTESFB=\n");
      if (fbDaten.erstVorname) fwrite("NAMENSANGABEN=VORNACH\n");
      else fwrite("NAMENSANGABEN=NACHVOR\n");
      fwrite("STATUS=" + EfaUtil.arr2KommaList(fbDaten.status) + "\n");
      fwrite("ANZMITGLIEDER=" + fbDaten.anzMitglieder + "\n");

      Object[] keys = mehrtagesfahrten.keySet().toArray();
      for (int i = 0; i < keys.length; i++) {
        Mehrtagesfahrt m = (Mehrtagesfahrt) mehrtagesfahrten.get(keys[i]);
        fwrite(
            "MEHRTAGESFAHRT="
                + m.name
                + "|"
                + m.start
                + "|"
                + m.ende
                + "|"
                + m.rudertage
                + "|"
                + m.gewaesser
                + "|"
                + (m.isEtappen ? "+" : "-")
                + "\n");
      }

      fwrite("##ENDE_KONFIG\n");
    } catch (IOException e) {
      errWritingFile(dat);
      return false;
    }
    return true;
  }
Пример #10
0
  // Beginn eines Element-Tags
  public void startElement(String uri, String localName, String qname, Attributes atts) {
    try {
      if (uri.equals("http://www.nmichael.de/elwiz")) {

        // Elemente des elwiz-Namensraums

        if (!localName.equals("option")) { // Hauptelement
          // Namen ermitteln
          String name = null;
          for (int i = 0; i < atts.getLength(); i++)
            if (atts.getLocalName(i).equals("name")) name = atts.getValue(i);

          // Element suchen
          for (int i = 0; i < options.size(); i++)
            if (((ElwizOption) options.get(i)).name.equals(name)) {
              this.option = (ElwizOption) options.get(i);
              break;
            }

        } else { // Unterelement

          // Position des Unterelements für Zugriff auf options-Vektor ermitteln
          int pos = -1;
          for (int i = 0; i < atts.getLength(); i++)
            if (atts.getLocalName(i).equals("pos")) pos = EfaUtil.string2int(atts.getValue(i), -1);

          if (option != null)
            switch (option.type) {
              case ElwizOption.O_OPTIONAL: // optional
                JCheckBox o1 = (JCheckBox) option.components.get(pos);
                if (!o1.isSelected()) skip = true;
                break;
              case ElwizOption.O_SELECT: // select
                JRadioButton o2 = (JRadioButton) option.components.get(pos);
                if (!o2.isSelected()) skip = true;
                ElwizSingleOption eso = (ElwizSingleOption) option.options.get(pos);
                if (!skip && eso.value != null) f.write(eso.value);
                break;
              case ElwizOption.O_VALUE: // value
                JTextField o3 = (JTextField) option.components.get(pos);
                f.write(o3.getText().trim());
                break;
            }
        }

      } else {

        // Elemente des XSLT-Namensraums

        if (skip) return; // Element unterdrücken?

        f.write("<" + qname);
        for (int i = 0; i < atts.getLength(); i++) {
          f.write(
              " "
                  + atts.getLocalName(i)
                  + "=\""
                  + EfaUtil.replace(atts.getValue(i), "<", "&lt;", true)
                  + "\"");
        }
        if (localName.equals("stylesheet"))
          f.write(
              " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"");
        f.write(">");
      }
    } catch (IOException e) {
    }
  }
Пример #11
0
  // Dateiformat überprüfen, ggf. konvertieren
  public boolean checkFileFormat() {
    String s;
    try {
      s = freadLine();
      if (s == null || !s.trim().startsWith(kennung)) {

        // KONVERTIEREN: 135 -> 190
        if (s != null && s.trim().startsWith(KENNUNG135)) {
          // @efa1 if (Daten.backup != null) Daten.backup.create(dat,Efa1Backup.CONV,"135");
          iniList(this.dat, 36, 1, true); // Rahmenbedingungen von v1.9.0 schaffen

          if (!readEinstellungen()) return false;
          try {
            while ((s = freadLine()) != null) {
              s = s.trim();
              if (s.equals("") || s.startsWith("#")) continue; // Kommentare ignorieren
              DatenFelder d = constructFields(s);
              String fa = d.get(FAHRTART);
              if (fa.length() == 0) {
                fa = EfaTypes.TYPE_SESSION_NORMAL;
              } else {
                fa = Daten.efaTypes.getTypeForValue(EfaTypes.CATEGORY_SESSION, d.get(FAHRTART));
                if (fa != null && fa.equals(EfaTypes.TYPE_SESSION_TOUR)) {
                  // Bugfix: Als Fahrtart war "Mehrtagesfahrt" eingetragen; dies ist in efa2
                  // ein vorbelegter Begriff. Wenn wir das jetzt zu "TOUR" ändern, geht der
                  // Name der Mehrtagesfahrt verloren, und damit die Metadaten.
                  // Statt dessen müssen wir ein "TOUR:Mehrtagesfahrt" daraus machen!
                  fa = EfaTypes.TYPE_SESSION_TOUR + ":" + d.get(FAHRTART);
                }
                if (fa == null
                    && Daten.efaTypes.isConfigured(
                        EfaTypes.CATEGORY_SESSION, EfaTypes.TYPE_SESSION_TOUR)) {
                  if (d.get(FAHRTART).startsWith("Mehrtagesfahrt: konfigurieren!!")) {
                    fa =
                        CONFIGURE_MTOUR
                            + d.get(FAHRTART).substring("Mehrtagesfahrt: konfigurieren!!".length());
                  } else {
                    fa = EfaTypes.TYPE_SESSION_TOUR + ":" + d.get(FAHRTART);
                  }
                }
              }
              if (fa == null) {
                fa = EfaTypes.TYPE_SESSION_NORMAL;
                /* // @efa1
                Logger.log(Logger.ERROR, Logger.MSG_CSVFILE_ERRORCONVERTING,
                        getFileName() + ": " +
                        International.getMessage("Fehler beim Konvertieren von Eintrag '{key}'!",constructKey(d)) + " " +
                        International.getMessage("Unbekannte Eigenschaft '{original_property}' korrigiert zu '{new_property}'.",
                        d.get(FAHRTART), Daten.efaTypes.getValue(EfaTypes.CATEGORY_SESSION, fa)));
                 */
              }
              d.set(FAHRTART, fa);
              add(d);
            }

          } catch (IOException e) {
            errReadingFile(dat, e.getMessage());
            return false;
          }
          kennung = KENNUNG190;
          if (closeFile()) {
            infSuccessfullyConverted(dat, kennung);
            s = kennung;
          } else errConvertingFile(dat, kennung);
        }

        // FERTIG MIT KONVERTIEREN
        if (s == null || !s.trim().startsWith(KENNUNG190)) {
          errInvalidFormat(dat, EfaUtil.trimto(s, 20));
          fclose(false);
          return true;
        }
      }
    } catch (IOException e) {
      errReadingFile(dat, e.getMessage());
      return false;
    }
    return true;
  }