Search in sources :

Example 6 with FirmwareManager

use of de.janrufmonitor.fritzbox.firmware.FirmwareManager 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)

Example 7 with FirmwareManager

use of de.janrufmonitor.fritzbox.firmware.FirmwareManager in project janrufmonitor by tbrandt77.

the class FritzBoxPhonebookManager method createFieldEditors.

protected void createFieldEditors() {
    FirmwareManager fwm = FirmwareManager.getInstance();
    String label = this.m_i18n.getString(this.getNamespace(), "enabled", "label", this.m_language);
    if (label.length() < 150)
        for (int i = 150; i > label.length(); i--) {
            label += " ";
        }
    BooleanFieldEditor bfe = new BooleanFieldEditor(this.getConfigNamespace() + SEPARATOR + "enabled", label, this.getFieldEditorParent());
    bfe.setEnabled((fwm.isInstance(UnitymediaFirmware.class) || fwm.isInstance(SessionIDFritzBoxFirmware.class) || fwm.isInstance(FritzOSFirmware.class) || fwm.isInstance(FritzOS559Firmware.class) || fwm.isInstance(TR064FritzBoxFirmware.class)), this.getFieldEditorParent());
    addField(bfe);
    if (fwm.isInstance(FritzOSFirmware.class) || fwm.isInstance(FritzOS559Firmware.class) || fwm.isInstance(TR064FritzBoxFirmware.class)) {
        try {
            if (!fwm.isLoggedIn())
                fwm.login();
            Map adb = fwm.getAddressbooks();
            String[][] list = new String[adb.size()][2];
            Iterator i = adb.keySet().iterator();
            int c = 0;
            while (i.hasNext()) {
                list[c][1] = ((Integer) i.next()).toString();
                list[c][0] = (String) adb.get(Integer.parseInt(list[c][1]));
                c++;
            }
            ComboFieldEditor cfe = new ComboFieldEditor(getConfigNamespace() + SEPARATOR + "ab", this.m_i18n.getString(this.getNamespace(), "ab", "label", this.m_language), list, this.getFieldEditorParent());
            addField(cfe);
        } catch (GetAddressbooksException e) {
            this.m_logger.severe(e.getMessage());
        } catch (IOException e) {
            this.m_logger.severe(e.getMessage());
        } catch (FritzBoxLoginException e) {
            this.m_logger.severe(e.getMessage());
        }
    }
}
Also used : FritzBoxLoginException(de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException) TR064FritzBoxFirmware(de.janrufmonitor.fritzbox.firmware.TR064FritzBoxFirmware) BooleanFieldEditor(org.eclipse.jface.preference.BooleanFieldEditor) IOException(java.io.IOException) ComboFieldEditor(org.eclipse.jface.preference.ComboFieldEditor) FirmwareManager(de.janrufmonitor.fritzbox.firmware.FirmwareManager) FritzOSFirmware(de.janrufmonitor.fritzbox.firmware.FritzOSFirmware) Iterator(java.util.Iterator) GetAddressbooksException(de.janrufmonitor.fritzbox.firmware.exception.GetAddressbooksException) Map(java.util.Map)

Example 8 with FirmwareManager

use of de.janrufmonitor.fritzbox.firmware.FirmwareManager in project janrufmonitor by tbrandt77.

the class FritzBoxPhonebookManager method createCallerListFromFritzBoxPhonebook.

