use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class OldDatFileCallImporter method migrateCallFromString.
private ICall migrateCallFromString(String scall, String datePattern) {
if (scall != null && scall.trim().length() == 0)
return null;
try {
StringTokenizer st = new StringTokenizer(scall, "%$");
if (st.countTokens() < 5) {
this.m_logger.warning("Invalid entry found: entry was dropped for migration.");
return null;
}
String state = st.nextToken().trim();
String msn = st.nextToken().trim();
String caller = st.nextToken().trim();
String cip = st.nextToken().trim();
String date = st.nextToken().trim();
// parse MSN
IMsn parsedMSN = this.parseMsn(msn);
ICip parsedCIP = this.parseCip(cip);
IAttribute att = this.parseState(state);
IPhonenumber phone = this.parsePhone(caller);
IName name = this.parseName(caller);
ICaller parsedCaller = PIMRuntime.getInstance().getCallerFactory().createCaller(name, phone);
Date parsedDate = this.parseDate(date, datePattern);
ICall aCall = PIMRuntime.getInstance().getCallFactory().createCall(parsedCaller, parsedMSN, parsedCIP, parsedDate);
if (!att.getName().equalsIgnoreCase("")) {
aCall.setAttribute(att);
}
this.m_logger.info(aCall.toString());
return aCall;
} catch (NoSuchElementException ex) {
this.m_logger.warning("FormatException: migration failed due to incompatible format information.");
} catch (NullPointerException ex) {
this.m_logger.warning("Invalid entry found: entry was dropped for migration.");
}
return null;
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class ConsoleSimulate method execute.
public void execute() {
this.isExecuting = true;
String number = "";
String cip = "";
String msn = "";
if (this.getExecuteParams().length < 2 || this.getExecuteParams().length > 3) {
System.out.println("ERROR: Invalid SIMULATE command.");
System.out.println("USAGE for regular call simulation: SIMULATE <number> <msn> <cip>");
System.out.println("USAGE for CLIR call simulation: SIMULATE <msn> <cip>");
this.isExecuting = false;
return;
}
if (this.getExecuteParams().length == 2) {
msn = this.getExecuteParams()[0];
cip = this.getExecuteParams()[1];
}
if (this.getExecuteParams().length == 3) {
number = this.getExecuteParams()[0];
msn = this.getExecuteParams()[1];
cip = this.getExecuteParams()[2];
}
IEventBroker evtBroker = PIMRuntime.getInstance().getEventBroker();
IPhonenumber phone = PhonenumberAnalyzer.getInstance(getRuntime()).toClirPhonenumber(number);
if (phone != null)
System.out.println("Call detected as CLIR: " + phone.isClired());
if (phone == null) {
phone = PhonenumberAnalyzer.getInstance(getRuntime()).toInternalPhonenumber(number, msn);
if (phone != null)
System.out.println("Call detected as internal: " + number.trim());
}
if (phone == null) {
phone = PhonenumberAnalyzer.getInstance(getRuntime()).toPhonenumber(number, msn);
if (phone != null)
System.out.println("Call detected as external: " + number.trim());
}
IName name = PIMRuntime.getInstance().getCallerFactory().createName("", "");
ICaller aCaller = PIMRuntime.getInstance().getCallerFactory().createCaller(name, phone);
ICip ocip = PIMRuntime.getInstance().getCallFactory().createCip(cip, "");
IMsn omsn = PIMRuntime.getInstance().getCallFactory().createMsn(msn, "");
ICall newCall = PIMRuntime.getInstance().getCallFactory().createCall(aCaller, omsn, ocip);
evtBroker.register(this);
IEvent ev = evtBroker.createEvent(IEventConst.EVENT_TYPE_INCOMINGCALL, newCall);
evtBroker.send(this, ev);
evtBroker.unregister(this);
this.isExecuting = false;
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class MsnManager method createMsn.
public IMsn createMsn(String msn) {
IMsn aMsn = PIMRuntime.getInstance().getCallFactory().createMsn(msn, "");
aMsn.setAdditional(this.getMsnLabel(aMsn));
return aMsn;
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class FritzBoxCallCsv method toCall.
public ICall toCall() {
Logger logger = Logger.getLogger(IJAMConst.DEFAULT_LOGGER);
if (this.m_line == null || this.m_line.trim().length() == 0) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("No call data found in CSV line: " + this.m_line);
return null;
}
/**
* Added 2011/01/05: added do to NumberFormatException in log, remove the header
*
* Format: Typ;Datum;Name;Rufnummer;Nebenstelle;Eigene Rufnummer;Dauer
*/
if (this.m_line.trim().toLowerCase().startsWith("typ;")) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Ignore CSV header line: " + this.m_line);
return null;
}
if (this.m_call == null) {
try {
IRuntime r = PIMRuntime.getInstance();
String[] call = this.m_line.split(";");
if (call.length >= 7) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Tokens in CSV line: " + call.length);
// create msn
IMsn msn = r.getCallFactory().createMsn(getMsn(call[5]), "");
msn.setAdditional(r.getMsnManager().getMsnLabel(msn));
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("MSN set to: " + msn.toString());
// create caller data
int state = Integer.parseInt(call[0]);
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("State set to: " + state);
// added 2016/01/26: ignore incoming active (5) and outgoung active calls (6)
if (state == 5 || state == 6) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Ignoring call state: " + state);
return null;
}
String callByCall = null;
ICaller caller = null;
IPhonenumber pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toClirPhonenumber(call[3].trim());
// if no CLIR call, check internal
if (pn == null && state != this.getOutgoingState())
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toInternalPhonenumber(call[3].trim(), msn.getMSN());
// if no internal call, check regular
if (pn == null && state != this.getOutgoingState()) {
// if incoming call does not start with 0, the Provider number seems to have the wrong format
// assume it is an international format 4971657110
boolean onlyNumbers = call[3].matches("[+-]?[0-9]+");
if (!call[3].startsWith("0") && onlyNumbers) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Assuming international call: " + call[3]);
call[3] = "00" + call[3];
}
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toPhonenumber(call[3].trim(), msn.getMSN());
}
if (pn == null && state == this.getOutgoingState()) {
// added 2006/08/10: trim call-by-call information
// only can occure on state 3/4 (out-going calls)
callByCall = getCallByCall(call[3]);
if (callByCall != null) {
call[3] = call[3].substring(callByCall.length());
}
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toInternalPhonenumber(call[3].trim(), msn.getMSN());
if (pn == null) {
// requires addition of areacode
if (!call[3].startsWith("0")) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Assuming number " + call[3] + " has missing areacode.");
call[3] = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).getAreaCode() + call[3];
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Added areacode to number " + call[3]);
}
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toPhonenumber(call[3].trim(), msn.getMSN());
}
}
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Phonenumber set to: " + pn);
caller = Identifier.identify(r, pn);
if (caller == null) {
caller = r.getCallerFactory().createCaller(r.getCallerFactory().createName("", call[2]), pn);
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Setting CSV name field as caller name: " + call[2]);
}
// added 2016/01/19: FB Name data if jAnrufmonitor did not find any in his callermanagers
if (caller.getName().getLastname().length() == 0 && caller.getName().getFirstname().length() == 0 && call[2].trim().length() > 0) {
caller.getAttributes().add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_LASTNAME, call[2]));
caller.getAttributes().add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLERMANAGER, FritzBoxPhonebookManager.ID));
caller.getAttributes().remove(IJAMConst.ATTRIBUTE_NAME_CITY);
}
// create call data
SimpleDateFormat sdf = new SimpleDateFormat(this.m_config.getProperty(CFG_DATEFORMAT, "dd.MM.yy HH:mm"));
Date date = new Date(0);
try {
date = sdf.parse(call[1]);
} catch (ParseException e) {
if (logger != null && logger.isLoggable(Level.SEVERE))
logger.severe("Wrong date format detected: " + e.getMessage());
}
ICip cip = r.getCallFactory().createCip(getCip(call[4]), "");
cip.setAdditional(r.getCipManager().getCipLabel(cip, ""));
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Set CIP to: " + cip);
// create attributes
IAttributeMap am = r.getCallFactory().createAttributeMap();
if (state == 1) {
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_ACCEPTED));
} else if (state == this.getOutgoingState()) {
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_OUTGOING));
} else if (this.hasRejectedState() && state == this.getRejectedState()) {
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_REJECTED));
} else {
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_MISSED));
}
am.add(r.getCallFactory().createAttribute("fritzbox.line", call[4]));
am.add(r.getCallFactory().createAttribute("fritzbox.duration", Integer.toString(getTime(call[6]))));
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALL_DURATION, Integer.toString(getTime(call[6]))));
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALL_ACTIVE_INDICATOR, IJAMConst.ATTRIBUTE_VALUE_NO));
if (callByCall != null)
am.add(r.getCallFactory().createAttribute("fritzbox.callbycall", callByCall));
if (isSpoofingnumber(call[2])) {
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Spoofing number detected: " + call[2]);
String sn = getSpoofingnumber(call[2]);
IPhonenumber pnx = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toPhonenumber(sn.trim());
ICaller cx = Identifier.identify(r, pnx);
if (cx != null) {
am.add(r.getCallFactory().createAttribute("fritzbox.spoofing", cx.getPhoneNumber().getIntAreaCode() + ";" + cx.getPhoneNumber().getAreaCode() + ";" + cx.getPhoneNumber().getCallNumber()));
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_SPOOFED, "true"));
}
}
if (logger != null && logger.isLoggable(Level.INFO))
logger.info("Set attributes to: " + am);
// // create UUID
// StringBuffer uuid = new StringBuffer();
// uuid.append(date.getTime());
// uuid.append("-");
// uuid.append(pn.getTelephoneNumber());
// uuid.append("-");
// uuid.append(msn.getMSN());
//
// if (logger!=null && logger.isLoggable(Level.INFO))
// logger.info("Set UUID to: "+uuid);
//
// // limit uuid to 32 chars
// if (uuid.length()>31) {
// // reduce byte length to append -1 for redundant calls max -1-1 --> 3 calls
// uuid = new StringBuffer(uuid.substring(0,31));
// if (logger!=null && logger.isLoggable(Level.INFO))
// logger.info("Reduce UUID to: "+uuid);
// }
this.m_call = r.getCallFactory().createCall(FritzBoxUUIDManager.getInstance().getUUID(date, pn, msn), caller, msn, cip, date);
this.m_call.setAttributes(am);
}
} catch (NumberFormatException ex) {
if (logger != null && logger.isLoggable(Level.SEVERE))
logger.log(Level.SEVERE, ex.toString(), ex);
} catch (Exception ex) {
if (logger != null && logger.isLoggable(Level.WARNING))
logger.log(Level.WARNING, ex.toString() + ":" + ex.getMessage() + " : problem with line parsing : " + this.m_line, ex);
if (ex instanceof NullPointerException)
if (logger != null && logger.isLoggable(Level.SEVERE))
logger.log(Level.SEVERE, ex.toString(), ex);
return null;
}
}
return this.m_call;
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class FritzBoxCallRaw method toCall.
public ICall toCall() {
if (this.m_line == null || this.m_line.length() == 0)
return null;
if (this.m_call == null) {
IRuntime r = PIMRuntime.getInstance();
String[] call = this.m_line.split(";");
if (call.length >= 4 && call[1].equalsIgnoreCase("RING")) {
// create MSN
IMsn msn = r.getCallFactory().createMsn(getMsn(call[4]), "");
msn.setAdditional(r.getMsnManager().getMsnLabel(msn));
IPhonenumber pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toClirPhonenumber(call[3].trim());
// if no CLIR call, check internal
if (pn == null)
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toInternalPhonenumber(call[3].trim(), msn.getMSN());
// if no internal call, check regular
if (pn == null) {
// if incoming call does not start with 0, the Provider number seems to have the wrong format
// assume it is an international format 4971657110
boolean onlyNumbers = call[3].matches("[+-]?[0-9]+");
if (!call[3].startsWith("0") && onlyNumbers) {
call[3] = "00" + call[3];
}
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toPhonenumber(call[3].trim(), msn.getMSN());
}
ICaller caller = r.getCallerFactory().createCaller(pn);
// create call data
// added 2009/05/01
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy HH:mm:ss");
Date date = new Date(0);
try {
date = sdf.parse(call[0]);
date = this.toFritzboxDate(date);
} catch (ParseException e) {
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).severe("Wrong standard date format detected.");
sdf = new SimpleDateFormat(this.m_config.getProperty(CFG_DATEFORMAT, "dd.MM.yy HH:mm"));
try {
date = sdf.parse(call[0]);
date = this.toFritzboxDate(date);
} catch (ParseException ex) {
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).severe("Wrong custom date format detected.");
}
}
ICip cip = r.getCallFactory().createCip(getCip(call[5]), "");
cip.setAdditional(r.getCipManager().getCipLabel(cip, ""));
// create attributes
IAttributeMap am = r.getCallFactory().createAttributeMap();
am.add(r.getCallFactory().createAttribute("fritzbox.key", call[2]));
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_MISSED));
this.m_call = r.getCallFactory().createCall(FritzBoxUUIDManager.getInstance().calculateUUID(FritzBoxUUIDManager.getInstance().getUUID(date, pn, msn)), caller, msn, cip, date);
this.m_call.setAttributes(am);
}
if (call.length >= 4 && call[1].equalsIgnoreCase("CALL")) {
// create msn
String s_msn = null;
if (call.length >= 7) {
s_msn = getMsn(call[6]);
if (s_msn == null || call[6].equalsIgnoreCase(s_msn))
s_msn = getMsn(call[4]);
} else {
s_msn = getMsn(call[4]);
}
IMsn msn = r.getCallFactory().createMsn((s_msn == null ? "" : s_msn), "");
msn.setAdditional(r.getMsnManager().getMsnLabel(msn));
// create caller data
String callByCall = null;
IPhonenumber pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toClirPhonenumber(call[5].trim());
// if no CLIR call, check internal
if (pn == null)
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toInternalPhonenumber(call[5].trim(), msn.getMSN());
// if no internal call, check regular
if (pn == null) {
// added 2006/08/10: trim call-by-call information
// only can occure on state CALL (out-going calls)
callByCall = getCallByCall(call[5]);
if (callByCall != null) {
call[5] = call[5].substring(callByCall.length());
}
// requires addition of areacode
if (!call[5].startsWith("0")) {
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).info("Assuming number " + call[5] + " has missing areacode.");
call[5] = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).getAreaCode() + call[5];
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).info("Added areacode to number " + call[5]);
}
pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toPhonenumber(call[5].trim(), msn.getMSN());
}
ICaller caller = r.getCallerFactory().createCaller(pn);
// create call data
// added 2009/05/27
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy HH:mm:ss");
Date date = new Date(0);
try {
date = sdf.parse(call[0]);
date = this.toFritzboxDate(date);
} catch (ParseException e) {
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).severe("Wrong standard date format detected.");
sdf = new SimpleDateFormat(this.m_config.getProperty(CFG_DATEFORMAT, "dd.MM.yy HH:mm"));
try {
date = sdf.parse(call[0]);
date = this.toFritzboxDate(date);
} catch (ParseException ex) {
Logger.getLogger(IJAMConst.DEFAULT_LOGGER).severe("Wrong custom date format detected.");
}
}
ICip cip = r.getCallFactory().createCip(getCip(call[6]), "");
cip.setAdditional(r.getCipManager().getCipLabel(cip, ""));
// create attributes
IAttributeMap am = r.getCallFactory().createAttributeMap();
am.add(r.getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_OUTGOING));
am.add(r.getCallFactory().createAttribute("fritzbox.key", call[2]));
if (callByCall != null)
am.add(r.getCallFactory().createAttribute("fritzbox.callbycall", callByCall));
this.m_call = r.getCallFactory().createCall(FritzBoxUUIDManager.getInstance().calculateUUID(FritzBoxUUIDManager.getInstance().getUUID(date, pn, msn)), caller, msn, cip, date);
this.m_call.setAttributes(am);
}
}
return this.m_call;
}
Aggregations