e.printStackTrace();
Debug.err(e.toString());
    public static Vector parseCallerData2(String data,            FritzBoxFirmware firmware, String countryPrefix,            String countryCode, String areaPrefix, String areaCode,            JFritz jfritz) {        Vector list = new Vector();        data = removeDuplicateWhitespace(data);        Pattern p;        Debug.msg(2, "FirmwareMajorVersion: "                + firmware.getMajorFirmwareVersion());        Debug.msg(2, "FirmwareMinorVersion: "                + firmware.getMinorFirmwareVersion());        if (firmware.getMajorFirmwareVersion() == 3                && firmware.getMinorFirmwareVersion() < 42) {            p = Pattern.compile(PATTERN_LIST_OLD);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NUMBER] = 3;            calllist_indizes[PORT] = 4;            calllist_indizes[DURATION] = 5;        } else if (firmware.getMajorFirmwareVersion() == 3                && (firmware.getMinorFirmwareVersion() >= 42)                && (firmware.getMinorFirmwareVersion() < 85)) {            p = Pattern.compile(PATTERN_LIST_42);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NUMBER] = 3;            calllist_indizes[PORT] = 4;            calllist_indizes[ROUTE] = 5;            calllist_indizes[DURATION] = 6;        } else if (firmware.getMajorFirmwareVersion() == 3                && (firmware.getMinorFirmwareVersion() >= 85)                && (firmware.getMinorFirmwareVersion() < 87)) {            p = Pattern.compile(PATTERN_LIST_85);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NUMBER] = 3;            calllist_indizes[PORT] = 4;            calllist_indizes[ROUTE] = 5;            calllist_indizes[DURATION] = 6;        } else if ((firmware.getMajorFirmwareVersion() == 3 && firmware                .getMinorFirmwareVersion() >= 87)                || (firmware.getMajorFirmwareVersion() == 4 && firmware                        .getMinorFirmwareVersion() < 3)) {            p = Pattern.compile(PATTERN_LIST_87);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NUMBER] = 3;            calllist_indizes[PORT] = 4;            calllist_indizes[ROUTE] = 5;            calllist_indizes[DURATION] = 6;        } else {            System.err.println("Neues Pattern");            p = Pattern.compile(PATTERN_LIST_04_03);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NAME] = 3;            calllist_indizes[NUMBER] = 4;            calllist_indizes[PORT] = 5;            calllist_indizes[ROUTE] = 6;            calllist_indizes[DURATION] = 7;        }        Matcher m = p.matcher(data);        while (m.find()) {            try {                // TODO: Name ausslesen?                CallType symbol = new CallType(Byte.parseByte(m                        .group(calllist_indizes[CALLTYPE])));                String port = m.group(calllist_indizes[PORT]);                PhoneNumber number = createAreaNumber(m                        .group(calllist_indizes[NUMBER]), countryPrefix,                        countryCode, areaPrefix, areaCode, jfritz);                Date date = new SimpleDateFormat("dd.MM.yy HH:mm").parse(m                        .group(calllist_indizes[DATE]));                String route = "";                if (calllist_indizes[ROUTE] != -1) {                    String[] routeStrings = m.group(calllist_indizes[ROUTE])                            .split(",");                    routeStrings[0] = routeStrings[0].replaceAll("\\\"", ""); // Alle                    // "                    // entfernen                    routeStrings[1] = routeStrings[1].replaceAll("\\\"", ""); // Alle                    // "                    // entfernen                    if (routeStrings[1].equals("")) {                        route = routeStrings[0]; // (Analoge??)                        // Festnetznummer                    } else if (routeStrings[1].equals("0")) {                        route = routeStrings[0]; // Festnetznummer                    } else if (routeStrings[1].equals("1")) {                        route = "SIP" + routeStrings[0]; // VoIP-Nummer                    } else                        Debug                                .err("Fehler in parseCallerData: Konnte Route nicht auflsen: "                                        + m.group(calllist_indizes[ROUTE]));                }                String[] durationStrings = m.group(calllist_indizes[DURATION])                        .split(":");                int duration = 0;                if (durationStrings.length == 1) {                    duration = Integer.parseInt(durationStrings[0]);                } else                    duration = Integer.parseInt(durationStrings[0]) * 3600                            + Integer.parseInt(durationStrings[1]) * 60;                list.add(new Call(jfritz, symbol, date, number, port, route,                        duration));            } catch (ParseException e) {                e.printStackTrace();            }        }        return list;    }