private void createCallerListFromFritzBoxPhonebook() {
    Thread t = new Thread(new Runnable() {

        Logger m_logger;

        public void run() {
            isSyncing = true;
            this.m_logger = LogManager.getLogManager().getLogger(IJAMConst.DEFAULT_LOGGER);
            if (this.m_logger.isLoggable(Level.FINE))
                this.m_logger.fine("Starting JAM-FritzBoxPhonebookSync-Thread");
            File mso_cache = new File(FBP_CACHE_PATH);
            if (!mso_cache.exists())
                mso_cache.mkdirs();
            ICallerList cl = getRuntime().getCallerFactory().createCallerList();
            FirmwareManager fwm = FirmwareManager.getInstance();
            fwm.startup();
            try {
                if (!fwm.isLoggedIn())
                    fwm.login();
                if (this.m_logger.isLoggable(Level.INFO))
                    this.m_logger.info("FritzBox Firmware created.");
                if (this.m_logger.isLoggable(Level.INFO))
                    this.m_logger.info("Login to FritzBox successfull.");
                // check if phonebook is configured
                String abId = getConfiguration().getProperty(CFG_ADDRESSBOOK, "0");
                if (this.m_logger.isLoggable(Level.INFO))
                    this.m_logger.info("Getting FritzBox phonebook ID: #" + abId);
                int id = Integer.parseInt(abId);
                String name = null;
                try {
                    Map abs = fwm.getAddressbooks();
                    if (abs.containsKey(Integer.parseInt(abId))) {
                        name = (String) abs.get(Integer.parseInt(abId));
                        if (this.m_logger.isLoggable(Level.INFO))
                            this.m_logger.info("Getting FritzBox phonebook name: " + name);
                    }
                } catch (GetAddressbooksException e) {
                    this.m_logger.log(Level.WARNING, e.getMessage(), e);
                }
                List callers = null;
                if (name != null) {
                    callers = fwm.getCallerList(id, name);
                    if (this.m_logger.isLoggable(Level.INFO))
                        this.m_logger.info("Getting FritzBox phonebook callers: " + callers.size());
                } else {
                    callers = fwm.getCallerList();
                    if (this.m_logger.isLoggable(Level.INFO))
                        this.m_logger.info("Getting FritzBox default phonebook callers: " + callers.size());
                }
                if (callers.size() == 0) {
                    try {
                        getDatabaseHandler().deleteCallerList(getRuntime().getCallerFactory().createCallerList());
                        getDatabaseHandler().commit();
                    } catch (SQLException e) {
                        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
                        try {
                            getDatabaseHandler().rollback();
                        } catch (SQLException e1) {
                            this.m_logger.log(Level.SEVERE, e1.getMessage(), e1);
                        }
                    }
                    isSyncing = false;
                    return;
                }
                cl.add(FritzBoxMappingManager.getInstance().toCallerList(callers));
            } catch (FritzBoxLoginException e2) {
                this.m_logger.log(Level.SEVERE, e2.getMessage(), e2);
            } catch (GetCallerListException e) {
                this.m_logger.log(Level.SEVERE, e.getMessage(), e);
            } catch (IOException e) {
                this.m_logger.log(Level.SEVERE, e.getMessage(), e);
            } catch (Throwable e) {
                this.m_logger.log(Level.SEVERE, e.getMessage(), e);
            }
            try {
                getDatabaseHandler().deleteCallerList(getRuntime().getCallerFactory().createCallerList());
                getDatabaseHandler().insertOrUpdateCallerList(cl);
                getDatabaseHandler().commit();
            } catch (SQLException e) {
                this.m_logger.log(Level.SEVERE, e.getMessage(), e);
                try {
                    getDatabaseHandler().rollback();
                } catch (SQLException e1) {
                    this.m_logger.log(Level.SEVERE, e1.getMessage(), e1);
                }
            }
            isSyncing = false;
            if (this.m_logger.isLoggable(Level.FINE))
                this.m_logger.fine("Stopping JAM-FritzBoxPhonebookSync-Thread");
        }
    });
    t.setName("JAM-FritzBoxPhonebookSync-Thread-(non-deamon)");
    t.start();
}
Also used : FritzBoxLoginException(de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException) GetCallerListException(de.janrufmonitor.fritzbox.firmware.exception.GetCallerListException) SQLException(java.sql.SQLException) IOException(java.io.IOException) Logger(java.util.logging.Logger) ICallerList(de.janrufmonitor.framework.ICallerList) FirmwareManager(de.janrufmonitor.fritzbox.firmware.FirmwareManager) GetAddressbooksException(de.janrufmonitor.fritzbox.firmware.exception.GetAddressbooksException) ICallerList(de.janrufmonitor.framework.ICallerList) List(java.util.List) File(java.io.File) Map(java.util.Map)

Example 9 with FirmwareManager

use of de.janrufmonitor.fritzbox.firmware.FirmwareManager in project janrufmonitor by tbrandt77.

the class FritzBoxPhonebookManager method removeCaller.

