View Javadoc
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  	 * Configuration properties.
19  	 * @see intenz-public.properties and intenz-public-mail.properties files.
20  	 * @author rafalcan
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  	 * Properties for the IntEnz public webapp configuration.
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 		// TODO Auto-generated method stub
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 }