blob: e9a38e64facfe9584168494ab95d6391ed23e278 [file] [log] [blame]
Akron09ae3732015-08-13 20:56:20 +02001package de.ids_mannheim.korap.util;
2
3import java.util.*;
4import java.io.*;
Eliza Margarethac0b7a462016-11-15 21:26:54 +01005
Akron09ae3732015-08-13 20:56:20 +02006import org.slf4j.Logger;
7import org.slf4j.LoggerFactory;
Akron09ae3732015-08-13 20:56:20 +02008
Eliza Margarethac0b7a462016-11-15 21:26:54 +01009/**
10 *
11 * Todo: Properties may be loaded twice - although Java may cache automatically
12 *
13 * @author diewald, margaretha
14 *
15 */
Akron09ae3732015-08-13 20:56:20 +020016public class KrillProperties {
17
Eliza Margarethac0b7a462016-11-15 21:26:54 +010018 public static final String defaultPropertiesLocation = "krill.properties";
19 public static final String defaultInfoLocation = "krill.info";
Akrond228feb2016-04-29 20:22:58 +020020 private static Properties prop, info;
Akron305898e2016-02-20 20:25:40 +010021
Akron09ae3732015-08-13 20:56:20 +020022 // Logger
Eliza Margarethac0b7a462016-11-15 21:26:54 +010023 private final static Logger log = LoggerFactory
24 .getLogger(KrillProperties.class);
Akron09ae3732015-08-13 20:56:20 +020025
26 // Load properties from file
Eliza Margarethac0b7a462016-11-15 21:26:54 +010027 public static Properties loadDefaultProperties () {
Akron305898e2016-02-20 20:25:40 +010028 if (prop != null)
29 return prop;
30
Eliza Margarethac0b7a462016-11-15 21:26:54 +010031 prop = loadProperties(defaultPropertiesLocation);
Akron305898e2016-02-20 20:25:40 +010032 return prop;
Akron09ae3732015-08-13 20:56:20 +020033 };
34
35
36 // Load properties from file
37 public static Properties loadProperties (String propFile) {
Akron305898e2016-02-20 20:25:40 +010038 if (propFile == null)
Eliza Margarethac0b7a462016-11-15 21:26:54 +010039 return loadDefaultProperties();
Akron305898e2016-02-20 20:25:40 +010040
41 InputStream iFile;
Akron09ae3732015-08-13 20:56:20 +020042 try {
Akron305898e2016-02-20 20:25:40 +010043 iFile = new FileInputStream(propFile);
Akron09ae3732015-08-13 20:56:20 +020044 prop = new Properties();
Akron305898e2016-02-20 20:25:40 +010045 prop.load(iFile);
Eliza Margarethac0b7a462016-11-15 21:26:54 +010046
Akron09ae3732015-08-13 20:56:20 +020047 }
48 catch (IOException t) {
49 try {
Akron305898e2016-02-20 20:25:40 +010050 iFile = KrillProperties.class.getClassLoader()
Akron6759b042016-04-28 01:25:00 +020051 .getResourceAsStream(propFile);
Akron305898e2016-02-20 20:25:40 +010052 if (iFile == null) {
Akrondb0b0372016-04-28 00:54:13 +020053 log.warn(
Eliza Margarethac0b7a462016-11-15 21:26:54 +010054 "Cannot find {}. Please create it using "
55 + "\"src/main/resources/krill.properties.info\" as template.",
Akron6759b042016-04-28 01:25:00 +020056 propFile, propFile);
Akron09ae3732015-08-13 20:56:20 +020057 return null;
58 };
59
60 prop = new Properties();
Akron305898e2016-02-20 20:25:40 +010061 prop.load(iFile);
Akrondb0b0372016-04-28 00:54:13 +020062 iFile.close();
Akron09ae3732015-08-13 20:56:20 +020063 }
64 catch (IOException e) {
65 log.error(e.getLocalizedMessage());
66 return null;
67 };
68 };
69 return prop;
70 };
Akron305898e2016-02-20 20:25:40 +010071
72
73 // Load version info from file
74 public static Properties loadInfo () {
75 try {
Akrond228feb2016-04-29 20:22:58 +020076 info = new Properties();
Akron305898e2016-02-20 20:25:40 +010077 InputStream iFile = KrillProperties.class.getClassLoader()
Eliza Margarethac0b7a462016-11-15 21:26:54 +010078 .getResourceAsStream(defaultInfoLocation);
Akrondb0b0372016-04-28 00:54:13 +020079
80 if (iFile == null) {
Eliza Margarethac0b7a462016-11-15 21:26:54 +010081 log.error("Cannot find {}.", defaultInfoLocation);
Akrondb0b0372016-04-28 00:54:13 +020082 return null;
83 };
84
Akrond228feb2016-04-29 20:22:58 +020085 info.load(iFile);
Akrondb0b0372016-04-28 00:54:13 +020086 iFile.close();
Akron305898e2016-02-20 20:25:40 +010087 }
88 catch (IOException e) {
89 log.error(e.getLocalizedMessage());
90 return null;
91 };
Akrond228feb2016-04-29 20:22:58 +020092 return info;
Akron305898e2016-02-20 20:25:40 +010093 };
margaretha4dfe3c52018-08-13 17:07:50 +020094
95 public static void setProp (Properties prop) {
96 KrillProperties.prop = prop;
97 }
Akron09ae3732015-08-13 20:56:20 +020098};