public void removeCaller(ICaller caller) {
    FirmwareManager fwm = FirmwareManager.getInstance();
    fwm.startup();
    try {
        if (!fwm.isLoggedIn())
            fwm.login();
        // check if phonebook is configured
        String abId = getConfiguration().getProperty(CFG_ADDRESSBOOK, "0");
        if (this.m_logger.isLoggable(Level.INFO))
            this.m_logger.info("Getting FritzBox phonebook ID: #" + abId);
        int id = Integer.parseInt(abId);
        IPhonebookEntry pe = FritzBoxMappingManager.getInstance().mapJamCallerToFritzBox(caller);
        fwm.deleteCaller(id, pe);
        ICallerList cl = getRuntime().getCallerFactory().createCallerList(1);
        cl.add(caller);
        try {
            getDatabaseHandler().deleteCallerList(cl);
            getDatabaseHandler().commit();
        } catch (SQLException e) {
            this.m_logger.log(Level.SEVERE, e.getMessage(), e);
            try {
                getDatabaseHandler().rollback();
            } catch (SQLException e1) {
                this.m_logger.log(Level.SEVERE, e1.getMessage(), e1);
            }
        }
    } catch (FritzBoxLoginException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    } catch (IOException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    } catch (DeleteCallerException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    }
    if (!this.isSyncing)
        this.createCallerListFromFritzBoxPhonebook();
}
Also used : FritzBoxLoginException(de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException) ICallerList(de.janrufmonitor.framework.ICallerList) FirmwareManager(de.janrufmonitor.fritzbox.firmware.FirmwareManager) SQLException(java.sql.SQLException) DeleteCallerException(de.janrufmonitor.fritzbox.firmware.exception.DeleteCallerException) IPhonebookEntry(de.janrufmonitor.fritzbox.IPhonebookEntry) IOException(java.io.IOException)

Example 10 with FirmwareManager

use of de.janrufmonitor.fritzbox.firmware.FirmwareManager in project janrufmonitor by tbrandt77.

the class FritzBoxPhonebookManager method setCaller.

public void setCaller(ICaller caller) {
    FirmwareManager fwm = FirmwareManager.getInstance();
    fwm.startup();
    try {
        if (!fwm.isLoggedIn())
            fwm.login();
        // check if phonebook is configured
        String abId = getConfiguration().getProperty(CFG_ADDRESSBOOK, "0");
        if (this.m_logger.isLoggable(Level.INFO))
            this.m_logger.info("Getting FritzBox phonebook ID: #" + abId);
        int id = Integer.parseInt(abId);
        IPhonebookEntry pe = FritzBoxMappingManager.getInstance().mapJamCallerToFritzBox(caller);
        fwm.setCaller(id, pe);
        ICallerList cl = getRuntime().getCallerFactory().createCallerList(1);
        cl.add(caller);
        try {
            getDatabaseHandler().insertOrUpdateCallerList(cl);
            getDatabaseHandler().commit();
        } catch (SQLException e) {
            this.m_logger.log(Level.SEVERE, e.getMessage(), e);
            try {
                getDatabaseHandler().rollback();
            } catch (SQLException e1) {
                this.m_logger.log(Level.SEVERE, e1.getMessage(), e1);
            }
        }
    } catch (FritzBoxLoginException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    } catch (IOException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    } catch (SetCallerException e) {
        this.m_logger.log(Level.SEVERE, e.getMessage(), e);
    }
    if (!this.isSyncing)
        this.createCallerListFromFritzBoxPhonebook();
}
Also used : FritzBoxLoginException(de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException) ICallerList(de.janrufmonitor.framework.ICallerList) FirmwareManager(de.janrufmonitor.fritzbox.firmware.FirmwareManager) SQLException(java.sql.SQLException) SetCallerException(de.janrufmonitor.fritzbox.firmware.exception.SetCallerException) IPhonebookEntry(de.janrufmonitor.fritzbox.IPhonebookEntry) IOException(java.io.IOException)

Aggregations

FirmwareManager (de.janrufmonitor.fritzbox.firmware.FirmwareManager)19 FritzBoxLoginException (de.janrufmonitor.fritzbox.firmware.exception.FritzBoxLoginException)14 IOException (java.io.IOException)14 Message (de.janrufmonitor.exception.Message)6 Properties (java.util.Properties)5 Shell (org.eclipse.swt.widgets.Shell)5 ICall (de.janrufmonitor.framework.ICall)4 ICallerList (de.janrufmonitor.framework.ICallerList)3 DoCallException (de.janrufmonitor.fritzbox.firmware.exception.DoCallException)3 SWTExecuter (de.janrufmonitor.ui.swt.SWTExecuter)3 File (java.io.File)3 InvocationTargetException (java.lang.reflect.InvocationTargetException)3 SQLException (java.sql.SQLException)3 Map (java.util.Map)3 ICaller (de.janrufmonitor.framework.ICaller)2 IMonitor (de.janrufmonitor.framework.monitor.IMonitor)2 IPhonebookEntry (de.janrufmonitor.fritzbox.IPhonebookEntry)2 DeleteCallListException (de.janrufmonitor.fritzbox.firmware.exception.DeleteCallListException)2 GetAddressbooksException (de.janrufmonitor.fritzbox.firmware.exception.GetAddressbooksException)2 HashMap (java.util.HashMap)2