Search in sources :

Example 36 with ICall

use of de.janrufmonitor.framework.ICall in project janrufmonitor by tbrandt77.

the class PIMCapiData method createCallObject.

private ICall createCallObject(String number, String msn, int cip) {
    IPhonenumber phone = PhonenumberAnalyzer.getInstance(getRuntime()).toClirPhonenumber(number);
    if (phone == null)
        phone = PhonenumberAnalyzer.getInstance(getRuntime()).toInternalPhonenumber(number, msn);
    if (phone == null)
        phone = PhonenumberAnalyzer.getInstance(getRuntime()).toPhonenumber("0" + number, msn);
    IName name = this.getRuntime().getCallerFactory().createName("", "");
    ICaller aCaller = this.getRuntime().getCallerFactory().createCaller(name, phone);
    ICip cipObj = this.getRuntime().getCallFactory().createCip(Integer.toString(cip), "");
    IMsn msnObj = this.getRuntime().getCallFactory().createMsn(msn, "");
    ICall c = this.getRuntime().getCallFactory().createCall(aCaller, msnObj, cipObj);
    c.setAttribute(this.getRuntime().getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_BCHANNEL, this.m_plci.toString()));
    c.setAttribute(this.getRuntime().getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_RAW_NUMBER, number));
    c.setAttribute(this.getRuntime().getCallFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLSTATUS, IJAMConst.ATTRIBUTE_VALUE_MISSED));
    return c;
}
Also used : ICaller(de.janrufmonitor.framework.ICaller) ICip(de.janrufmonitor.framework.ICip) ICall(de.janrufmonitor.framework.ICall) IName(de.janrufmonitor.framework.IName) IMsn(de.janrufmonitor.framework.IMsn) IPhonenumber(de.janrufmonitor.framework.IPhonenumber)

Example 37 with ICall

use of de.janrufmonitor.framework.ICall in project janrufmonitor by tbrandt77.

the class GosPage method createControl.

