syncany-team team mailing list archive
-
syncany-team team
-
Mailing list archive
-
Message #00179
Re: lp:~isak-karlsson/syncany/syncany-remote-watch-interval into lp:syncany
I'll fix the native.py script first..
On 06/16/2011 05:13 PM, Philipp C. Heckel wrote:
> I'll review this tonight and then merge it :-D
>
> On Thu, Jun 16, 2011 at 4:58 PM, isakkarlsson<isak.karlsson@xxxxxxxxx> wrote:
>> isakkarlsson has proposed merging lp:~isak-karlsson/syncany/syncany-remote-watch-interval into lp:syncany.
>>
>> Requested reviews:
>> Syncany Team (syncany-team)
>>
>> For more details, see:
>> https://code.launchpad.net/~isak-karlsson/syncany/syncany-remote-watch-interval/+merge/64850
>>
>> Added the ability to change the remote checking inverval.
>> --
>> https://code.launchpad.net/~isak-karlsson/syncany/syncany-remote-watch-interval/+merge/64850
>> Your team Syncany Team is requested to review the proposed merge of lp:~isak-karlsson/syncany/syncany-remote-watch-interval into lp:syncany.
>>
>> === modified file 'syncany/bin/native.py'
>> --- syncany/bin/native.py 2011-06-11 12:47:02 +0000
>> +++ syncany/bin/native.py 2011-06-16 14:58:24 +0000
>> @@ -1,4 +1,4 @@
>> -#!/usr/bin/python
>> +#!/usr/bin/python2
>> #
>> # Syncany Linux Native Functions
>> # Copyright (C) 2011 Philipp C. Heckel<philipp.heckel@xxxxxxxxx>
>>
>> === modified file 'syncany/src/org/syncany/config/Profile.java'
>> --- syncany/src/org/syncany/config/Profile.java 2011-05-23 16:50:04 +0000
>> +++ syncany/src/org/syncany/config/Profile.java 2011-06-16 14:58:24 +0000
>> @@ -149,6 +149,8 @@
>> // Repo
>> repository = new Repository();
>> repository.load(node.findChildByName("repository"));
>> +
>> + remoteWatcher.load(node.findChildByName("watcher"));
>>
>> // Folders
>> folders = new Folders(this);
>> @@ -175,5 +177,8 @@
>>
>> // Folders
>> folders.save(node.findOrCreateChildByXpath("folders", "folders"));
>> +
>> + // Watcher
>> + remoteWatcher.save(node.findOrCreateChildByXpath("watcher", "watcher"));
>> }
>> }
>>
>> === modified file 'syncany/src/org/syncany/gui/settings/ProfilePanel.form'
>> --- syncany/src/org/syncany/gui/settings/ProfilePanel.form 2011-05-23 16:50:04 +0000
>> +++ syncany/src/org/syncany/gui/settings/ProfilePanel.form 2011-06-16 14:58:24 +0000
>> @@ -28,8 +28,8 @@
>> <Component id="cbActive" alignment="0" min="-2" max="-2" attributes="0"/>
>> <Group type="102" alignment="0" attributes="0">
>> <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
>> -<EmptySpace max="-2" attributes="0"/>
>> -<Component id="txtProfileName" pref="344" max="32767" attributes="0"/>
>> +<EmptySpace min="-2" pref="62" max="-2" attributes="0"/>
>> +<Component id="txtProfileName" pref="294" max="32767" attributes="0"/>
>> </Group>
>> </Group>
>> <EmptySpace max="-2" attributes="0"/>
>>
>> === modified file 'syncany/src/org/syncany/gui/settings/ProfilePanel.java'
>> --- syncany/src/org/syncany/gui/settings/ProfilePanel.java 2011-06-05 21:26:56 +0000
>> +++ syncany/src/org/syncany/gui/settings/ProfilePanel.java 2011-06-16 14:58:24 +0000
>> @@ -69,65 +69,65 @@
>> * always regenerated by the Form Editor.
>> */
>> @SuppressWarnings("unchecked")
>> - //<editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
>> - private void initComponents() {
>> -
>> - jLabel1 = new javax.swing.JLabel();
>> - txtProfileName = new javax.swing.JTextField();
>> - cbActive = new javax.swing.JCheckBox();
>> - jLabel2 = new javax.swing.JLabel();
>> -
>> - setBorder(null);
>> -
>> - jLabel1.setLabelFor(txtProfileName);
>> - jLabel1.setText(resourceBundle.getString("profp_name"));
>> - jLabel1.setName("jLabel1"); // NOI18N
>> -
>> - txtProfileName.setName("txtProfileName"); // NOI18N
>> -
>> - cbActive.setText(resourceBundle.getString("profp_activate"));
>> - cbActive.setName("cbActive"); // NOI18N
>> -
>> - jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() | java.awt.Font.BOLD));
>> - jLabel2.setText(resourceBundle.getString("profp_settings"));
>> - jLabel2.setName("jLabel2"); // NOI18N
>> -
>> - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
>> - this.setLayout(layout);
>> - layout.setHorizontalGroup(
>> - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addGroup(layout.createSequentialGroup()
>> - .addContainerGap()
>> - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addComponent(jLabel2)
>> - .addComponent(cbActive)
>> - .addGroup(layout.createSequentialGroup()
>> - .addComponent(jLabel1)
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
>> - .addComponent(txtProfileName, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)))
>> - .addContainerGap())
>> - );
>> - layout.setVerticalGroup(
>> - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addGroup(layout.createSequentialGroup()
>> - .addGap(10, 10, 10)
>> - .addComponent(jLabel2)
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> - .addComponent(cbActive)
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
>> - .addComponent(txtProfileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
>> - .addComponent(jLabel1))
>> - .addContainerGap(213, Short.MAX_VALUE))
>> - );
>> - }//</editor-fold>//GEN-END:initComponents
>> -
>> -
>> - // Variables declaration - do not modify//GEN-BEGIN:variables
>> - private javax.swing.JCheckBox cbActive;
>> - private javax.swing.JLabel jLabel1;
>> - private javax.swing.JLabel jLabel2;
>> - private javax.swing.JTextField txtProfileName;
>> - // End of variables declaration//GEN-END:variables
>> + //<editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
>> + private void initComponents() {
>> +
>> + jLabel1 = new javax.swing.JLabel();
>> + txtProfileName = new javax.swing.JTextField();
>> + cbActive = new javax.swing.JCheckBox();
>> + jLabel2 = new javax.swing.JLabel();
>> +
>> + setBorder(null);
>> +
>> + jLabel1.setLabelFor(txtProfileName);
>> + jLabel1.setText("Profile Name:");
>> + jLabel1.setName("jLabel1"); // NOI18N
>> +
>> + txtProfileName.setName("txtProfileName"); // NOI18N
>> +
>> + cbActive.setText("Activate Profile");
>> + cbActive.setName("cbActive"); // NOI18N
>> +
>> + jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() | java.awt.Font.BOLD));
>> + jLabel2.setText("Profile Settings");
>> + jLabel2.setName("jLabel2"); // NOI18N
>> +
>> + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
>> + this.setLayout(layout);
>> + layout.setHorizontalGroup(
>> + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addGroup(layout.createSequentialGroup()
>> + .addContainerGap()
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addComponent(jLabel2)
>> + .addComponent(cbActive)
>> + .addGroup(layout.createSequentialGroup()
>> + .addComponent(jLabel1)
>> + .addGap(62, 62, 62)
>> + .addComponent(txtProfileName, javax.swing.GroupLayout.DEFAULT_SIZE, 294, Short.MAX_VALUE)))
>> + .addContainerGap())
>> + );
>> + layout.setVerticalGroup(
>> + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addGroup(layout.createSequentialGroup()
>> + .addGap(10, 10, 10)
>> + .addComponent(jLabel2)
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> + .addComponent(cbActive)
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
>> + .addComponent(txtProfileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
>> + .addComponent(jLabel1))
>> + .addContainerGap(213, Short.MAX_VALUE))
>> + );
>> + }//</editor-fold>//GEN-END:initComponents
>> +
>> +
>> + // Variables declaration - do not modify//GEN-BEGIN:variables
>> + private javax.swing.JCheckBox cbActive;
>> + private javax.swing.JLabel jLabel1;
>> + private javax.swing.JLabel jLabel2;
>> + private javax.swing.JTextField txtProfileName;
>> + // End of variables declaration//GEN-END:variables
>>
>> }
>>
>> === modified file 'syncany/src/org/syncany/gui/settings/RepositoryPanel.form'
>> --- syncany/src/org/syncany/gui/settings/RepositoryPanel.form 2011-05-23 16:50:04 +0000
>> +++ syncany/src/org/syncany/gui/settings/RepositoryPanel.form 2011-06-16 14:58:24 +0000
>> @@ -23,22 +23,29 @@
>> <EmptySpace pref="2" max="-2" attributes="0"/>
>> <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
>> </Group>
>> +<Component id="scrConnection" alignment="0" min="-2" pref="499" max="-2" attributes="0"/>
>> +<Component id="lblConnection" alignment="0" min="-2" max="-2" attributes="0"/>
>> +<Group type="102" alignment="0" attributes="0">
>> +<Group type="103" groupAlignment="0" attributes="0">
>> +<Component id="jLabel4" min="-2" max="-2" attributes="0"/>
>> +<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
>> +</Group>
>> +<EmptySpace min="-2" pref="50" max="-2" attributes="0"/>
>> +<Group type="103" groupAlignment="0" max="-2" attributes="0">
>> +<Component id="jspRemoteInterval" max="32767" attributes="1"/>
>> +<Component id="lblEncryption" alignment="0" max="32767" attributes="1"/>
>> +</Group>
>> +<EmptySpace max="-2" attributes="0"/>
>> +<Component id="jLabel5" min="-2" max="-2" attributes="0"/>
>> +</Group>
>> <Group type="102" alignment="0" attributes="0">
>> <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
>> -<EmptySpace min="12" pref="12" max="12" attributes="0"/>
>> -<Component id="lblStorageType" min="-2" max="-2" attributes="0"/>
>> -</Group>
>> -<Group type="102" alignment="0" attributes="0">
>> -<EmptySpace min="-2" pref="120" max="-2" attributes="0"/>
>> -<Component id="lblStorageDescription" min="-2" max="-2" attributes="0"/>
>> -</Group>
>> -<Group type="102" alignment="0" attributes="0">
>> -<Component id="jLabel4" min="-2" max="-2" attributes="0"/>
>> -<EmptySpace min="50" pref="50" max="50" attributes="0"/>
>> -<Component id="lblEncryption" min="-2" max="-2" attributes="0"/>
>> -</Group>
>> -<Component id="lblConnection" alignment="0" min="-2" max="-2" attributes="0"/>
>> -<Component id="scrConnection" alignment="0" min="-2" pref="499" max="-2" attributes="0"/>
>> +<EmptySpace min="-2" pref="30" max="-2" attributes="0"/>
>> +<Group type="103" groupAlignment="0" attributes="0">
>> +<Component id="lblStorageType" min="-2" max="-2" attributes="0"/>
>> +<Component id="lblStorageDescription" alignment="0" min="-2" max="-2" attributes="0"/>
>> +</Group>
>> +</Group>
>> </Group>
>> <EmptySpace max="32767" attributes="0"/>
>> </Group>
>> @@ -50,20 +57,26 @@
>> <EmptySpace max="-2" attributes="0"/>
>> <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
>> <EmptySpace type="unrelated" max="-2" attributes="0"/>
>> -<Group type="103" groupAlignment="0" attributes="0">
>> -<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
>> -<Component id="lblStorageType" min="-2" max="-2" attributes="0"/>
>> +<Group type="103" groupAlignment="3" attributes="0">
>> +<Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
>> +<Component id="lblStorageType" alignment="3" min="-2" max="-2" attributes="0"/>
>> </Group>
>> -<EmptySpace min="5" pref="5" max="5" attributes="0"/>
>> +<EmptySpace min="-2" pref="2" max="-2" attributes="0"/>
>> <Component id="lblStorageDescription" min="-2" max="-2" attributes="0"/>
>> -<EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
>> +<EmptySpace type="separate" max="-2" attributes="0"/>
>> <Group type="103" groupAlignment="0" attributes="0">
>> <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
>> <Component id="lblEncryption" min="-2" max="-2" attributes="0"/>
>> </Group>
>> -<EmptySpace min="-2" pref="30" max="-2" attributes="0"/>
>> +<EmptySpace type="unrelated" max="-2" attributes="0"/>
>> +<Group type="103" groupAlignment="3" attributes="0">
>> +<Component id="jspRemoteInterval" alignment="3" min="-2" max="-2" attributes="0"/>
>> +<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
>> +<Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
>> +</Group>
>> +<EmptySpace pref="28" max="32767" attributes="0"/>
>> <Component id="lblConnection" min="-2" max="-2" attributes="0"/>
>> -<EmptySpace pref="12" max="32767" attributes="0"/>
>> +<EmptySpace type="unrelated" max="-2" attributes="0"/>
>> <Component id="scrConnection" min="-2" pref="237" max="-2" attributes="0"/>
>> <EmptySpace max="-2" attributes="0"/>
>> </Group>
>> @@ -140,5 +153,22 @@
>> <Property name="name" type="java.lang.String" value="lblStorageDescription" noResource="true"/>
>> </Properties>
>> </Component>
>> +<Component class="javax.swing.JSpinner" name="jspRemoteInterval">
>> +<Properties>
>> +<Property name="name" type="java.lang.String" value="jspRemoteInterval" noResource="true"/>
>> +</Properties>
>> +</Component>
>> +<Component class="javax.swing.JLabel" name="jLabel2">
>> +<Properties>
>> +<Property name="text" type="java.lang.String" value="Watch Interval"/>
>> +<Property name="name" type="java.lang.String" value="lblWatchInterval" noResource="true"/>
>> +</Properties>
>> +</Component>
>> +<Component class="javax.swing.JLabel" name="jLabel5">
>> +<Properties>
>> +<Property name="text" type="java.lang.String" value="ms"/>
>> +<Property name="name" type="java.lang.String" value="lblMiliSeconds" noResource="true"/>
>> +</Properties>
>> +</Component>
>> </SubComponents>
>> </Form>
>>
>> === modified file 'syncany/src/org/syncany/gui/settings/RepositoryPanel.java'
>> --- syncany/src/org/syncany/gui/settings/RepositoryPanel.java 2011-06-05 21:26:56 +0000
>> +++ syncany/src/org/syncany/gui/settings/RepositoryPanel.java 2011-06-16 14:58:24 +0000
>> @@ -21,7 +21,6 @@
>> *
>> * Created on Mar 27, 2011, 12:51:42 AM
>> */
>> -
>> package org.syncany.gui.settings;
>>
>> import java.util.ResourceBundle;
>> @@ -37,146 +36,169 @@
>> * @author Philipp C. Heckel<philipp.heckel@xxxxxxxxx>
>> */
>> public class RepositoryPanel extends SettingsPanel {
>> +
>> private Profile profile;
>> private ConfigPanel pnlConnection;
>> private ResourceBundle resourceBundle;
>>
>> /** Creates new form ProxyPanel */
>> public RepositoryPanel(Profile profile) {
>> - resourceBundle = Config.getInstance().getResourceBundle();
>> - initComponents();
>> + resourceBundle = Config.getInstance().getResourceBundle();
>> + initComponents();
>>
>> this.profile = profile;
>> this.pnlConnection = profile.getRepository().getConnection().createConfigPanel();
>>
>> scrConnection.setViewportView(pnlConnection);
>> - //scrConnection.getViewport().setViewPosition(new Point(0, 0));
>> -
>> + //scrConnection.getViewport().setViewPosition(new Point(0, 0));
>> +
>> }
>> -
>> +
>> @Override
>> - public void load() {
>> - Repository repo = profile.getRepository();
>> - Connection connection = repo.getConnection();
>> -
>> - lblStorageType.setText(connection.getPluginInfo().getName() + ", " + resourceBundle.getString("reposp_version") + " " + repo.getConnection().getPluginInfo().getVersionStr());
>> - lblStorageDescription.setText(connection.getPluginInfo().getDescripton());
>> - lblEncryption.setText(repo.getEncryption().getCipherStr() + ", " + repo.getEncryption().getKeylength() + " bit");
>> -
>> - lblConnection.setText(connection.getPluginInfo().getName()+ resourceBundle.getString("reposp_connection_details"));
>> + public void load() {
>> + Repository repo = profile.getRepository();
>> + Connection connection = repo.getConnection();
>> +
>> + lblStorageType.setText(connection.getPluginInfo().getName() + ", " + resourceBundle.getString("reposp_version") + " " + repo.getConnection().getPluginInfo().getVersionStr());
>> + lblStorageDescription.setText(connection.getPluginInfo().getDescripton());
>> + lblEncryption.setText(repo.getEncryption().getCipherStr() + ", " + repo.getEncryption().getKeylength() + " bit");
>> +
>> + lblConnection.setText(connection.getPluginInfo().getName() + resourceBundle.getString("reposp_connection_details"));
>> pnlConnection.load();
>> + jspRemoteInterval.setValue(profile.getRemoteWatcher().getInterval());
>> }
>>
>> @Override
>> public void save() {
>> // TODO
>> pnlConnection.save();
>> + profile.getRemoteWatcher().setInterval((Integer) jspRemoteInterval.getValue());
>> }
>>
>> -
>> /** This method is called from within the constructor to
>> * initialize the form.
>> * WARNING: Do NOT modify this code. The content of this method is
>> * always regenerated by the Form Editor.
>> */
>> @SuppressWarnings("unchecked")
>> - //<editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
>> - private void initComponents() {
>> -
>> - jLabel1 = new javax.swing.JLabel();
>> - lblConnection = new javax.swing.JLabel();
>> - scrConnection = new javax.swing.JScrollPane();
>> - jLabel3 = new javax.swing.JLabel();
>> - jLabel4 = new javax.swing.JLabel();
>> - lblStorageType = new javax.swing.JLabel();
>> - lblEncryption = new javax.swing.JLabel();
>> - lblStorageDescription = new javax.swing.JLabel();
>> -
>> - jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD));
>> - jLabel1.setText(resourceBundle.getString("reposp_remote_storage"));
>> - jLabel1.setName("jLabel1"); // NOI18N
>> -
>> - lblConnection.setFont(lblConnection.getFont().deriveFont(lblConnection.getFont().getStyle() | java.awt.Font.BOLD));
>> - lblConnection.setText(resourceBundle.getString("reposp_connection"));
>> - lblConnection.setName("lblConnection"); // NOI18N
>> -
>> - scrConnection.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
>> - scrConnection.setViewportBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
>> - scrConnection.setName("scrConnection"); // NOI18N
>> -
>> - jLabel3.setText(resourceBundle.getString("reposp_connection_type"));
>> - jLabel3.setName("jLabel3"); // NOI18N
>> -
>> - jLabel4.setText(resourceBundle.getString("reposp_encryption"));
>> - jLabel4.setName("jLabel4"); // NOI18N
>> -
>> - lblStorageType.setText(resourceBundle.getString("reposp_temp_type"));
>> - lblStorageType.setName("lblStorageType"); // NOI18N
>> -
>> - lblEncryption.setText(resourceBundle.getString("reposp_temp_encryption"));
>> - lblEncryption.setName("lblEncryption"); // NOI18N
>> -
>> - lblStorageDescription.setText(resourceBundle.getString("reposp_temp_description"));
>> - lblStorageDescription.setName("lblStorageDescription"); // NOI18N
>> -
>> - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
>> - this.setLayout(layout);
>> - layout.setHorizontalGroup(
>> - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addGroup(layout.createSequentialGroup()
>> - .addContainerGap()
>> - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addGroup(layout.createSequentialGroup()
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
>> - .addComponent(jLabel1))
>> - .addGroup(layout.createSequentialGroup()
>> - .addComponent(jLabel3)
>> - .addGap(12, 12, 12)
>> - .addComponent(lblStorageType))
>> - .addGroup(layout.createSequentialGroup()
>> - .addGap(120, 120, 120)
>> - .addComponent(lblStorageDescription))
>> - .addGroup(layout.createSequentialGroup()
>> - .addComponent(jLabel4)
>> - .addGap(50, 50, 50)
>> - .addComponent(lblEncryption))
>> - .addComponent(lblConnection)
>> - .addComponent(scrConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 499, javax.swing.GroupLayout.PREFERRED_SIZE))
>> - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
>> - );
>> - layout.setVerticalGroup(
>> - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addGroup(layout.createSequentialGroup()
>> - .addContainerGap()
>> - .addComponent(jLabel1)
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addComponent(jLabel3)
>> - .addComponent(lblStorageType))
>> - .addGap(5, 5, 5)
>> - .addComponent(lblStorageDescription)
>> - .addGap(15, 15, 15)
>> - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> - .addComponent(jLabel4)
>> - .addComponent(lblEncryption))
>> - .addGap(30, 30, 30)
>> - .addComponent(lblConnection)
>> - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
>> - .addComponent(scrConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)
>> - .addContainerGap())
>> - );
>> - }//</editor-fold>//GEN-END:initComponents
>> -
>> -
>> - // Variables declaration - do not modify//GEN-BEGIN:variables
>> - private javax.swing.JLabel jLabel1;
>> - private javax.swing.JLabel jLabel3;
>> - private javax.swing.JLabel jLabel4;
>> - private javax.swing.JLabel lblConnection;
>> - private javax.swing.JLabel lblEncryption;
>> - private javax.swing.JLabel lblStorageDescription;
>> - private javax.swing.JLabel lblStorageType;
>> - private javax.swing.JScrollPane scrConnection;
>> - // End of variables declaration//GEN-END:variables
>> -
>> + //<editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
>> + private void initComponents() {
>> +
>> + jLabel1 = new javax.swing.JLabel();
>> + lblConnection = new javax.swing.JLabel();
>> + scrConnection = new javax.swing.JScrollPane();
>> + jLabel3 = new javax.swing.JLabel();
>> + jLabel4 = new javax.swing.JLabel();
>> + lblStorageType = new javax.swing.JLabel();
>> + lblEncryption = new javax.swing.JLabel();
>> + lblStorageDescription = new javax.swing.JLabel();
>> + jspRemoteInterval = new javax.swing.JSpinner();
>> + jLabel2 = new javax.swing.JLabel();
>> + jLabel5 = new javax.swing.JLabel();
>> +
>> + jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD));
>> + jLabel1.setText("Remote Storage");
>> + jLabel1.setName("jLabel1"); // NOI18N
>> +
>> + lblConnection.setFont(lblConnection.getFont().deriveFont(lblConnection.getFont().getStyle() | java.awt.Font.BOLD));
>> + lblConnection.setText("(xyz) Connection");
>> + lblConnection.setName("lblConnection"); // NOI18N
>> +
>> + scrConnection.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
>> + scrConnection.setViewportBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
>> + scrConnection.setName("scrConnection"); // NOI18N
>> +
>> + jLabel3.setText("Connection Type:");
>> + jLabel3.setName("jLabel3"); // NOI18N
>> +
>> + jLabel4.setText("Encryption:");
>> + jLabel4.setName("jLabel4"); // NOI18N
>> +
>> + lblStorageType.setText("(type)");
>> + lblStorageType.setName("lblStorageType"); // NOI18N
>> +
>> + lblEncryption.setText("(encryption)");
>> + lblEncryption.setName("lblEncryption"); // NOI18N
>> +
>> + lblStorageDescription.setText("(description)");
>> + lblStorageDescription.setName("lblStorageDescription"); // NOI18N
>> +
>> + jspRemoteInterval.setName("jspRemoteInterval"); // NOI18N
>> +
>> + jLabel2.setText("Watch Interval");
>> + jLabel2.setName("lblWatchInterval"); // NOI18N
>> +
>> + jLabel5.setText("ms");
>> + jLabel5.setName("lblMiliSeconds"); // NOI18N
>> +
>> + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
>> + this.setLayout(layout);
>> + layout.setHorizontalGroup(
>> + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addGroup(layout.createSequentialGroup()
>> + .addContainerGap()
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addGroup(layout.createSequentialGroup()
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
>> + .addComponent(jLabel1))
>> + .addComponent(scrConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 499, javax.swing.GroupLayout.PREFERRED_SIZE)
>> + .addComponent(lblConnection)
>> + .addGroup(layout.createSequentialGroup()
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addComponent(jLabel4)
>> + .addComponent(jLabel2))
>> + .addGap(50, 50, 50)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
>> + .addComponent(jspRemoteInterval)
>> + .addComponent(lblEncryption, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
>> + .addComponent(jLabel5))
>> + .addGroup(layout.createSequentialGroup()
>> + .addComponent(jLabel3)
>> + .addGap(30, 30, 30)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addComponent(lblStorageType)
>> + .addComponent(lblStorageDescription))))
>> + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
>> + );
>> + layout.setVerticalGroup(
>> + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addGroup(layout.createSequentialGroup()
>> + .addContainerGap()
>> + .addComponent(jLabel1)
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
>> + .addComponent(jLabel3)
>> + .addComponent(lblStorageType))
>> + .addGap(2, 2, 2)
>> + .addComponent(lblStorageDescription)
>> + .addGap(18, 18, 18)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
>> + .addComponent(jLabel4)
>> + .addComponent(lblEncryption))
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
>> + .addComponent(jspRemoteInterval, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
>> + .addComponent(jLabel2)
>> + .addComponent(jLabel5))
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
>> + .addComponent(lblConnection)
>> + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
>> + .addComponent(scrConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)
>> + .addContainerGap())
>> + );
>> + }//</editor-fold>//GEN-END:initComponents
>> + // Variables declaration - do not modify//GEN-BEGIN:variables
>> + private javax.swing.JLabel jLabel1;
>> + private javax.swing.JLabel jLabel2;
>> + private javax.swing.JLabel jLabel3;
>> + private javax.swing.JLabel jLabel4;
>> + private javax.swing.JLabel jLabel5;
>> + private javax.swing.JSpinner jspRemoteInterval;
>> + private javax.swing.JLabel lblConnection;
>> + private javax.swing.JLabel lblEncryption;
>> + private javax.swing.JLabel lblStorageDescription;
>> + private javax.swing.JLabel lblStorageType;
>> + private javax.swing.JScrollPane scrConnection;
>> + // End of variables declaration//GEN-END:variables
>> }
>>
>> === modified file 'syncany/src/org/syncany/watch/remote/RemoteWatcher.java'
>> --- syncany/src/org/syncany/watch/remote/RemoteWatcher.java 2011-05-23 16:50:04 +0000
>> +++ syncany/src/org/syncany/watch/remote/RemoteWatcher.java 2011-06-16 14:58:24 +0000
>> @@ -19,11 +19,13 @@
>>
>> import java.util.Map.Entry;
>> import org.syncany.config.Config;
>> +import org.syncany.config.ConfigNode;
>> import org.syncany.config.Profile;
>> import org.syncany.connection.plugins.TransferManager;
>> import org.syncany.db.CloneClient;
>> import org.syncany.db.CloneFile;
>> import org.syncany.db.DatabaseHelper;
>> +import org.syncany.exceptions.ConfigException;
>> import org.syncany.exceptions.RemoteFileNotFoundException;
>> import org.syncany.repository.files.RemoteFile;
>> import org.syncany.exceptions.StorageException;
>> @@ -63,42 +65,33 @@
>> *
>> * @author Philipp C. Heckel<philipp.heckel@xxxxxxxxx>
>> */
>> -public class RemoteWatcher {
>> +public class RemoteWatcher implements org.syncany.config.Configurable {
>> +
>> private static final Logger logger = Logger.getLogger(RemoteWatcher.class.getSimpleName());
>> -
>> - private static final int INTERVAL = 10000;
>> + private static final int DEFAULT_INTERVAL = 10000;
>> private static final boolean DEBUG_GZIP_AND_ENCRYPT_UPDATE_FILES = false;
>> -
>> private Config config;
>> - private DatabaseHelper db;
>> -
>> - private Profile profile;
>> -
>> + private DatabaseHelper db;
>> + private int interval = DEFAULT_INTERVAL;
>> + private Profile profile;
>> private ChangeManager changeManager;
>> private Timer timer;
>> -
>> private Map<String, RemoteFile> remoteFileList;
>> private StructuredFileList fileList;
>> private UpdateList updateList;
>> private TransferManager transfer;
>> -
>> // TODO this should be in the DB cached somewhere.
>> private Long lastFileVersionCount;
>> -
>> // TODO this should be in the DB cached somewhere.
>> private Date lastRepoFileUpdate;
>> -
>> // TODO this should be in the DB cached somewhere.
>> private Date lastUpdateFileDate;
>> -
>> // TODO this should be in the DB cached somewhere.
>> private Date lastLocalProfileFileUpdate;
>> -
>> // TODO this should be in the DB cached somewhere.
>> private Date lastLocalImageFileUpdate;
>>
>> -
>> - public RemoteWatcher(Profile profile) {
>> + public RemoteWatcher(Profile profile) {
>> this.profile = profile;
>>
>> this.changeManager = new ChangeManager(profile);
>> @@ -108,27 +101,34 @@
>> // cp. start()
>> this.config = null;
>> this.db = null;
>> -
>> +
>> // cp. doUpdateCheck()
>> this.remoteFileList = null;
>> this.updateList = null;
>> this.transfer = null;
>> }
>>
>> - public synchronized void start() {
>> + public synchronized void setInterval(int interval) {
>> + if (interval>= 1000) {
>> + this.interval = interval;
>> + }
>> + startUpdateCheck();
>> + }
>> +
>> + public int getInterval() {
>> + return this.interval;
>> + }
>> +
>> + public synchronized void start() {
>> // Dependencies
>> if (config == null) {
>> config = Config.getInstance();
>> db = DatabaseHelper.getInstance();
>> }
>> -
>> +
>> // Reset connection
>> reset();
>> -
>> - timer = new Timer("RemoteWatcher");
>> - timer.scheduleAtFixedRate(new TimerTask() {
>> - @Override public void run() { doUpdateCheck(); } }, 0, INTERVAL);
>> -
>> + startUpdateCheck();
>> changeManager.start();
>> }
>>
>> @@ -143,8 +143,27 @@
>> timer = null;
>> }
>>
>> + private void startUpdateCheck() {
>> + logger.log(Level.INFO, "Staring remote watcher...");
>> + if (timer != null) {
>> + try {
>> + timer.cancel();
>> + } catch (IllegalStateException ex) {
>> + logger.log(Level.SEVERE, ex.getMessage());
>> + }
>> + }
>> + timer = new Timer("RemoteWatcher");
>> + timer.scheduleAtFixedRate(new TimerTask() {
>> + @Override
>> + public void run() {
>> + logger.log(Level.INFO, "Do Update Check Interval = " + interval);
>> + doUpdateCheck();
>> + }
>> + }, 0, interval);
>> + }
>> +
>> private void reset() {
>> -
>> +
>> transfer = profile.getRepository().getConnection().createTransferManager();
>> updateList = new UpdateList(profile);
>> }
>> @@ -158,10 +177,10 @@
>>
>> try {
>> updateFileList();
>> -
>> +
>> updateRepository();
>> commitRepository();
>> -
>> +
>> // 1. download update files
>> downloadUpdates();
>>
>> @@ -170,112 +189,108 @@
>>
>> // 4. Create and upload local updates ///////
>> commitLocalUpdateFile();
>> -
>> +
>> // Profiles
>> commitLocalProfile();
>> updateRemoteProfiles();
>>
>> // Images
>> - commitLocalImage();
>> + commitLocalImage();
>> updateRemoteImages();
>>
>> // 5. Delete old updates (only mine!) ///////
>> deleteOldUpdateFiles();
>> deleteOldProfileFiles();
>> deleteOldImageFiles();
>> - }
>> - catch (StorageException ex) {
>> + } catch (StorageException ex) {
>> logger.log(Level.WARNING, "Update check failed. Trying again in a couple of seconds.", ex);
>> - }
>> - finally {
>> + } finally {
>> if (logger.isLoggable(Level.INFO)) {
>> logger.info("DONE WITH PERIODIC UPDATE CHECK ...");
>> }
>>
>> - try { transfer.disconnect(); }
>> - catch (StorageException ex) { /* Fressen! */ }
>> + try {
>> + transfer.disconnect();
>> + } catch (StorageException ex) { /* Fressen! */ }
>> }
>> -
>> +
>> }
>>
>> private void updateFileList() throws StorageException {
>> remoteFileList = transfer.list();
>> fileList = new StructuredFileList(profile.getRepository(), remoteFileList);
>> }
>> -
>> -
>> +
>> private void updateRepository() throws StorageException {
>> RepositoryFile repoFile = fileList.getNewestRepositoryFile();
>> -
>> +
>> if (repoFile == null) {
>> throw new StorageException("Unable to find repository-* file.");
>> }
>> -
>> +
>> // Are we already up-to-date?
>> if (lastRepoFileUpdate != null&& !repoFile.getLastUpdate().after(lastRepoFileUpdate)) {
>> return;
>> }
>> -
>> +
>> // Do download and read it!
>> - try {
>> + try {
>> profile.getRepository().update(transfer, fileList);
>> lastRepoFileUpdate = repoFile.getLastUpdate();
>> - }
>> - catch (Exception e) {
>> + } catch (Exception e) {
>> throw new StorageException(e);
>> }
>> - }
>> -
>> + }
>> +
>> private void commitRepository() throws StorageException {
>> RepositoryFile repoFile = fileList.getNewestRepositoryFile();
>> -
>> +
>> if (repoFile == null) {
>> throw new StorageException("Unable to find repository-* file.");
>> }
>> -
>> +
>> // Are we already up-to-date?
>> if (!profile.getRepository().isChanged()) {
>> if (logger.isLoggable(Level.INFO)) {
>> logger.info("repository has not changed locally. No need to upload.");
>> }
>> -
>> +
>> return;
>> }
>> -
>> +
>> // Upload
>> if (logger.isLoggable(Level.INFO)) {
>> logger.info("Uploading changed repository file ...");
>> }
>> -
>> - try {
>> +
>> + try {
>> profile.getRepository().commit(transfer, fileList, false);
>> - }
>> - catch (Exception e) {
>> + } catch (Exception e) {
>> throw new StorageException(e);
>> }
>> - }
>> + }
>>
>> private void downloadUpdates() throws StorageException {
>> if (logger.isLoggable(Level.INFO)) {
>> logger.info("2. Downloading update lists ...");
>> }
>> -
>> +
>> // Find newest client update files
>> Collection<UpdateFile> newestUpdateFiles = fileList.getRemoteUpdateFiles().values();
>> -
>> +
>> for (UpdateFile updateFile : newestUpdateFiles) {
>> // Get client from DB (or create it!)
>> - CloneClient client = db.getClient(profile, updateFile.getMachineName(), true);
>> -
>> + CloneClient client = db.getClient(profile, updateFile.getMachineName(), true);
>> +
>> // Ignore if we are up-to-date
>> if (client.getLastUpdate() != null&& !updateFile.getLastUpdate().after(client.getLastUpdate())) {
>> if (logger.isLoggable(Level.INFO)) {
>> logger.log(Level.INFO, " - Client ''{0}'' is up-to-date", updateFile.getMachineName());
>> }
>> -
>> +
>> continue;
>> }
>> -
>> +
>> try {
>> // Download update file
>> if (logger.isLoggable(Level.INFO)) {
>> @@ -295,12 +310,11 @@
>>
>> // Add to update manager
>> updateList.addRemoteUpdateFile(client, updateFile);
>> - }
>> - catch (Exception ex) {
>> + } catch (Exception ex) {
>> if (logger.isLoggable(Level.WARNING)) {
>> logger.log(Level.WARNING, "Reading update file of client {0} failed. Skipping update check.", client.getMachineName());
>> }
>> -
>> +
>> throw new StorageException(ex);
>> }
>> }
>> @@ -317,15 +331,15 @@
>>
>> // TODO should the changes be synchronous?
>> // TODO because setting the clients' lastUpdate value assumes that the change mgr doesnt crash
>> -
>> +
>> // Update last-updated date of clients
>> if (logger.isLoggable(Level.INFO)) {
>> logger.info("3b. Updating client DB entries ...");
>> }
>>
>> for (Map.Entry<CloneClient, UpdateFile> e : updateList.getRemoteUpdateFiles().entrySet()) {
>> - CloneClient client = e.getKey();
>> - UpdateFile updateFile = e.getValue();
>> + CloneClient client = e.getKey();
>> + UpdateFile updateFile = e.getValue();
>>
>> client.setLastUpdate(updateFile.getLastUpdate());
>> client.merge();
>> @@ -350,25 +364,24 @@
>> lastUpdateFileDate = new Date();
>> lastFileVersionCount = fileVersionCount;
>>
>> - File localUpdateFile = null;
>> + File localUpdateFile = null;
>> UpdateFile remoteUpdateFile = new UpdateFile(profile.getRepository(), config.getMachineName(), lastUpdateFileDate);
>>
>> try {
>> // Make temp. update file
>> - localUpdateFile = config.getCache().createTempFile("update-"+config.getMachineName());
>> - logger.info("4. Writing local changes to '"+localUpdateFile+"' ...");
>> + localUpdateFile = config.getCache().createTempFile("update-" + config.getMachineName());
>> + logger.info("4. Writing local changes to '" + localUpdateFile + "' ...");
>>
>> List<CloneFile> updatedFiles = db.getHistory(profile);
>> remoteUpdateFile.setVersions(updatedFiles);
>> remoteUpdateFile.write(localUpdateFile, DEBUG_GZIP_AND_ENCRYPT_UPDATE_FILES);
>>
>> // Upload
>> - logger.info(" - Uploading file to temp. file '"+remoteUpdateFile.getName()+"' ...");
>> + logger.info(" - Uploading file to temp. file '" + remoteUpdateFile.getName() + "' ...");
>> transfer.upload(localUpdateFile, remoteUpdateFile);
>>
>> localUpdateFile.delete();
>> - }
>> - catch (IOException ex) {
>> + } catch (IOException ex) {
>> if (localUpdateFile != null) {
>> localUpdateFile.delete();
>> }
>> @@ -376,18 +389,18 @@
>> logger.log(Level.SEVERE, null, ex);
>> }
>> }
>> -
>> +
>> // Upload new local profile (if changed)
>> - private void commitLocalProfile() throws StorageException {
>> + private void commitLocalProfile() throws StorageException {
>> ProfileFile localNewestProfileFile = fileList.getNewestProfileFile();
>> -
>> +
>> // Skip if no update needed
>> - if (!(localNewestProfileFile == null || lastLocalProfileFileUpdate == null ||
>> - localNewestProfileFile.getLastUpdate().after(lastLocalProfileFileUpdate))) {
>> -
>> + if (!(localNewestProfileFile == null || lastLocalProfileFileUpdate == null
>> + || localNewestProfileFile.getLastUpdate().after(lastLocalProfileFileUpdate))) {
>> +
>> return;
>> }
>> -
>> +
>> Date newDate = new Date();
>> ProfileFile localProfileFile = new ProfileFile(profile.getRepository(), config.getMachineName(), newDate);
>>
>> @@ -408,13 +421,12 @@
>>
>> // Update
>> lastLocalProfileFileUpdate = newDate;
>> - }
>> - catch (IOException e) {
>> + } catch (IOException e) {
>> logger.log(Level.SEVERE, "ERROR while uploading local profile.", e);
>> // TODO do something
>> }
>> }
>> -
>> +
>> private void updateRemoteProfiles() throws RemoteFileNotFoundException, StorageException {
>> /// Download new user profiles
>> Collection<ProfileFile> remoteProfileFiles = fileList.getRemoteProfileFiles().values();
>> @@ -426,7 +438,7 @@
>> if (client.getLastProfileUpdate() != null&& !f.getLastUpdate().after(client.getLastProfileUpdate())) {
>> continue;
>> }
>> -
>> +
>> if (logger.isLoggable(Level.INFO)) {
>> logger.log(Level.INFO, "Downloading profile of client ''{0}'' ...", client.getMachineName());
>> }
>> @@ -440,68 +452,67 @@
>> client.setLastProfileUpdate(new Date());
>> client.setUserName(f.getUserName());
>> client.merge();
>> - }
>> - catch (IOException e) {
>> + } catch (IOException e) {
>> logger.log(Level.SEVERE, "ERROR while downloading remote profile of " + client.getMachineName() + ".", e);
>> // TODO do something
>> - }
>> + }
>> }
>> }
>> -
>> +
>> private void commitLocalImage() throws RemoteFileNotFoundException, StorageException {
>> // Upload local image (if updated)
>> ImageFile localNewestImageFile = fileList.getNewestImageFile();
>> -
>> +
>> // Skip if no update needed
>> - if (!(localNewestImageFile == null || lastLocalImageFileUpdate == null ||
>> - localNewestImageFile.getLastUpdate().after(lastLocalImageFileUpdate))) {
>> -
>> + if (!(localNewestImageFile == null || lastLocalImageFileUpdate == null
>> + || localNewestImageFile.getLastUpdate().after(lastLocalImageFileUpdate))) {
>> +
>> return;
>> }
>> -
>> +
>> return;
>> /*
>> Date newDate = new Date();
>> ImageFile localImageFile = new ImageFile(profile.getRepository(), config.getMachineName(), newDate);
>>
>> if (lastLocalImageFileUpdate == null || localNewestImageFile == null || localNewestImageFile.getLastUpdate().after(lastLocalImageFileUpdate)) {
>> - // If 'No Image' is selected, OR (!) if the local image file is not there
>> - if (config.getUserImageType() == Config.UserImageType.None
>> - || config.getUserImageFile() == null || !config.getUserImageFile().exists()) {
>> -
>> - if (localNewestImageFile != null) {
>> - transfer.delete(localNewestImageFile);
>> - }
>> -
>> - lastLocalImageFileUpdate = new Date();
>> - } else {
>> - try {
>> - File originalImageFile = null;
>> -
>> - if (config.getUserImageType() == Config.UserImageType.System) {
>> - originalImageFile = config.getCache().createTempFile("image-" + config.getMachineName());
>> - Image image = ImageUtil.getScaledImage(config.getUserImage(), Constants.PROFILE_IMAGE_MAX_WIDTH, Constants.PROFILE_IMAGE_MAX_HEIGHT);
>> - ImageIO.write(ImageUtil.toBufferedImage(image), "png", originalImageFile);
>> - }
>> - else if (config.getUserImageType() == Config.UserImageType.Other) {
>> - originalImageFile = config.getUserImageFile();
>> - }
>> -
>> - // TODO encrypt
>> -
>> - Date newDate = new Date();
>> - transfer.upload(originalImageFile, new ImageFile(profile.getRepository(), config.getMachineName(), newDate));
>> -
>> - // Update cached value
>> - lastLocalImageFileUpdate = newDate;
>> - } catch (IOException e) {
>> - // TODO do something
>> - logger.log(Level.WARNING, "Error while uploading local image.", e);
>> - }
>> - }
>> + // If 'No Image' is selected, OR (!) if the local image file is not there
>> + if (config.getUserImageType() == Config.UserImageType.None
>> + || config.getUserImageFile() == null || !config.getUserImageFile().exists()) {
>> +
>> + if (localNewestImageFile != null) {
>> + transfer.delete(localNewestImageFile);
>> + }
>> +
>> + lastLocalImageFileUpdate = new Date();
>> + } else {
>> + try {
>> + File originalImageFile = null;
>> +
>> + if (config.getUserImageType() == Config.UserImageType.System) {
>> + originalImageFile = config.getCache().createTempFile("image-" + config.getMachineName());
>> + Image image = ImageUtil.getScaledImage(config.getUserImage(), Constants.PROFILE_IMAGE_MAX_WIDTH, Constants.PROFILE_IMAGE_MAX_HEIGHT);
>> + ImageIO.write(ImageUtil.toBufferedImage(image), "png", originalImageFile);
>> + }
>> + else if (config.getUserImageType() == Config.UserImageType.Other) {
>> + originalImageFile = config.getUserImageFile();
>> + }
>> +
>> + // TODO encrypt
>> +
>> + Date newDate = new Date();
>> + transfer.upload(originalImageFile, new ImageFile(profile.getRepository(), config.getMachineName(), newDate));
>> +
>> + // Update cached value
>> + lastLocalImageFileUpdate = newDate;
>> + } catch (IOException e) {
>> + // TODO do something
>> + logger.log(Level.WARNING, "Error while uploading local image.", e);
>> + }
>> + }
>> }*/
>> }
>> -
>> +
>> private void updateRemoteImages() {
>> // Download new user images (if changed)
>> Map<String, ImageFile> remoteImageFiles = fileList.getRemoteImageFiles();
>> @@ -513,11 +524,11 @@
>> if (client.getLastImageUpdate() != null&& !f.getLastUpdate().after(client.getLastImageUpdate())) {
>> continue;
>> }
>> -
>> +
>> if (logger.isLoggable(Level.INFO)) {
>> logger.log(Level.INFO, "Downloading image of client ''{0}'' ...", client.getMachineName());
>> }
>> -
>> +
>> // Download
>> try {
>> File tempRemoteImage = config.getCache().createTempFile(f.getName());
>> @@ -530,8 +541,7 @@
>> // Apply and persist
>> client.setLastImageUpdate(new Date());
>> client.merge();
>> - }
>> - catch (Exception e) {
>> + } catch (Exception e) {
>> if (logger.isLoggable(Level.SEVERE)) {
>> logger.log(Level.SEVERE, "ERROR while downloading remote image of " + client.getMachineName() + ".", e);
>> }
>> @@ -541,47 +551,60 @@
>>
>> private void deleteOldUpdateFiles() {
>> TreeMap<Long, UpdateFile> localUpdatesMap = fileList.getLocalUpdateFiles();
>> -
>> +
>> while (localUpdatesMap.size()> 1) {
>> - Entry<Long, UpdateFile> firstEntry = localUpdatesMap.pollFirstEntry();
>> + Entry<Long, UpdateFile> firstEntry = localUpdatesMap.pollFirstEntry();
>>
>> try {
>> - transfer.delete(firstEntry.getValue());
>> - }
>> - catch (Exception e) {
>> + transfer.delete(firstEntry.getValue());
>> + } catch (Exception e) {
>> logger.log(Level.WARNING, "Could not delete old update file", e);
>> }
>> }
>> }
>> -
>> +
>> private void deleteOldProfileFiles() {
>> TreeMap<Long, ProfileFile> localUpdatesMap = fileList.getLocalProfileFiles();
>> -
>> +
>> while (localUpdatesMap.size()> 1) {
>> - Entry<Long, ProfileFile> firstEntry = localUpdatesMap.pollFirstEntry();
>> + Entry<Long, ProfileFile> firstEntry = localUpdatesMap.pollFirstEntry();
>>
>> try {
>> - transfer.delete(firstEntry.getValue());
>> - }
>> - catch (Exception e) {
>> + transfer.delete(firstEntry.getValue());
>> + } catch (Exception e) {
>> logger.log(Level.WARNING, "Could not delete old profile file", e);
>> }
>> }
>> }
>> -
>> +
>> private void deleteOldImageFiles() {
>> TreeMap<Long, ImageFile> localUpdatesMap = fileList.getLocalImageFiles();
>> -
>> +
>> while (localUpdatesMap.size()> 1) {
>> - Entry<Long, ImageFile> firstEntry = localUpdatesMap.pollFirstEntry();
>> + Entry<Long, ImageFile> firstEntry = localUpdatesMap.pollFirstEntry();
>>
>> try {
>> - transfer.delete(firstEntry.getValue());
>> - }
>> - catch (Exception e) {
>> + transfer.delete(firstEntry.getValue());
>> + } catch (Exception e) {
>> logger.log(Level.WARNING, "Could not delete old image file", e);
>> }
>> }
>> }
>>
>> + @Override
>> + public void load(ConfigNode node) throws ConfigException {
>> + if (node != null) {
>> + ConfigNode remote = node.findChildByName("remote");
>> + Integer inter = remote.getInteger("interval");
>> + if (inter != null) {
>> + interval = inter;
>> + }
>> + }
>> + }
>> +
>> + @Override
>> + public void save(ConfigNode node) {
>> + ConfigNode remote = node.findOrCreateChildByXpath("remote", "remote");
>> + remote.setProperty("interval", interval);
>> + }
>> }
>>
>>
>> --
>> Mailing list: https://launchpad.net/~syncany-team
>> Post to : syncany-team@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~syncany-team
>> More help : https://help.launchpad.net/ListHelp
>>
>>
>
>
>
> --
>
--
https://code.launchpad.net/~isak-karlsson/syncany/syncany-remote-watch-interval/+merge/64850
Your team Syncany Team is requested to review the proposed merge of lp:~isak-karlsson/syncany/syncany-remote-watch-interval into lp:syncany.
Follow ups
References