source: greenstone3/trunk/src/java/org/greenstone/gsdl3/util/GlobalProperties.java@ 19642

Last change on this file since 19642 was 19642, checked in by shaoqun, 15 years ago

clean up debugging code

  • Property svn:keywords set to Author Date Id Revision
File size: 5.4 KB
Line 
1/*
2 * GlobalProperties.java
3 * Copyright (C) 2008 New Zealand Digital Library, http://www.nzdl.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19package org.greenstone.gsdl3.util;
20
21import java.util.Properties;
22import java.io.File;
23import java.io.InputStream;
24
25import org.apache.log4j.*;
26
27/** holds some global properties for the application. Read from a properties file */
28public class GlobalProperties {
29
30
31 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.util.GlobalProperties.class.getName());
32 private static Properties properties = null;
33 private static String properties_filename = "global.properties";
34 private static String gsdl3_home = null;
35 private static String gsdl3_web_address = null;
36
37 // Note, that if the servlet is reloadable, then it is reloaded each time the file is changed.
38 static {
39 //load in the properties
40 properties = new Properties();
41 reload();
42 }
43
44 /** get the value of the property 'key'. returns null if not found */
45 public static String getProperty(String key) {
46 return properties.getProperty(key);
47 }
48
49 /** get the value of the property 'key'.
50 * returns default_value if not found */
51 public static String getProperty(String key, String default_value) {
52 return properties.getProperty(key, default_value);
53 }
54
55 /** some special ones */
56 public static String getGSDL3Home() {
57 return gsdl3_home;
58 }
59
60 public static String getGSDL3WebAddress() {
61 return gsdl3_web_address;
62 }
63
64 public static void reload() {
65 try {
66
67
68 InputStream in = Class.forName("org.greenstone.gsdl3.util.GlobalProperties").getClassLoader().getResourceAsStream(properties_filename);
69 if (in != null) {
70 logger.debug("loading global properties");
71 properties.load(in);
72 in.close();
73 } else {
74 logger.error("couldn't load global properties!");
75 }
76 gsdl3_home = properties.getProperty("gsdl3.home");
77 // make sure the path separators are correct
78 File gs3_file = new File(gsdl3_home);
79 gsdl3_home = gs3_file.getPath();
80
81 //build the gsdl3 web address, in a way resilient to errors and ommisions in global.properties, simplifying where possible
82 //aiming for a string with no trailing slash, eg "http://localhost:8080/greenstone3" or "http://www.mygreenstonelibrary.com"
83 String protocolSpecifier = null, hostSpecifier = null, portSpecifier = null, contextSpecifier = null;
84
85 //protocol
86 if ( properties.getProperty("tomcat.protocol") == null || properties.getProperty("tomcat.protocol").equals("") ) {
87 protocolSpecifier = "http://";
88 } else {
89 if ( properties.getProperty("tomcat.protocol").endsWith("://") ) {
90 protocolSpecifier = properties.getProperty("tomcat.protocol");
91 } else {
92 protocolSpecifier = properties.getProperty("tomcat.protocol") + "://";
93 }
94 }
95
96 //hostname
97 if ( properties.getProperty("tomcat.server") == null ) {
98 hostSpecifier = "localhost";
99 } else {
100 hostSpecifier = properties.getProperty("tomcat.server");
101 while ( hostSpecifier.endsWith("/") ) {
102 hostSpecifier = hostSpecifier.substring( 0, hostSpecifier.length()-1 );
103 }
104 }
105
106 //port
107 if (
108 properties.getProperty("tomcat.port") == null ||
109 properties.getProperty("tomcat.port").equals("") ||
110 ( protocolSpecifier.equals("http://") && properties.getProperty("tomcat.port").equals("80") ) ||
111 ( protocolSpecifier.equals("https://") && properties.getProperty("tomcat.port").equals("443") )
112 ) {
113 portSpecifier = "";
114 } else {
115 portSpecifier = ":" + properties.getProperty("tomcat.port");
116 }
117
118 //context path
119 if ( properties.getProperty("tomcat.context") == null || properties.getProperty("tomcat.context").equals("") || properties.getProperty("tomcat.context").equals("/") ) {
120 contextSpecifier = "";
121 } else {
122 contextSpecifier = properties.getProperty("tomcat.context");
123 if ( !contextSpecifier.startsWith("/") ) {
124 contextSpecifier = "/" + contextSpecifier;
125 }
126 }
127
128 //string it all together
129 gsdl3_web_address = protocolSpecifier + hostSpecifier + portSpecifier + contextSpecifier;
130
131 } catch (Exception e) {
132 logger.error( "Exception trying to reload global.properties: " + e );
133 }
134 }
135}
Note: See TracBrowser for help on using the repository browser.