001 package ca.uhn.hl7v2.util;
002
003 import java.io.File;
004
005 import org.slf4j.Logger;
006 import org.slf4j.LoggerFactory;
007
008 /**
009 * Used to access the hapi.home system property. Note that the property
010 * is only checked (at most) once per session.
011 * @author Bryan Tripp
012 */
013 public class Home {
014
015 private static File home;
016 private static Logger log = LoggerFactory.getLogger(Home.class);
017
018 /** Creates a new instance of Home */
019 public Home() {
020 }
021
022 /**
023 * Returns a File object corresponding to the directory specified in
024 * the system property hapi.home. The property is only checked the
025 * first time this method is called, so changes will not take place
026 * until a new VM is started.
027 * This method is guaranteed to return a directory. If hapi.home is
028 * not set, or is set to a non-directory path, the current working directory will
029 * be used.
030 */
031 public static File getHomeDirectory() {
032 if (home == null)
033 setHomeDirectory();
034
035 return home;
036 }
037
038 private synchronized static void setHomeDirectory() {
039 String dir = System.getProperty("hapi.home", ".");
040 home = new File(dir);
041
042 if (!home.isDirectory()) {
043 home = new File(".");
044 log.warn("The system property hapi.home is not a valid directory: {}. Using . instead", dir);
045 }
046
047 log.info("hapi.home is set to " + home.getAbsolutePath());
048 }
049
050 public static void main(String args[]) {
051 System.out.println("HOME: " + getHomeDirectory().getAbsolutePath());
052 }
053
054 }