Search in sources :

Example 31 with IMsn

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;
}
Also used : ICaller(de.janrufmonitor.framework.ICaller) StringTokenizer(java.util.StringTokenizer) ICip(de.janrufmonitor.framework.ICip) ICall(de.janrufmonitor.framework.ICall) IAttribute(de.janrufmonitor.framework.IAttribute) IMsn(de.janrufmonitor.framework.IMsn) IName(de.janrufmonitor.framework.IName) Date(java.util.Date) NoSuchElementException(java.util.NoSuchElementException) IPhonenumber(de.janrufmonitor.framework.IPhonenumber)

Example 32 with IMsn

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;
}
Also used : ICaller(de.janrufmonitor.framework.ICaller) ICip(de.janrufmonitor.framework.ICip) ICall(de.janrufmonitor.framework.ICall) IEvent(de.janrufmonitor.framework.event.IEvent) IName(de.janrufmonitor.framework.IName) IMsn(de.janrufmonitor.framework.IMsn) IEventBroker(de.janrufmonitor.framework.event.IEventBroker) IPhonenumber(de.janrufmonitor.framework.IPhonenumber)

Example 33 with IMsn

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;
}
Also used : IMsn(de.janrufmonitor.framework.IMsn)

Example 34 with IMsn

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;
}
Also used : ICip(de.janrufmonitor.framework.ICip) Logger(java.util.logging.Logger) Date(java.util.Date) ParseException(java.text.ParseException) IRuntime(de.janrufmonitor.runtime.IRuntime) ICaller(de.janrufmonitor.framework.ICaller) IAttributeMap(de.janrufmonitor.framework.IAttributeMap) ParseException(java.text.ParseException) IMsn(de.janrufmonitor.framework.IMsn) SimpleDateFormat(java.text.SimpleDateFormat) IPhonenumber(de.janrufmonitor.framework.IPhonenumber)

Example 35 with IMsn

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;
}
Also used : ICaller(de.janrufmonitor.framework.ICaller) ICip(de.janrufmonitor.framework.ICip) IAttributeMap(de.janrufmonitor.framework.IAttributeMap) ParseException(java.text.ParseException) IMsn(de.janrufmonitor.framework.IMsn) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date) IRuntime(de.janrufmonitor.runtime.IRuntime) IPhonenumber(de.janrufmonitor.framework.IPhonenumber)

Aggregations

IMsn (de.janrufmonitor.framework.IMsn)43 ICip (de.janrufmonitor.framework.ICip)17 IPhonenumber (de.janrufmonitor.framework.IPhonenumber)17 ICaller (de.janrufmonitor.framework.ICaller)16 Date (java.util.Date)16 IAttributeMap (de.janrufmonitor.framework.IAttributeMap)11 ICall (de.janrufmonitor.framework.ICall)9 IAttribute (de.janrufmonitor.framework.IAttribute)8 IName (de.janrufmonitor.framework.IName)6 StringTokenizer (java.util.StringTokenizer)6 SimpleDateFormat (java.text.SimpleDateFormat)5 AttributeFilter (de.janrufmonitor.repository.filter.AttributeFilter)4 IFilter (de.janrufmonitor.repository.filter.IFilter)4 ItemCountFilter (de.janrufmonitor.repository.filter.ItemCountFilter)4 MsnFilter (de.janrufmonitor.repository.filter.MsnFilter)4 IRuntime (de.janrufmonitor.runtime.IRuntime)4 HandlerException (de.janrufmonitor.service.commons.http.handler.HandlerException)4 ParseException (java.text.ParseException)4 ArrayList (java.util.ArrayList)4 Iterator (java.util.Iterator)4