number = new PhoneNumber(field[3], jfritz, Boolean.valueOf(JFritz.getProperty("option.activateDialPrefix")) && (calltype.toInt() == CallType.CALLOUT));
number = new PhoneNumber(field[3]);
	public Call parseCallJFritzCSV(String line) {		String[] field = line.split(PATTERN_CSV);		Call call;		CallType calltype;		Date calldate;		PhoneNumber number;		// check if line has correct amount of entries		if (field.length < 12) {			if (field.length != 1)				Debug.err("Invalid CSV format, incorrect number of fields!"); //$NON-NLS-1$			return null;		}		// Strip those damn quotes		for (int i = 0; i < 12; i++)			field[i] = field[i].substring(1, field[i].length() - 1);		// Call type		// Perhaps it would be nice to standardize the calltype and export		// strings		if (field[0].equals("Incoming")) { //$NON-NLS-1$			calltype = new CallType("call_in"); //$NON-NLS-1$		} else if (field[0].equals("Missed")) { //$NON-NLS-1$			calltype = new CallType("call_in_failed"); //$NON-NLS-1$		} else if (field[0].equals("Outgoing")) { //$NON-NLS-1$			calltype = new CallType("call_out"); //$NON-NLS-1$		} else {			Debug.err("Invalid Call type in CSV entry!"); //$NON-NLS-1$			return null;		}		// Call date and time		if (field[1] != null && field[2] != null) {			try {				calldate = new SimpleDateFormat("dd.MM.yy HH:mm").parse(field[1] + " " + field[2]); //$NON-NLS-1$,  //$NON-NLS-2$			} catch (ParseException e) {				Debug.err("Invalid date format in csv entry!"); //$NON-NLS-1$				return null;			}		} else {			Debug.err("Invalid date format in csv entry!"); //$NON-NLS-1$			return null;		}		// change the port to fit the jfritz naming convention		if (field[5].equals("FON1")) {			field[5] = "0";		} else if (field[5].equals("FON2")) {			field[5] = "1";		} else if (field[5].equals("FON3")) {			field[5] = "2";		} else if (field[5].equals("Durchwahl")) {			field[5] = "3";		} else if (field[5].equals("ISDN")) {			field[5] = "4";		} else if (field[5].equals("DATA")) {			field[5] = "36";		}		// Parse the SIP Provider and save it correctly		if (field[4].startsWith("Internet: ")) {			Enumeration en = jfritz.getSIPProviderTableModel()					.getProviderList().elements();			while (en.hasMoreElements()) {				SipProvider sipProvider = (SipProvider) en.nextElement();				if (sipProvider.getNumber().equals(field[4].substring(10))) {					field[4] = "SIP" + sipProvider.getProviderID();					break;				}			}		}		// Phone number		if (!field[3].equals("")) {			number = new PhoneNumber(field[3], jfritz, 					Boolean.valueOf(JFritz.getProperty("option.activateDialPrefix"))					&& (calltype.toInt() == CallType.CALLOUT));			number.setCallByCall(field[10]);		} else			number = null;		// now make the call object		// TODO: change the order of the Call constructor to fit		// the oder of the csv export function or vice versa!!!		call = new Call(jfritz, calltype, calldate, number, field[5], field[4],				Integer.parseInt(field[6]));		// TODO: perhaps split export function into two functions		// exportCallListCSV() and exportPhoneBookCSV()		// the few entries in the current export format are not complete		// enough to reconstruct the phonebook correctly		call.setComment(field[11]);		return call;	}