| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.util; |
| 2 | |||||
| 3 | import java.util.*; | ||||
| 4 | import java.io.*; | ||||
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 5 | |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 6 | import org.slf4j.Logger; |
| 7 | import org.slf4j.LoggerFactory; | ||||
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 8 | |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 9 | /** |
| 10 | * | ||||
| 11 | * Todo: Properties may be loaded twice - although Java may cache automatically | ||||
| 12 | * | ||||
| 13 | * @author diewald, margaretha | ||||
| 14 | * | ||||
| 15 | */ | ||||
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 16 | public class KrillProperties { |
| 17 | |||||
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 18 | public static final String defaultPropertiesLocation = "krill.properties"; |
| 19 | public static final String defaultInfoLocation = "krill.info"; | ||||
| Akron | d228feb | 2016-04-29 20:22:58 +0200 | [diff] [blame] | 20 | private static Properties prop, info; |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 21 | |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 22 | // Logger |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 23 | private final static Logger log = LoggerFactory |
| 24 | .getLogger(KrillProperties.class); | ||||
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 25 | |
| 26 | // Load properties from file | ||||
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 27 | public static Properties loadDefaultProperties () { |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 28 | if (prop != null) |
| 29 | return prop; | ||||
| 30 | |||||
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 31 | prop = loadProperties(defaultPropertiesLocation); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 32 | return prop; |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 33 | }; |
| 34 | |||||
| 35 | |||||
| 36 | // Load properties from file | ||||
| 37 | public static Properties loadProperties (String propFile) { | ||||
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 38 | if (propFile == null) |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 39 | return loadDefaultProperties(); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 40 | |
| 41 | InputStream iFile; | ||||
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 42 | try { |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 43 | iFile = new FileInputStream(propFile); |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 44 | prop = new Properties(); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 45 | prop.load(iFile); |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 46 | |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 47 | } |
| 48 | catch (IOException t) { | ||||
| 49 | try { | ||||
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 50 | iFile = KrillProperties.class.getClassLoader() |
| Akron | 6759b04 | 2016-04-28 01:25:00 +0200 | [diff] [blame] | 51 | .getResourceAsStream(propFile); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 52 | if (iFile == null) { |
| Akron | db0b037 | 2016-04-28 00:54:13 +0200 | [diff] [blame] | 53 | log.warn( |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 54 | "Cannot find {}. Please create it using " |
| 55 | + "\"src/main/resources/krill.properties.info\" as template.", | ||||
| Akron | 6759b04 | 2016-04-28 01:25:00 +0200 | [diff] [blame] | 56 | propFile, propFile); |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 57 | return null; |
| 58 | }; | ||||
| 59 | |||||
| 60 | prop = new Properties(); | ||||
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 61 | prop.load(iFile); |
| Akron | db0b037 | 2016-04-28 00:54:13 +0200 | [diff] [blame] | 62 | iFile.close(); |
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 63 | } |
| 64 | catch (IOException e) { | ||||
| 65 | log.error(e.getLocalizedMessage()); | ||||
| 66 | return null; | ||||
| 67 | }; | ||||
| 68 | }; | ||||
| 69 | return prop; | ||||
| 70 | }; | ||||
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 71 | |
| 72 | |||||
| 73 | // Load version info from file | ||||
| 74 | public static Properties loadInfo () { | ||||
| 75 | try { | ||||
| Akron | d228feb | 2016-04-29 20:22:58 +0200 | [diff] [blame] | 76 | info = new Properties(); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 77 | InputStream iFile = KrillProperties.class.getClassLoader() |
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 78 | .getResourceAsStream(defaultInfoLocation); |
| Akron | db0b037 | 2016-04-28 00:54:13 +0200 | [diff] [blame] | 79 | |
| 80 | if (iFile == null) { | ||||
| Eliza Margaretha | c0b7a46 | 2016-11-15 21:26:54 +0100 | [diff] [blame] | 81 | log.error("Cannot find {}.", defaultInfoLocation); |
| Akron | db0b037 | 2016-04-28 00:54:13 +0200 | [diff] [blame] | 82 | return null; |
| 83 | }; | ||||
| 84 | |||||
| Akron | d228feb | 2016-04-29 20:22:58 +0200 | [diff] [blame] | 85 | info.load(iFile); |
| Akron | db0b037 | 2016-04-28 00:54:13 +0200 | [diff] [blame] | 86 | iFile.close(); |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 87 | } |
| 88 | catch (IOException e) { | ||||
| 89 | log.error(e.getLocalizedMessage()); | ||||
| 90 | return null; | ||||
| 91 | }; | ||||
| Akron | d228feb | 2016-04-29 20:22:58 +0200 | [diff] [blame] | 92 | return info; |
| Akron | 305898e | 2016-02-20 20:25:40 +0100 | [diff] [blame] | 93 | }; |
| margaretha | 4dfe3c5 | 2018-08-13 17:07:50 +0200 | [diff] [blame] | 94 | |
| 95 | public static void setProp (Properties prop) { | ||||
| 96 | KrillProperties.prop = prop; | ||||
| 97 | } | ||||
| Akron | 09ae373 | 2015-08-13 20:56:20 +0200 | [diff] [blame] | 98 | }; |