Debug.msg(3, "Parsing data: " + data);
    public static Vector parseCallerData(String data,            FritzBoxFirmware firmware, String countryPrefix,            String countryCode, String areaPrefix, String areaCode,            JFritz jfritz) {        Vector list = new Vector();        data = removeDuplicateWhitespace(data);        Debug.msg(3, "Parsing data: " + data);        Pattern p;        Debug.msg(2, "FirmwareMinorVersion: "                + firmware.getMinorFirmwareVersion());        if (firmware.getMinorFirmwareVersion() < 42)            p = Pattern.compile(PATTERN_LIST_OLD);        else if ((firmware.getMinorFirmwareVersion() >= 42)                && (firmware.getMinorFirmwareVersion() < 85))            p = Pattern.compile(PATTERN_LIST_42);        else if ((firmware.getMinorFirmwareVersion() >= 85)                 && (firmware.getMinorFirmwareVersion() < 87))             p = Pattern.compile(PATTERN_LIST_85);        else if (firmware.getMinorFirmwareVersion() == 87)            p = Pattern.compile(PATTERN_LIST_87);        else             p = Pattern.compile(PATTERN_LIST_88);                Matcher m = p.matcher(data);        while (m.find()) {            try {                CallType symbol = new CallType(Byte.parseByte(m.group(1)));                String port = m.group(4);                PhoneNumber number = createAreaNumber(m.group(3),                        countryPrefix, countryCode, areaPrefix, areaCode,                        jfritz);                Date date = new SimpleDateFormat("dd.MM.yy HH:mm").parse(m                        .group(2));                String route = "";                int duration = 0;                if (firmware.getMinorFirmwareVersion() < 85) {                    route = m.group(5);                    duration = Integer.parseInt(m.group(6));                } else {                    String[] routeStrings = m.group(5).split(",");                    routeStrings[0] = routeStrings[0].replaceAll("\\\"", ""); // Alle " entfernen                    routeStrings[1] = routeStrings[1].replaceAll("\\\"", ""); // Alle " entfernen                    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(5));                    String[] durationStrings = m.group(6).split(":");                    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;    }