e.printStackTrace();
Debug.err(e.toString());
    public static Vector parseCallerData(String data,            FritzBoxFirmware firmware, String countryPrefix,            String countryCode, String areaPrefix, String areaCode,            JFritz jfritz) {        Vector list = new Vector();        Pattern p;        Debug.msg(2, "FirmwareMajorVersion: "                + firmware.getMajorFirmwareVersion());        Debug.msg(2, "FirmwareMinorVersion: "                + firmware.getMinorFirmwareVersion());        if (firmware.getMajorFirmwareVersion() == 4                && firmware.getMinorFirmwareVersion() >= 03) {            p = Pattern.compile(PATTERN_LIST_CSV_NEW);            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;        } else {            p = Pattern.compile(PATTERN_LIST_CSV_OLD);            calllist_indizes[CALLTYPE] = 1;            calllist_indizes[DATE] = 2;            calllist_indizes[NUMBER] = 3;            calllist_indizes[PORT] = 4;            calllist_indizes[ROUTE] = 5;            calllist_indizes[DURATION] = 6;        }        Matcher m = p.matcher(data);        while (m.find()) {            try {                Debug.msg("Found new call: " + m.group(0));                CallType symbol = new CallType(Byte.parseByte(m                        .group(calllist_indizes[CALLTYPE])));                String port = m.group(calllist_indizes[PORT]);                if (port.equals("FON 1")) {                    port = "0";                } else if (port.equals("FON 2")) {                    port = "1";                } else if (port.equals("FON 3")) {                    port = "2";                } else if (port.equals("FON S0")) {                    port = "4";                }                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) {                    route = m.group(calllist_indizes[ROUTE]);                    if (route.startsWith("Internet: ")) {                        Enumeration en = jfritz.getSIPProviderTableModel()                                .getProviderList().elements();                        while (en.hasMoreElements()) {                            SipProvider sipProvider = (SipProvider) en                                    .nextElement();                            if (sipProvider.getNumber().equals(route.substring(10))) {                                route = "SIP" + sipProvider.getProviderID();                                break;                            }                        }                    }                }                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;    }