| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.config; |
| 2 | |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 3 | import java.io.BufferedReader; |
| 4 | import java.io.File; |
| 5 | import java.io.FileInputStream; |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 6 | import java.io.IOException; |
| 7 | import java.io.InputStream; |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 8 | import java.io.InputStreamReader; |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 9 | import java.util.ArrayList; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 10 | import java.util.Arrays; |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 11 | import java.util.HashMap; |
| margaretha | 2df0660 | 2018-11-14 19:10:30 +0100 | [diff] [blame] | 12 | import java.util.HashSet; |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 13 | import java.util.List; |
| 14 | import java.util.Map; |
| 15 | import java.util.Properties; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 16 | import java.util.Set; |
| margaretha | 3495447 | 2018-10-24 20:05:17 +0200 | [diff] [blame] | 17 | import java.util.regex.Pattern; |
| margaretha | cdd26e6 | 2024-07-12 12:40:26 +0200 | [diff] [blame] | 18 | import java.util.stream.Collectors; |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 19 | |
| margaretha | 46e2c95 | 2024-05-23 09:09:54 +0200 | [diff] [blame] | 20 | import org.slf4j.Logger; |
| 21 | import org.slf4j.LoggerFactory; |
| 22 | |
| margaretha | d7b7d53 | 2018-08-13 17:10:31 +0200 | [diff] [blame] | 23 | import de.ids_mannheim.korap.util.KrillProperties; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 24 | import de.ids_mannheim.korap.utils.TimeUtils; |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 25 | import lombok.Getter; |
| margaretha | 339fd2e | 2018-11-13 12:14:53 +0100 | [diff] [blame] | 26 | import lombok.Setter; |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 27 | |
| 28 | /** |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 29 | * Describes configuration for Kustvakt by importing properties |
| 30 | * from kustvakt.conf file and setting default values if they are |
| 31 | * not configured. |
| margaretha | 398f472 | 2019-01-09 19:07:20 +0100 | [diff] [blame] | 32 | * |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 33 | * MH: if configuration class is extended, loadSubTypes method should |
| 34 | * be |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 35 | * overriden |
| 36 | * |
| margaretha | 6ef00dd | 2018-09-12 14:06:38 +0200 | [diff] [blame] | 37 | * @author hanl |
| margaretha | 6ef00dd | 2018-09-12 14:06:38 +0200 | [diff] [blame] | 38 | * @author margaretha |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 39 | */ |
| 40 | |
| margaretha | 339fd2e | 2018-11-13 12:14:53 +0100 | [diff] [blame] | 41 | @Setter |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 42 | @Getter |
| 43 | public class KustvaktConfiguration { |
| 44 | |
| Michael Hanl | e17eaa5 | 2016-01-22 20:55:05 +0100 | [diff] [blame] | 45 | public static final Map<String, Object> KUSTVAKT_USER = new HashMap<>(); |
| margaretha | c9d2941 | 2023-04-28 12:40:34 +0200 | [diff] [blame] | 46 | public static final String DATA_FOLDER = "data"; |
| Michael Hanl | 1939065 | 2016-01-16 11:01:24 +0100 | [diff] [blame] | 47 | |
| margaretha | 46e2c95 | 2024-05-23 09:09:54 +0200 | [diff] [blame] | 48 | public final static Logger log = LoggerFactory |
| 49 | .getLogger(KustvaktConfiguration.class); |
| 50 | |
| margaretha | 52ee9e3 | 2019-12-11 16:36:14 +0100 | [diff] [blame] | 51 | private String vcInCaching; |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 52 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 53 | private String indexDir; |
| 54 | private int port; |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 55 | // todo: make exclusive so that the containg languages can really |
| 56 | // only be used then |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 57 | private List<String> queryLanguages; |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 58 | |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 59 | private String serverHost; |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 60 | |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 61 | private int maxhits; |
| 62 | private int returnhits; |
| 63 | private String keystoreLocation; |
| 64 | private String keystorePassword; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 65 | private String host; |
| 66 | private String shibUserMapping; |
| 67 | private String userConfig; |
| 68 | private int inactiveTime; |
| 69 | private int loginAttemptTTL; |
| 70 | private long loginAttemptNum; |
| 71 | private boolean allowMultiLogIn; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 72 | private int loadFactor; |
| margaretha | 7cb68a1 | 2024-07-11 12:28:22 +0200 | [diff] [blame] | 73 | |
| 74 | // EM: determine if search and match info services restricted |
| 75 | // to logged in users. This replaces @SearchResourceFilters |
| 76 | private boolean isLoginRequired; |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 77 | |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 78 | private byte[] sharedSecret; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 79 | private int longTokenTTL; |
| 80 | private int tokenTTL; |
| 81 | private int shortTokenTTL; |
| 82 | private String[] rewrite_strategies; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 83 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 84 | private String default_pos; |
| margaretha | 4fa4b06 | 2019-01-28 19:43:30 +0100 | [diff] [blame] | 85 | private String default_morphology; |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 86 | private String default_lemma; |
| margaretha | 798e8bd | 2019-02-06 15:48:58 +0100 | [diff] [blame] | 87 | private String default_orthography; |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 88 | private String default_dep; |
| 89 | private String default_const; |
| Marc Kupietz | 805afde | 2020-03-24 09:08:50 +0100 | [diff] [blame] | 90 | private String apiWelcomeMessage; |
| margaretha | 798e8bd | 2019-02-06 15:48:58 +0100 | [diff] [blame] | 91 | private String defaultStructureFoundry; |
| margaretha | a76ed24 | 2017-05-24 17:48:22 +0200 | [diff] [blame] | 92 | private ArrayList<String> foundries; |
| 93 | private ArrayList<String> layers; |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 94 | |
| margaretha | ea68a0a | 2017-09-21 03:09:49 +0200 | [diff] [blame] | 95 | private String baseURL; |
| margaretha | d7b7d53 | 2018-08-13 17:10:31 +0200 | [diff] [blame] | 96 | private Properties properties; |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 97 | |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 98 | private Set<String> supportedVersions; |
| 99 | private String currentVersion; |
| 100 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 101 | // deprec?! |
| 102 | private final BACKENDS DEFAULT_ENGINE = BACKENDS.LUCENE; |
| margaretha | 4dee07a | 2022-05-27 11:45:28 +0200 | [diff] [blame] | 103 | private String networkEndpointURL; |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 104 | |
| margaretha | 3495447 | 2018-10-24 20:05:17 +0200 | [diff] [blame] | 105 | // license patterns |
| 106 | protected Pattern publicLicensePattern; |
| 107 | protected Pattern freeLicensePattern; |
| 108 | protected Pattern allLicensePattern; |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 109 | |
| margaretha | 339fd2e | 2018-11-13 12:14:53 +0100 | [diff] [blame] | 110 | // random code generator |
| 111 | private String secureRandomAlgorithm; |
| 112 | private String messageDigestAlgorithm; |
| margaretha | 4fa4b06 | 2019-01-28 19:43:30 +0100 | [diff] [blame] | 113 | |
| margaretha | 852a0f6 | 2019-02-19 12:14:30 +0100 | [diff] [blame] | 114 | // EM: metadata restriction |
| 115 | // another variable might be needed to define which metadata fields are restricted |
| 116 | private boolean isMetadataRestricted = false; |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 117 | |
| margaretha | 14686b5 | 2021-07-26 15:24:16 +0200 | [diff] [blame] | 118 | // EM: Maybe needed when we support pipe registration |
| margaretha | 137d4ee | 2019-12-13 14:49:15 +0100 | [diff] [blame] | 119 | @Deprecated |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 120 | public static Map<String, String> pipes = new HashMap<>(); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 121 | |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 122 | public KustvaktConfiguration (Properties properties) throws Exception { |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 123 | load(properties); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 124 | // readPipesFile("pipes"); |
| margaretha | d7b7d53 | 2018-08-13 17:10:31 +0200 | [diff] [blame] | 125 | KrillProperties.setProp(properties); |
| margaretha | d151c30 | 2024-06-10 10:50:42 +0200 | [diff] [blame] | 126 | KrillProperties.updateConfigurations(properties); |
| margaretha | f68daa6 | 2017-09-21 02:11:24 +0200 | [diff] [blame] | 127 | } |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 128 | |
| margaretha | 3d55b00 | 2019-03-19 12:00:44 +0100 | [diff] [blame] | 129 | public KustvaktConfiguration () {} |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 130 | |
| margaretha | 3d55b00 | 2019-03-19 12:00:44 +0100 | [diff] [blame] | 131 | public void loadBasicProperties (Properties properties) { |
| margaretha | 7cb419c | 2024-09-18 09:31:18 +0200 | [diff] [blame^] | 132 | port = Integer.valueOf(properties.getProperty("server.port", "8089")); |
| margaretha | 3d55b00 | 2019-03-19 12:00:44 +0100 | [diff] [blame] | 133 | baseURL = properties.getProperty("kustvakt.base.url", "/api/*"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 134 | setSecureRandomAlgorithm( |
| 135 | properties.getProperty("security.secure.random.algorithm", "")); |
| margaretha | 3d55b00 | 2019-03-19 12:00:44 +0100 | [diff] [blame] | 136 | setMessageDigestAlgorithm( |
| 137 | properties.getProperty("security.md.algorithm", "MD5")); |
| 138 | } |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 139 | |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 140 | /** |
| 141 | * loading of the properties and mapping to parameter variables |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 142 | * |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 143 | * @param properties |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 144 | * @return |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 145 | * @throws Exception |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 146 | */ |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 147 | protected void load (Properties properties) throws Exception { |
| margaretha | 3d55b00 | 2019-03-19 12:00:44 +0100 | [diff] [blame] | 148 | loadBasicProperties(properties); |
| Marc Kupietz | 805afde | 2020-03-24 09:08:50 +0100 | [diff] [blame] | 149 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 150 | apiWelcomeMessage = properties.getProperty("api.welcome.message", |
| 151 | "Welcome to KorAP API!"); |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 152 | currentVersion = properties.getProperty("current.api.version", "v1.0"); |
| margaretha | a8c364b | 2021-02-19 13:00:31 +0100 | [diff] [blame] | 153 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 154 | String supportedVersions = properties |
| 155 | .getProperty("supported.api.versions", ""); |
| 156 | |
| margaretha | a8c364b | 2021-02-19 13:00:31 +0100 | [diff] [blame] | 157 | this.supportedVersions = new HashSet<>(); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 158 | if (!supportedVersions.isEmpty()) { |
| 159 | List<String> versionArray = Arrays |
| margaretha | cdd26e6 | 2024-07-12 12:40:26 +0200 | [diff] [blame] | 160 | .stream(supportedVersions.split(",")).map(String::trim) |
| 161 | .collect(Collectors.toList()); |
| margaretha | a8c364b | 2021-02-19 13:00:31 +0100 | [diff] [blame] | 162 | this.supportedVersions.addAll(versionArray); |
| 163 | } |
| margaretha | f7abb36 | 2018-09-18 20:09:37 +0200 | [diff] [blame] | 164 | this.supportedVersions.add(currentVersion); |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 165 | |
| margaretha | c9d2941 | 2023-04-28 12:40:34 +0200 | [diff] [blame] | 166 | maxhits = Integer.valueOf(properties.getProperty("maxhits", "50000")); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 167 | returnhits = Integer |
| 168 | .valueOf(properties.getProperty("returnhits", "50000")); |
| Michael Hanl | a0f3f94 | 2016-02-17 15:15:51 +0100 | [diff] [blame] | 169 | indexDir = properties.getProperty("krill.indexDir", ""); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 170 | |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 171 | // server options |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 172 | serverHost = String |
| 173 | .valueOf(properties.getProperty("server.host", "localhost")); |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 174 | String queries = properties.getProperty("korap.ql", ""); |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 175 | String[] qls = queries.split(","); |
| 176 | queryLanguages = new ArrayList<>(); |
| 177 | for (String querylang : qls) |
| 178 | queryLanguages.add(querylang.trim().toUpperCase()); |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 179 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 180 | default_const = properties.getProperty("default.foundry.constituent", |
| 181 | "corenlp"); |
| 182 | default_dep = properties.getProperty("default.foundry.dependency", |
| 183 | "malt"); |
| margaretha | 4fa4b06 | 2019-01-28 19:43:30 +0100 | [diff] [blame] | 184 | default_lemma = properties.getProperty("default.foundry.lemma", "tt"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 185 | default_morphology = properties |
| 186 | .getProperty("default.foundry.morphology", "marmot"); |
| 187 | default_pos = properties.getProperty("default.foundry.partOfSpeech", |
| 188 | "tt"); |
| 189 | default_orthography = properties |
| 190 | .getProperty("default.foundry.orthography", "opennlp"); |
| 191 | defaultStructureFoundry = properties |
| 192 | .getProperty("default.foundry.structure", "base"); |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 193 | |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 194 | // security configuration |
| margaretha | 7cb68a1 | 2024-07-11 12:28:22 +0200 | [diff] [blame] | 195 | isLoginRequired = Boolean |
| 196 | .valueOf(properties.getProperty("login.required", "false")); |
| 197 | |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 198 | inactiveTime = TimeUtils.convertTimeToSeconds( |
| 199 | properties.getProperty("security.idleTimeoutDuration", "10M")); |
| 200 | allowMultiLogIn = Boolean |
| 201 | .valueOf(properties.getProperty("security.multipleLogIn")); |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 202 | |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 203 | loginAttemptNum = Long.parseLong( |
| 204 | properties.getProperty("security.loginAttemptNum", "3")); |
| 205 | loginAttemptTTL = TimeUtils.convertTimeToSeconds( |
| 206 | properties.getProperty("security.authAttemptTTL", "30M")); |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 207 | |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 208 | loadFactor = Integer.valueOf( |
| 209 | properties.getProperty("security.encryption.loadFactor", "15")); |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 210 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 211 | sharedSecret = properties.getProperty("security.sharedSecret", "") |
| 212 | .getBytes(); |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame] | 213 | |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 214 | longTokenTTL = TimeUtils.convertTimeToSeconds( |
| 215 | properties.getProperty("security.longTokenTTL", "100D")); |
| 216 | tokenTTL = TimeUtils.convertTimeToSeconds( |
| 217 | properties.getProperty("security.tokenTTL", "72H")); |
| 218 | shortTokenTTL = TimeUtils.convertTimeToSeconds( |
| 219 | properties.getProperty("security.shortTokenTTL", "3H")); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 220 | |
| margaretha | 4dee07a | 2022-05-27 11:45:28 +0200 | [diff] [blame] | 221 | // network endpoint |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 222 | networkEndpointURL = properties.getProperty("network.endpoint.url", ""); |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 223 | } |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 224 | |
| margaretha | 137d4ee | 2019-12-13 14:49:15 +0100 | [diff] [blame] | 225 | @Deprecated |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 226 | public void readPipesFile (String filename) throws IOException { |
| 227 | File file = new File(filename); |
| 228 | if (file.exists()) { |
| 229 | BufferedReader br = new BufferedReader( |
| 230 | new InputStreamReader(new FileInputStream(file))); |
| 231 | |
| 232 | String line = null; |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 233 | while ((line = br.readLine()) != null) { |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 234 | String[] parts = line.split("\t"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 235 | if (parts.length != 2) { |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 236 | continue; |
| 237 | } |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 238 | else { |
| margaretha | 1d1c73e | 2019-12-03 18:07:28 +0100 | [diff] [blame] | 239 | pipes.put(parts[0], parts[1]); |
| 240 | } |
| 241 | } |
| 242 | br.close(); |
| 243 | } |
| 244 | } |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 245 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 246 | /** |
| 247 | * set properties |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 248 | * |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 249 | * @param props |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 250 | * @throws IOException |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 251 | */ |
| margaretha | 1929596 | 2018-06-26 16:00:47 +0200 | [diff] [blame] | 252 | // public void setProperties (Properties props) throws IOException |
| 253 | // { |
| 254 | // this.load(props); |
| 255 | // } |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 256 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 257 | /** |
| 258 | * properties can be overloaded after spring init |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 259 | * |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 260 | * @param stream |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 261 | * @throws Exception |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 262 | */ |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 263 | public void setPropertiesAsStream (InputStream stream) throws Exception { |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 264 | try { |
| Michael Hanl | d6eadd5 | 2015-11-11 18:30:33 +0100 | [diff] [blame] | 265 | |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 266 | Properties p = new Properties(); |
| 267 | p.load(stream); |
| 268 | this.load(p); |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 269 | } |
| 270 | catch (IOException e) { |
| Michael Hanl | badd79c | 2015-06-19 07:41:03 +0200 | [diff] [blame] | 271 | e.printStackTrace(); |
| 272 | } |
| 273 | |
| 274 | } |
| 275 | |
| Michael Hanl | 8abaf9e | 2016-05-23 16:46:35 +0200 | [diff] [blame] | 276 | public BACKENDS chooseBackend (String value) { |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 277 | if (value == null || value.equals("null")) |
| 278 | return DEFAULT_ENGINE; |
| 279 | else |
| 280 | return Enum.valueOf(BACKENDS.class, value.toUpperCase()); |
| 281 | } |
| 282 | |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 283 | public enum BACKENDS { |
| margaretha | 4dee07a | 2022-05-27 11:45:28 +0200 | [diff] [blame] | 284 | NEO4J, LUCENE, NETWORK |
| Michael Hanl | ca740d7 | 2015-06-16 10:04:58 +0200 | [diff] [blame] | 285 | } |
| 286 | |
| 287 | } |