public void createControl(Composite c) {
    Composite co = new Composite(c, SWT.NONE);
    co.setLayout(new GridLayout(2, false));
    co.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    int operations = DND.DROP_MOVE;
    Transfer[] types = new Transfer[] { FileTransfer.getInstance() };
    DropTarget target = new DropTarget(co, operations);
    target.setTransfer(types);
    target.addDropListener(new DropTargetAdapter() {

        public void drop(DropTargetEvent event) {
            // A drop has occurred, copy over the data
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }
            File f = new File(((String[]) event.data)[0]);
            m_logger.info("Detected drag action with file: " + f.getAbsolutePath());
            if (f.exists() && f.getName().toLowerCase().endsWith(".jam.zip")) {
                ZipArchive zip = new ZipArchive(f, false);
                try {
                    zip.open();
                    List files = zip.list(new FilenameFilter() {

                        public boolean accept(File f, String name) {
                            return name.toLowerCase().startsWith("install/repository.") && name.toLowerCase().endsWith(".inf");
                        }
                    });
                    if (files.size() == 1) {
                        m_logger.info("Found a valid generic online module.");
                        Properties inf = new Properties();
                        inf.load(zip.get((String) files.get(0)));
                        String ns = ((String) files.get(0)).substring("install/repository.".length(), ((String) files.get(0)).length() - 4);
                        name.setText(ns);
                        url.setText(inf.getProperty("repository." + ns + ":url:value", ""));
                        offset.setText(inf.getProperty("repository." + ns + ":skipbytes:value", "0"));
                        lastname.setText(inf.getProperty("repository." + ns + ":regexp.lastname:value", ""));
                        firstname.setText(inf.getProperty("repository." + ns + ":regexp.firstname:value", ""));
                        street.setText(inf.getProperty("repository." + ns + ":regexp.street:value", ""));
                        streetno.setText(inf.getProperty("repository." + ns + ":regexp.streetno:value", ""));
                        postal.setText(inf.getProperty("repository." + ns + ":regexp.pcode:value", ""));
                        city.setText(inf.getProperty("repository." + ns + ":regexp.city:value", ""));
                        area.setText(inf.getProperty("repository." + ns + ":regexp.areacode:value", ""));
                        number.setText(inf.getProperty("repository." + ns + ":regexp.phone:value", ""));
                        intarea.setText(inf.getProperty("repository." + ns + ":intareacode:value", ""));
                    }
                    zip.close();
                } catch (ZipArchiveException e) {
                    m_logger.log(Level.SEVERE, e.getMessage(), e);
                } catch (IOException e) {
                    m_logger.log(Level.SEVERE, e.getMessage(), e);
                }
            }
        }
    });
    Label l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "name", "label", this.m_language));
    GridData gd = new GridData();
    gd.widthHint = 150;
    name = new Text(co, SWT.BORDER);
    name.setLayoutData(gd);
    name.setText("");
    name.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "version", "label", this.m_language));
    gd = new GridData();
    gd.widthHint = 50;
    version = new Text(co, SWT.BORDER);
    version.setLayoutData(gd);
    version.setText("1.0.0");
    version.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "url", "label", this.m_language));
    url = new Text(co, SWT.BORDER);
    gd.widthHint = 300;
    url.setLayoutData(gd);
    url.setText("");
    url.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "offset", "label", this.m_language));
    offset = new Text(co, SWT.BORDER);
    offset.setText("");
    offset.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "lastname", "label", this.m_language));
    lastname = new Text(co, SWT.BORDER);
    lastname.setLayoutData(gd);
    lastname.setText("");
    lastname.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            lastname.setForeground(new Color(lastname.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "firstname", "label", this.m_language));
    firstname = new Text(co, SWT.BORDER);
    firstname.setText("");
    firstname.setLayoutData(gd);
    firstname.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            firstname.setForeground(new Color(firstname.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "street", "label", this.m_language));
    street = new Text(co, SWT.BORDER);
    street.setLayoutData(gd);
    street.setText("");
    street.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            street.setForeground(new Color(street.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "streetno", "label", this.m_language));
    streetno = new Text(co, SWT.BORDER);
    streetno.setLayoutData(gd);
    streetno.setText("");
    streetno.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            streetno.setForeground(new Color(streetno.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "postal", "label", this.m_language));
    postal = new Text(co, SWT.BORDER);
    postal.setLayoutData(gd);
    postal.setText("");
    postal.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            postal.setForeground(new Color(postal.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "city", "label", this.m_language));
    city = new Text(co, SWT.BORDER);
    city.setLayoutData(gd);
    city.setText("");
    city.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            city.setForeground(new Color(city.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "area", "label", this.m_language));
    area = new Text(co, SWT.BORDER);
    area.setLayoutData(gd);
    area.setText("");
    area.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            area.setForeground(new Color(area.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "number", "label", this.m_language));
    number = new Text(co, SWT.BORDER);
    number.setLayoutData(gd);
    number.setText("");
    number.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
            number.setForeground(new Color(number.getDisplay(), 0, 0, 0));
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "intarea", "label", this.m_language));
    intarea = new Text(co, SWT.BORDER);
    intarea.setText("49");
    intarea.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "locale", "label", this.m_language));
    Locale[] locales = Locale.getAvailableLocales();
    List localeList = new ArrayList(locales.length);
    Locale lo = null;
    for (int i = 0; i < locales.length; i++) {
        lo = locales[i];
        if (lo.toString().indexOf("_") > 0)
            localeList.add(lo);
    }
    Collections.sort(localeList, new Comparator() {

        public int compare(Object l1, Object l2) {
            if (l1 instanceof Locale && l2 instanceof Locale) {
                return ((Locale) l1).getDisplayCountry().compareTo(((Locale) l2).getDisplayCountry());
            }
            return 0;
        }
    });
    String[] countryNames = new String[localeList.size()];
    for (int i = 0; i < localeList.size(); i++) {
        countryNames[i] = ((Locale) localeList.get(i)).getDisplayCountry() + " (" + ((Locale) localeList.get(i)).getDisplayLanguage() + ")";
    }
    locale = new Combo(co, SWT.READ_ONLY);
    locale.setItems(countryNames);
    for (int i = 0; i < countryNames.length; i++) {
        locale.setData(countryNames[i], localeList.get(i));
    }
    locale.select(0);
    locale.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    l = new Label(co, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "encoding", "label", this.m_language));
    String[] encodings = new String[] { "ISO-8859-1", "UTF-8", "UTF-16" };
    encoding = new Combo(co, SWT.READ_ONLY);
    encoding.setItems(encodings);
    for (int i = 0; i < encodings.length; i++) {
        encoding.setData(encodings[i], encodings[i]);
    }
    encoding.select(0);
    locale.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            setPageComplete(isComplete());
        }
    });
    Composite dco2 = new Composite(co, SWT.NONE);
    dco2.setLayout(new GridLayout(1, false));
    gd = new GridData();
    gd.horizontalSpan = 2;
    dco2.setLayoutData(gd);
    ffe = new FileFieldEditor(this.m_i18n.getString(this.getNamespace(), "fname", "label", this.m_language), this.m_i18n.getString(this.getNamespace(), "flabel", "label", this.m_language), dco2);
    ffe.setFileExtensions(new String[] { "*.png" });
    l = new Label(co, SWT.LEFT);
    l = new Label(co, SWT.LEFT);
    Composite dco = new Composite(co, SWT.NONE);
    dco.setLayout(new GridLayout(1, false));
    gd = new GridData();
    gd.horizontalSpan = 2;
    dco.setLayoutData(gd);
    dfe = new DirectoryFieldEditor(this.m_i18n.getString(this.getNamespace(), "dname", "label", this.m_language), this.m_i18n.getString(this.getNamespace(), "dlabel", "label", this.m_language), this.m_i18n.getString(this.getNamespace(), "dmessage", "label", this.m_language), dco);
    dfe.setStringValue(PathResolver.getInstance().getTempDirectory());
    Group c2 = new Group(co, SWT.SHADOW_ETCHED_IN);
    c2.setLayout(new GridLayout(2, false));
    gd = new GridData();
    gd.horizontalSpan = 2;
    gd.horizontalAlignment = GridData.FILL_HORIZONTAL;
    c2.setLayoutData(gd);
    l = new Label(c2, SWT.LEFT);
    l.setText(this.m_i18n.getString(this.getNamespace(), "testnumber", "label", this.m_language));
    l = new Label(c2, SWT.LEFT);
    final Text testnum = new Text(c2, SWT.BORDER);
    testnum.setText("");
    gd = new GridData(GridData.FILL_BOTH);
    gd.widthHint = 400;
    // gd.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
    testnum.setLayoutData(gd);
    final Button test = new Button(c2, SWT.PUSH);
    test.setEnabled(false);
    test.setText(this.m_i18n.getString(this.getNamespace(), "test", "label", this.m_language));
    test.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent e) {
            IPhonenumber pn = getRuntime().getCallerFactory().createPhonenumber(testnum.getText().startsWith("0") ? testnum.getText().substring(1) : testnum.getText());
            pn.setIntAreaCode(intarea.getText());
            Properties config = new Properties();
            config.setProperty("version", version.getText());
            config.setProperty("skipbytes", offset.getText());
            config.setProperty("url", url.getText());
            config.setProperty("regexp.lastname", lastname.getText());
            config.setProperty("regexp.firstname", firstname.getText());
            config.setProperty("regexp.street", street.getText());
            config.setProperty("regexp.streetno", streetno.getText());
            config.setProperty("regexp.pcode", postal.getText());
            config.setProperty("regexp.city", city.getText());
            config.setProperty("regexp.areacode", area.getText());
            config.setProperty("regexp.phone", number.getText());
            config.setProperty("intareacode", intarea.getText());
            config.setProperty("locale", ((Locale) locale.getData(locale.getText())).toString());
            config.setProperty("encoding", encoding.getText());
            config.setProperty("icon", ffe.getStringValue());
            TestWebCallerManager twcm = new TestWebCallerManager(config);
            try {
                ICaller c = twcm.getCaller(pn);
                IService dialog = getRuntime().getServiceFactory().getService("DefaultCallDialogService");
                if (dialog != null) {
                    ICall call = getRuntime().getCallFactory().createCall(c, getRuntime().getMsnManager().createMsn("12345"), getRuntime().getCipManager().createCip("1"));
                    if (dialog instanceof AbstractReceiverConfigurableService) {
                        ((AbstractReceiverConfigurableService) dialog).receivedValidRule(call);
                    }
                    lastname.setForeground(new Color(lastname.getDisplay(), 0, 0, 0));
                    firstname.setForeground(new Color(firstname.getDisplay(), 0, 0, 0));
                    street.setForeground(new Color(street.getDisplay(), 0, 0, 0));
                    streetno.setForeground(new Color(streetno.getDisplay(), 0, 0, 0));
                    postal.setForeground(new Color(postal.getDisplay(), 0, 0, 0));
                    city.setForeground(new Color(city.getDisplay(), 0, 0, 0));
                    area.setForeground(new Color(area.getDisplay(), 0, 0, 0));
                    number.setForeground(new Color(number.getDisplay(), 0, 0, 0));
                }
            } catch (CallerNotFoundException ex) {
                PropagationFactory.getInstance().fire(new Message(Message.INFO, getNamespace(), "notidentified", new String[] { pn.getTelephoneNumber() }, ex));
                // first CallerNotFoundException
                Throwable cause = ex.getCause();
                if (cause != null && !(cause instanceof RegExpURLRequesterException)) {
                    cause = cause.getCause();
                }
                if (cause != null && cause instanceof RegExpURLRequesterException) {
                    List failure = ((RegExpURLRequesterException) cause).getFailures();
                    String c = null;
                    for (int i = 0; i < failure.size(); i++) {
                        c = (String) failure.get(i);
                        if (c.equalsIgnoreCase("regexp.lastname")) {
                            lastname.setForeground(new Color(lastname.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.firstname")) {
                            firstname.setForeground(new Color(firstname.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.street")) {
                            street.setForeground(new Color(street.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.streetno")) {
                            streetno.setForeground(new Color(streetno.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.pcode")) {
                            postal.setForeground(new Color(postal.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.city")) {
                            city.setForeground(new Color(city.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.areacode")) {
                            area.setForeground(new Color(area.getDisplay(), 255, 0, 0));
                        }
                        if (c.equalsIgnoreCase("regexp.phone")) {
                            number.setForeground(new Color(number.getDisplay(), 255, 0, 0));
                        }
                    }
                }
            } finally {
                twcm = null;
            }
        }
    });
    testnum.addKeyListener(new KeyListener() {

        public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
            if (testnum.getText().length() > 0 && url.getText().length() > 0 && number.getText().length() > 0)
                test.setEnabled(true);
            else
                test.setEnabled(false);
        }

        public void keyReleased(org.eclipse.swt.events.KeyEvent e) {
        }
    });
    this.setPageComplete(isComplete());
    this.setControl(co);
}
Also used : ZipArchiveException(de.janrufmonitor.repository.zip.ZipArchiveException) Locale(java.util.Locale) RegExpURLRequesterException(de.janrufmonitor.repository.web.RegExpURLRequesterException) Label(org.eclipse.swt.widgets.Label) ArrayList(java.util.ArrayList) ZipArchive(de.janrufmonitor.repository.zip.ZipArchive) Combo(org.eclipse.swt.widgets.Combo) Comparator(java.util.Comparator) FileFieldEditor(org.eclipse.jface.preference.FileFieldEditor) ModifyEvent(org.eclipse.swt.events.ModifyEvent) Button(org.eclipse.swt.widgets.Button) SelectionEvent(org.eclipse.swt.events.SelectionEvent) List(java.util.List) ArrayList(java.util.ArrayList) IService(de.janrufmonitor.service.IService) AbstractReceiverConfigurableService(de.janrufmonitor.service.AbstractReceiverConfigurableService) Color(org.eclipse.swt.graphics.Color) DropTargetEvent(org.eclipse.swt.dnd.DropTargetEvent) DropTargetAdapter(org.eclipse.swt.dnd.DropTargetAdapter) ICaller(de.janrufmonitor.framework.ICaller) Transfer(org.eclipse.swt.dnd.Transfer) FileTransfer(org.eclipse.swt.dnd.FileTransfer) DropTarget(org.eclipse.swt.dnd.DropTarget) File(java.io.File) IPhonenumber(de.janrufmonitor.framework.IPhonenumber) Group(org.eclipse.swt.widgets.Group) ModifyListener(org.eclipse.swt.events.ModifyListener) Message(de.janrufmonitor.exception.Message) DirectoryFieldEditor(de.janrufmonitor.ui.jface.configuration.controls.DirectoryFieldEditor) Properties(java.util.Properties) FilenameFilter(java.io.FilenameFilter) GridLayout(org.eclipse.swt.layout.GridLayout) CallerNotFoundException(de.janrufmonitor.repository.CallerNotFoundException) ICall(de.janrufmonitor.framework.ICall) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Text(org.eclipse.swt.widgets.Text) IOException(java.io.IOException) GridData(org.eclipse.swt.layout.GridData) KeyListener(org.eclipse.swt.events.KeyListener)

Example 38 with ICall

use of de.janrufmonitor.framework.ICall in project janrufmonitor by tbrandt77.

the class Client method received.

public void received(IEvent event) {
    if (event.getType() == IEventConst.EVENT_TYPE_CALLREJECTED) {
        this.m_logger.info("Sending EVENT_TYPE_CALLREJECTED event to server.");
        IHttpRequest request = new RejectHandler((ICall) event.getData());
        this.sendRequest(IEventConst.EVENT_TYPE_CALLREJECTED, request);
    }
    if (event.getType() == IEventConst.EVENT_TYPE_IDENTIFIED_CALL) {
        ICall c = (ICall) event.getData();
        if (c != null) {
            ClientCallMap.getInstance().setCall(c.getCaller().getPhoneNumber().getTelephoneNumber() + "/" + c.getMSN().getMSN(), c);
            this.m_logger.info("Updating call in ClienTCallMap: " + c);
        }
    }
    if (event.getType() == IEventConst.EVENT_TYPE_RETURNED_HIBERNATE) {
        if (this.m_logger.isLoggable(Level.INFO))
            this.m_logger.info("Client detected hibernate return mode.");
        if (this.isConnected()) {
            if (this.m_logger.isLoggable(Level.INFO))
                this.m_logger.info("Client detected hibernate return mode, and client is connected.");
            this.disconnect();
            if (this.connect()) {
                ClientStateManager.getInstance().fireState(IClientStateMonitor.CONNECTION_OK, "");
                if (this.m_logger.isLoggable(Level.INFO))
                    this.m_logger.info("Client reconnected after hibernate return mode.");
            } else {
                ClientStateManager.getInstance().fireState(IClientStateMonitor.CONNECTION_CLOSED, "");
                if (this.m_logger.isLoggable(Level.INFO))
                    this.m_logger.info("Client not reconnected after hibernate return mode.");
            }
        } else if (this.m_logger.isLoggable(Level.INFO))
            this.m_logger.info("Client detected hibernate return mode, but is not connected. No re-connect.");
    }
}
Also used : IHttpRequest(de.janrufmonitor.service.commons.http.IHttpRequest) ICall(de.janrufmonitor.framework.ICall)

Example 39 with ICall

use of de.janrufmonitor.framework.ICall in project janrufmonitor by tbrandt77.

the class IdentifiedCall method handleWithException.

public void handleWithException(IHttpRequest req, IMutableHttpResponse resp) throws HandlerException {
    try {
        ICall call = XMLSerializer.toCall(this.getPostData(req));
        if (call != null) {
            ClientCallMap.getInstance().setCall((call.getCaller().getPhoneNumber().isClired() ? IJAMConst.CLIRED_CALL : call.getCaller().getPhoneNumber().getTelephoneNumber()) + "/" + call.getMSN().getMSN(), call);
            Thread sender = new Thread(new HandlerThread(call, this));
            sender.start();
            resp.getContentStreamForWrite().close();
        } else {
            this.m_logger.severe("Invalid call transfered from server.");
        }
    } catch (Exception e) {
        throw new HandlerException(e.getMessage(), 500);
    }
}
Also used : HandlerException(de.janrufmonitor.service.commons.http.handler.HandlerException) ICall(de.janrufmonitor.framework.ICall) HandlerException(de.janrufmonitor.service.commons.http.handler.HandlerException)

Example 40 with ICall

use of de.janrufmonitor.framework.ICall in project janrufmonitor by tbrandt77.

the class TamMessagePlay method run.

public void run() {
    Viewer v = this.m_app.getApplication().getViewer();
    if (v != null) {
        IStructuredSelection selection = (IStructuredSelection) v.getSelection();
        if (!selection.isEmpty()) {
            Object o = selection.getFirstElement();
            if (o instanceof ICall) {
                if (((ICall) o).getAttributes().contains("fritzbox.tamurl")) {
                    File message_file = null;
                    String url = ((ICall) o).getAttributes().get("fritzbox.tamurl").getValue();
                    File tamMessageDir = new File(PathResolver.getInstance(PIMRuntime.getInstance()).getDataDirectory() + File.separator + "fritzbox-messages");
                    tamMessageDir.mkdirs();
                    if (tamMessageDir.exists() && tamMessageDir.isDirectory()) {
                        message_file = new File(tamMessageDir, ((ICall) o).getUUID() + ".wav");
                        if (!message_file.exists()) {
                            FirmwareManager fwm = FirmwareManager.getInstance();
                            try {
                                if (!fwm.isLoggedIn())
                                    fwm.login();
                                String data = fwm.getTamMessage(url);
                                if (data == null)
                                    return;
                                ByteArrayInputStream bin = new ByteArrayInputStream(data.getBytes());
                                Base64Decoder b64 = new Base64Decoder(bin);
                                FileOutputStream fos = new FileOutputStream(message_file);
                                Stream.copy(b64, fos);
                                fos.flush();
                                fos.close();
                            } catch (IOException e) {
                                this.m_logger.warning(e.toString());
                            } catch (FritzBoxLoginException e) {
                                this.m_logger.warning(e.toString());
                            }
                        }
                    }
                    try {
                        AudioInputStream stream = AudioSystem.getAudioInputStream(message_file);
                        AudioFormat format = stream.getFormat();
                        DataLine.Info info = new DataLine.Info(Clip.class, format);
                        Clip clip = (Clip) AudioSystem.getLine(info);
                        clip.open(stream);
                        clip.start();
                    } catch (IOException e) {
                        this.m_logger.severe(e.getMessage());
                    } catch (LineUnavailableException e) {
                        this.m_logger.severe(e.getMessage());
                    } catch (UnsupportedAudioFileException e) {
                        this.m_logger.severe(e.getMessage());
                    }
                } else {
                    new SWTExecuter() {

                        protected void execute() {
                            int style = SWT.APPLICATION_MODAL | SWT.OK;
                            MessageBox messageBox = new MessageBox(new Shell(DisplayManager.getDefaultDisplay()), style);
                            messageBox.setMessage(getI18nManager().getString(getNamespace(), "notam", "label", getLanguage()));
                            messageBox.open();
                        }
                    }.start();
                    return;
                }
            }
        }
    }
}
Also used : FritzBoxLoginException(de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException) ICall(de.janrufmonitor.framework.ICall) DataLine(javax.sound.sampled.DataLine) LineUnavailableException(javax.sound.sampled.LineUnavailableException) Viewer(org.eclipse.jface.viewers.Viewer) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IOException(java.io.IOException) MessageBox(org.eclipse.swt.widgets.MessageBox) AudioInputStream(javax.sound.sampled.AudioInputStream) Clip(javax.sound.sampled.Clip) UnsupportedAudioFileException(javax.sound.sampled.UnsupportedAudioFileException) Shell(org.eclipse.swt.widgets.Shell) FirmwareManager(de.janrufmonitor.fritzbox.firmware.FirmwareManager) ByteArrayInputStream(java.io.ByteArrayInputStream) Base64Decoder(de.janrufmonitor.util.io.Base64Decoder) FileOutputStream(java.io.FileOutputStream) AudioFormat(javax.sound.sampled.AudioFormat) File(java.io.File) SWTExecuter(de.janrufmonitor.ui.swt.SWTExecuter)

Aggregations

ICall (de.janrufmonitor.framework.ICall)89 ICaller (de.janrufmonitor.framework.ICaller)41 List (java.util.List)23 Viewer (org.eclipse.jface.viewers.Viewer)20 IPhonenumber (de.janrufmonitor.framework.IPhonenumber)19 ArrayList (java.util.ArrayList)19 IAttribute (de.janrufmonitor.framework.IAttribute)18 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)18 ICallList (de.janrufmonitor.framework.ICallList)17 IOException (java.io.IOException)14 Properties (java.util.Properties)14 Date (java.util.Date)13 Iterator (java.util.Iterator)13 Shell (org.eclipse.swt.widgets.Shell)13 File (java.io.File)12 InvocationTargetException (java.lang.reflect.InvocationTargetException)12 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)11 IRunnableWithProgress (org.eclipse.jface.operation.IRunnableWithProgress)11 ICip (de.janrufmonitor.framework.ICip)10 ProgressMonitorDialog (org.eclipse.jface.dialogs.ProgressMonitorDialog)10