// 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 ""; }
// 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; }
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); }
// Ende des Dokuments public void endDocument() { try { f.close(); } catch (IOException e) { EfaUtil.foo(); } }
// Anfang des Dokuments public void startDocument() { try { f.write("<?xml version=\"1.0\" encoding=\"" + Daten.ENCODING_UTF + "\"?>\n"); } catch (IOException e) { EfaUtil.foo(); } }
// 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; } }
// 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)))); }
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); }
// 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; }
// 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), "<", "<", 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) { } }
// 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; }