View Javadoc

1   package org.lsst.ccs.plugin.jas3.rest;
2   
3   import java.beans.PropertyChangeListener;
4   import java.beans.PropertyChangeSupport;
5   import java.util.Properties;
6   import org.freehep.application.PropertyUtilities;
7   import org.freehep.application.studio.Studio;
8   
9   /**
10   * Encapsulates the user's rest preferences.
11   *
12   * @author turri
13   */
14  class RestPreferences {
15  
16      public static final String SERVER_PROPERTY = "org.lsst.rest.server";
17      public static final String PORT_PROPERTY = "org.lsst.rest.port";
18      public static final String CONNECT_ON_STARTUP_PROPERTY = "org.lsst.rest.connectOnStartup";
19      private String server;
20      private int port;
21      private boolean connectOnStartup;
22      private String oldURL;
23      private final Properties user;
24      private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
25  
26      RestPreferences(Studio studio) {
27          user = studio.getUserProperties();
28          server = user.getProperty(SERVER_PROPERTY, "localhost");
29          port = PropertyUtilities.getInteger(user, PORT_PROPERTY, 8080);
30          connectOnStartup = PropertyUtilities.getBoolean(user, CONNECT_ON_STARTUP_PROPERTY, true);
31          oldURL = getRestURL();
32      }
33  
34      int getRestPort() {
35          return port;
36      }
37  
38      String getRestServer() {
39          return server;
40      }
41  
42      boolean isConnectOnStartup() {
43          return connectOnStartup;
44      }
45  
46      void setRestPort(int port) {
47          this.port = port;
48          PropertyUtilities.setInteger(user, PORT_PROPERTY, port);
49      }
50  
51      void setRestServer(String server) {
52          this.server = server;
53          user.setProperty(SERVER_PROPERTY, server);
54      }
55  
56      void setConnectOnStartup(boolean connect) {
57          PropertyUtilities.setBoolean(user, CONNECT_ON_STARTUP_PROPERTY, connect);
58      }
59  
60      String getURLForServerAndPort(String server, int port) {
61          return String.format("http://%s:%d/rest/data", server, port);
62      }
63  
64      final String getRestURL() {
65          return getURLForServerAndPort(getRestServer(), getRestPort());
66      }
67  
68      void firePropertyChanged() {
69          if (!getRestURL().equals(oldURL)) {
70              pcs.firePropertyChange("value", oldURL, getRestURL());
71              oldURL = getRestURL();
72          }
73      }
74  
75      public void addPropertyChangeListener(PropertyChangeListener listener) {
76          pcs.addPropertyChangeListener(listener);
77      }
78  
79      public void removePropertyChangeListener(PropertyChangeListener listener) {
80          pcs.removePropertyChangeListener(listener);
81      }
82  }