From f949fa50877732307da25b875f788a0844e6b417 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sat, 22 Oct 2016 02:27:12 +0200 Subject: [PATCH] cloud work --- .../diylc-core/.gitignore | 1 + .../cloud/presenter/CloudException.java | 11 ++++ .../cloud/presenter/CloudPresenter.java | 38 ++++++++---- .../presenter/DIYLCServiceException.java | 7 --- .../diylc-library/.gitignore | 1 + .../diylc-swing/.gitignore | 4 ++ .../org/diylc/swing/gui/DialogFactory.java | 4 +- .../src/org/diylc/swing/gui/MainFrame.java | 4 +- .../{OnlineManager.java => CloudPlugIn.java} | 60 ++++++++++--------- .../plugins/cloud/view/UploadDialog.java | 29 +++++++-- 10 files changed, 102 insertions(+), 57 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudException.java delete mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/DIYLCServiceException.java rename diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/{OnlineManager.java => CloudPlugIn.java} (82%) diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.gitignore b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.gitignore index ae3c1726..f4d30d4c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.gitignore +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.gitignore @@ -1 +1,2 @@ /bin/ +/build/ \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudException.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudException.java new file mode 100644 index 00000000..038de46b --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudException.java @@ -0,0 +1,11 @@ +package org.diylc.swing.plugins.cloud.presenter; + +public class CloudException extends Exception { + + private static final long serialVersionUID = 1L; + + public CloudException(Exception e) { + super(e); + } + +} diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudPresenter.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudPresenter.java index bed232b7..5effec7c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudPresenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/CloudPresenter.java @@ -35,16 +35,24 @@ public class CloudPresenter { this.listener = listener; } - public boolean logIn(String username, String password) { + public boolean logIn(String username, String password) + throws CloudException { if (service == null) return false; - LOG.info("Trying to log in to cloud as " + username); - String res = service.login(username, password, getMachineId()); - if (res.equals("Error")) { - LOG.info("Log in failed"); + LOG.info("Trying to login to cloud as " + username); + + String res; + try { + res = service.login(username, password, getMachineId()); + } catch (Exception e) { + throw new CloudException(e); + } + + if (res == null || res.equals("Error")) { + LOG.info("Login failed"); return false; } else { - LOG.info("Log in success"); + LOG.info("Login success"); ConfigurationManager.getInstance().writeValue(USERNAME_KEY, username); ConfigurationManager.getInstance().writeValue(TOKEN_KEY, res); @@ -54,7 +62,7 @@ public class CloudPresenter { } } - public boolean tryLogInWithToken() { + public boolean tryLogInWithToken() throws CloudException { if (service == null) return false; @@ -64,14 +72,18 @@ public class CloudPresenter { null); if (username != null && token != null) { - LOG.info("Trying to log in to cloud using a token as " + username); - String res = service - .loginWithToken(username, token, getMachineId()); - if (res.equals("Error")) { - LOG.info("Log in failed"); + LOG.info("Trying to login to cloud using a token as " + username); + String res; + try { + res = service.loginWithToken(username, token, getMachineId()); + } catch (Exception e) { + throw new CloudException(e); + } + if (res == null || res.equals("Error")) { + LOG.info("Login failed"); return false; } else { - LOG.info("Log in success"); + LOG.info("Login success"); listener.loggedIn(); this.loggedIn = true; return true; diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/DIYLCServiceException.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/DIYLCServiceException.java deleted file mode 100644 index c8c32e1c..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/swing/plugins/cloud/presenter/DIYLCServiceException.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.diylc.swing.plugins.cloud.presenter; - -public class DIYLCServiceException extends Exception { - - private static final long serialVersionUID = 1L; - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/.gitignore b/ diy-layout-creator --username bancika@gmail.com/diylc-library/.gitignore index ae3c1726..f4d30d4c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/.gitignore +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/.gitignore @@ -1 +1,2 @@ /bin/ +/build/ \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.gitignore b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.gitignore index 446108b8..9b0ab937 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.gitignore +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.gitignore @@ -1,2 +1,6 @@ /bin/ /.apt_generated +/log/ +/build/ +autoSave.diy +config.xml \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java index 204f8794..1f3c1ce6 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java @@ -151,8 +151,8 @@ public class DialogFactory { return dialog; } - public UploadDialog createUploadDialog(IPlugInPort plugInPort, CloudPresenter presenter) { - UploadDialog dialog = new UploadDialog(mainFrame, plugInPort, presenter); + public UploadDialog createUploadDialog(IPlugInPort plugInPort) { + UploadDialog dialog = new UploadDialog(mainFrame, plugInPort); return dialog; } diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/MainFrame.java index c85207a6..198c40ef 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/MainFrame.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/gui/MainFrame.java @@ -50,7 +50,7 @@ import org.diylc.swing.ISwingUI; import org.diylc.swing.gui.editor.PropertyEditorDialog; import org.diylc.swing.plugins.autosave.AutoSavePlugin; import org.diylc.swing.plugins.canvas.CanvasPlugin; -import org.diylc.swing.plugins.cloud.OnlineManager; +import org.diylc.swing.plugins.cloud.CloudPlugIn; import org.diylc.swing.plugins.config.ConfigPlugin; import org.diylc.swing.plugins.edit.EditMenuPlugin; import org.diylc.swing.plugins.file.FileFilterEnum; @@ -99,7 +99,7 @@ public class MainFrame extends JFrame implements ISwingUI { presenter.installPlugin(new EditMenuPlugin(this)); presenter.installPlugin(new ConfigPlugin(this)); presenter.installPlugin(new LayersMenuPlugin(this)); - presenter.installPlugin(new OnlineManager(this)); + presenter.installPlugin(new CloudPlugIn(this)); presenter.installPlugin(new HelpMenuPlugin(this)); presenter.installPlugin(new StatusBar(this)); diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/OnlineManager.java b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/CloudPlugIn.java similarity index 82% rename from diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/OnlineManager.java rename to diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/CloudPlugIn.java index 6d427aca..4a5d1f0e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/OnlineManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/CloudPlugIn.java @@ -17,6 +17,7 @@ import org.diylc.presenter.Presenter; import org.diylc.swing.ISwingUI; import org.diylc.swing.gui.DialogFactory; import org.diylc.swing.gui.DummyView; +import org.diylc.swing.plugins.cloud.presenter.CloudException; import org.diylc.swing.plugins.cloud.presenter.CloudListener; import org.diylc.swing.plugins.cloud.presenter.CloudPresenter; import org.diylc.swing.plugins.cloud.view.LoginDialog; @@ -26,16 +27,16 @@ import org.diylc.swing.plugins.file.FileFilterEnum; import org.diylc.swingframework.ButtonDialog; import org.diylc.swingframework.ProgressDialog; -public class OnlineManager implements IPlugIn, CloudListener { +public class CloudPlugIn implements IPlugIn, CloudListener { private static final String ONLINE_TITLE = "DIY Cloud"; - private final static Logger LOG = Logger.getLogger(OnlineManager.class); + private final static Logger LOG = Logger.getLogger(CloudPlugIn.class); private ISwingUI swingUI; private IPlugInPort plugInPort; private IPlugInPort thumbnailPresenter; - private CloudPresenter onlinePresenter; + private CloudPresenter cloudPresenter; private LibraryAction libraryAction; @@ -47,12 +48,12 @@ public class OnlineManager implements IPlugIn, CloudListener { private UploadAction uploadAction; private ManageProjectsAction manageProjectsAction; - public OnlineManager(ISwingUI swingUI) { + public CloudPlugIn(ISwingUI swingUI) { super(); this.swingUI = swingUI; this.thumbnailPresenter = new Presenter(new DummyView()); - + swingUI.injectMenuAction(getLibraryAction(), ONLINE_TITLE); swingUI.injectMenuAction(null, ONLINE_TITLE); swingUI.injectMenuAction(getLoginAction(), ONLINE_TITLE); @@ -62,7 +63,7 @@ public class OnlineManager implements IPlugIn, CloudListener { swingUI.injectMenuAction(getManageProjectsAction(), ONLINE_TITLE); swingUI.injectMenuAction(null, ONLINE_TITLE); swingUI.injectMenuAction(getManageAccountAction(), ONLINE_TITLE); - swingUI.injectMenuAction(getLogOutAction(), ONLINE_TITLE); + swingUI.injectMenuAction(getLogOutAction(), ONLINE_TITLE); // default state getUploadAction().setEnabled(false); @@ -73,7 +74,7 @@ public class OnlineManager implements IPlugIn, CloudListener { @Override public void connect(IPlugInPort plugInPort) { this.plugInPort = plugInPort; - this.onlinePresenter = new CloudPresenter(this); + this.cloudPresenter = new CloudPresenter(this); initialize(); } @@ -83,11 +84,12 @@ public class OnlineManager implements IPlugIn, CloudListener { @Override public Boolean doInBackground() throws Exception { - return onlinePresenter.tryLogInWithToken(); + return cloudPresenter.tryLogInWithToken(); } @Override public void failed(Exception e) { + LOG.error("Error while trying to login using token"); } @Override @@ -139,8 +141,7 @@ public class OnlineManager implements IPlugIn, CloudListener { public UploadAction getUploadAction() { if (uploadAction == null) { - uploadAction = new UploadAction(this.thumbnailPresenter, - this.swingUI, this.onlinePresenter); + uploadAction = new UploadAction(); } return uploadAction; } @@ -193,15 +194,22 @@ public class OnlineManager implements IPlugIn, CloudListener { do { dialog.setVisible(true); if (ButtonDialog.OK.equals(dialog.getSelectedButtonCaption())) { - if (onlinePresenter.logIn(dialog.getUserName(), - dialog.getPassword())) { + try { + if (cloudPresenter.logIn(dialog.getUserName(), + dialog.getPassword())) { + swingUI.showMessage( + "You have successfully logged into the system. You will remain logged in from this machine until logged out.", + "Login Successful", + IView.INFORMATION_MESSAGE); + break; + } else { + swingUI.showMessage( + "Could not login. Possible reasons are wrong credentials or lack of internet connection.", + "Login Error", IView.ERROR_MESSAGE); + } + } catch (CloudException e1) { swingUI.showMessage( - "You have successfully logged into the system. You will remain logged in on this machine until logged out.", - "Login Successful", IView.INFORMATION_MESSAGE); - break; - } else { - swingUI.showMessage( - "Could not login. Possible reasons are wrong credentials or lack of internet connection.", + "Could not login. Error: " + e1.getMessage(), "Login Error", IView.ERROR_MESSAGE); } } else @@ -222,7 +230,7 @@ public class OnlineManager implements IPlugIn, CloudListener { @Override public void actionPerformed(ActionEvent e) { - onlinePresenter.logOut(); + cloudPresenter.logOut(); } } @@ -266,15 +274,8 @@ public class OnlineManager implements IPlugIn, CloudListener { private static final long serialVersionUID = 1L; - private IPlugInPort plugInPort; - private ISwingUI swingUI; - private CloudPresenter onlinePresenter; - - public UploadAction(IPlugInPort plugInPort, ISwingUI swingUI, CloudPresenter onlinePresenter) { + public UploadAction() { super(); - this.plugInPort = plugInPort; - this.swingUI = swingUI; - this.onlinePresenter = onlinePresenter; putValue(AbstractAction.NAME, "Upload A Project"); putValue(AbstractAction.SMALL_ICON, IconLoader.CloudUp.getIcon()); } @@ -292,14 +293,15 @@ public class OnlineManager implements IPlugIn, CloudListener { @Override public Void doInBackground() throws Exception { LOG.debug("Uploading from " + file.getAbsolutePath()); - plugInPort.loadProjectFromFile(file.getAbsolutePath()); + thumbnailPresenter.loadProjectFromFile(file + .getAbsolutePath()); return null; } @Override public void complete(Void result) { UploadDialog dialog = DialogFactory.getInstance() - .createUploadDialog(UploadAction.this.plugInPort, UploadAction.this.onlinePresenter); + .createUploadDialog(thumbnailPresenter); dialog.setVisible(true); } diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java index cb201417..68fb0f4a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java @@ -12,10 +12,13 @@ import java.util.EnumSet; import javax.swing.BorderFactory; import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -30,7 +33,7 @@ public class UploadDialog extends ButtonDialog { private static final long serialVersionUID = 1L; private static final String BULLET = "   • "; - private static final String TERMS_HTML = "Terms of Service

" + private static final String TERMS_HTML = "" + BULLET + "All content uploaded to DIY Cloud is shared under Creative Commons 3.0 Licence.
" + BULLET @@ -43,14 +46,16 @@ public class UploadDialog extends ButtonDialog { private JLabel termsLabel; private JCheckBox agreeBox; private JPanel thumbnailPanel; + private JTextField nameField; + private JComboBox categoryBox; + private JTextArea descriptionArea; + private JTextField keywordsField; private IPlugInPort plugInPort; - private CloudPresenter presenter; - public UploadDialog(JFrame owner, IPlugInPort plugInPort, CloudPresenter presenter) { + public UploadDialog(JFrame owner, IPlugInPort plugInPort) { super(owner, "Upload A Project", new String[] { OK, CANCEL }); this.plugInPort = plugInPort; - this.presenter = presenter; layoutGui(); refreshState(); } @@ -171,4 +176,20 @@ public class UploadDialog extends ButtonDialog { } return thumbnailPanel; } + + public JTextField getNameField() { + return nameField; + } + + public JComboBox getCategoryBox() { + return categoryBox; + } + + public JTextArea getDescriptionArea() { + return descriptionArea; + } + + public JTextField getKeywordsField() { + return keywordsField; + } }