1 package uk.ac.ebi.intenz.webapp;
2
3 import java.beans.PropertyChangeListener;
4 import java.beans.PropertyChangeSupport;
5 import java.io.IOException;
6 import java.util.Properties;
7
8 import org.apache.log4j.Logger;
9
10 public class IntEnzConfig implements IntEnzConfigMBean {
11
12 private static IntEnzConfig instance;
13 private static Logger LOGGER = Logger.getLogger(IntEnzConfig.class);
14
15 protected PropertyChangeSupport pcs;
16
17
18
19
20
21
22 public static enum Property {
23 DATA_SOURCE("intenz.data.source.jndi.name"),
24 MBEAN_NAME("intenz.config.mbean.name"),
25 RSS_URL("intenz.rss.url"),
26 RSS_REFRESH("intenz.rss.refresh"),
27 XML_URL("intenz.xml.url"),
28 SITEMAP_URL("intenz.sitemap.url"),
29 MAIL_SMTP_HOST("mail.smtp.host"),
30 MAIL_FROM("intenz.mail.from"),
31 CONTACT_MAIL_TO("intenz.contact.mail.to"),
32 CONTACT_MAIL_SUBJECT("intenz.contact.mail.subject"),
33 ERROR_MAIL_TO("intenz.error.mail.to"),
34 ERROR_MAIL_SUBJECT("intenz.error.mail.subject"),
35 SEARCH_PAGE_SIZE("intenz.search.page.size"),
36 TEMPLATES_URL("ebi.template.service.url");
37 private String key;
38 private Property(String key){ this.key = key; }
39 @Override
40 public String toString(){ return key; }
41 }
42
43
44
45
46 private Properties appProperties;
47 private Properties mailProperties;
48
49 private IntEnzConfig() throws IOException{
50 appProperties = new Properties();
51 appProperties.load(IntEnzConfig.class.getClassLoader()
52 .getResourceAsStream("intenz-public.properties"));
53 mailProperties = new Properties();
54 mailProperties.load(IntEnzConfig.class.getClassLoader()
55 .getResourceAsStream("intenz-public-mail.properties"));
56 pcs = new PropertyChangeSupport(this);
57 }
58
59 public static IntEnzConfig getInstance() throws IOException{
60 if (instance == null) instance = new IntEnzConfig();
61 return instance;
62 }
63
64 public String getIntEnzDataSource(){
65 return appProperties.getProperty(Property.DATA_SOURCE.key);
66 }
67
68 public void setIntEnzDataSource(String intEnzDataSource){
69 LOGGER.info("Setting IntEnz data source to " + intEnzDataSource);
70 pcs.firePropertyChange(Property.DATA_SOURCE.key,
71 appProperties.getProperty(Property.DATA_SOURCE.key),
72 intEnzDataSource);
73 appProperties.setProperty(Property.DATA_SOURCE.key, intEnzDataSource);
74 LOGGER.info("IntEnz data source set successfuly to "
75 + intEnzDataSource);
76 }
77
78 public String getIntEnzConfigMbeanName() {
79 return appProperties.getProperty(Property.MBEAN_NAME.key);
80 }
81
82 public String getRssUrl() {
83 return appProperties.getProperty(Property.RSS_URL.key);
84 }
85
86 public void setRssUrl(String rssUrl) {
87 appProperties.setProperty(Property.RSS_URL.key, rssUrl);
88 }
89
90 public long getRssRefresh(){
91 return Long.parseLong(appProperties.getProperty(Property.RSS_REFRESH.key));
92 }
93
94 public void setRssRefresh(long fr){
95 appProperties.setProperty(Property.RSS_REFRESH.key, String.valueOf(fr));
96 }
97
98 public String getXmlUrl() {
99 return appProperties.getProperty(Property.XML_URL.key);
100 }
101
102 public void setXmlUrl(String xmlUrl) {
103 appProperties.setProperty(Property.XML_URL.key, xmlUrl);
104 }
105
106 public String getSitemapUrl() {
107 return appProperties.getProperty(Property.SITEMAP_URL.key);
108 }
109
110 public void setSitemapUrl(String sitemapUrl) {
111 appProperties.setProperty(Property.SITEMAP_URL.key, sitemapUrl);
112 }
113
114 public Properties getMailProperties(){
115 return mailProperties;
116 }
117
118 public String getMailSmtpHost() {
119 return mailProperties.getProperty(Property.MAIL_SMTP_HOST.key);
120 }
121
122 public void setMailSmtpHost(String mailSmtpHost) {
123 mailProperties.setProperty(Property.MAIL_SMTP_HOST.key, mailSmtpHost);
124 }
125
126 public String getMailFrom() {
127 return mailProperties.getProperty(Property.MAIL_FROM.key);
128 }
129
130 public void setMailFrom(String mailFrom) {
131 mailProperties.setProperty(Property.MAIL_FROM.key, mailFrom);
132 }
133
134 public String getContactMailTo() {
135 return mailProperties.getProperty(Property.CONTACT_MAIL_TO.key);
136 }
137
138 public void setContactMailTo(String mailTo) {
139 mailProperties.setProperty(Property.CONTACT_MAIL_TO.key, mailTo);
140 }
141
142 public String getContactMailSubject() {
143 return mailProperties.getProperty(Property.CONTACT_MAIL_SUBJECT.key);
144 }
145
146 public void setContactMailSubject(String mailSubject) {
147 mailProperties.setProperty(Property.CONTACT_MAIL_SUBJECT.key, mailSubject);
148 }
149
150 public String getErrorMailTo() {
151 return mailProperties.getProperty(Property.ERROR_MAIL_TO.key);
152 }
153
154 public void setErrorMailTo(String mailTo) {
155 mailProperties.setProperty(Property.ERROR_MAIL_TO.key, mailTo);
156 }
157
158 public String getErrorMailSubject() {
159 return mailProperties.getProperty(Property.ERROR_MAIL_SUBJECT.key);
160 }
161
162 public void setErrorMailSubject(String mailSubject) {
163 mailProperties.setProperty(Property.ERROR_MAIL_SUBJECT.key, mailSubject);
164 }
165
166 public String getPageSize() {
167 return appProperties.getProperty(Property.SEARCH_PAGE_SIZE.key);
168 }
169
170 public void setPageSize(String pageSize) {
171 appProperties.setProperty(Property.SEARCH_PAGE_SIZE.key, pageSize);
172 }
173
174 public String getTemplatesUrl() {
175 return appProperties.getProperty(Property.TEMPLATES_URL.key);
176 }
177
178 public void setTemplatesUrl(String templatesUrl) {
179
180
181 }
182
183 public void addPropertyChangeListener(String propName,
184 PropertyChangeListener pcl){
185 LOGGER.info("Adding listener for " + propName);
186 pcs.addPropertyChangeListener(propName, pcl);
187 LOGGER.info("Added listener for " + propName);
188 }
189
190 public void removePropertyChangeListener(String prop,
191 PropertyChangeListener pcl){
192 pcs.removePropertyChangeListener(prop, pcl);
193 }
194
195 }