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
11
12
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 }