blob: 8fdf55646701a62f26a0a471ab7c82cc5b1efb35 [file] [log] [blame]
package de.ids_mannheim.korap.config;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.regex.Pattern;
/** Configuration for Kustvakt full version including properties concerning
* authentication and licenses.
*
* @author margaretha
*
*/
public class FullConfiguration extends KustvaktConfiguration {
private String ldapConfig;
private String freeOnlyRegex;
private String publicOnlyRegex;
private String allOnlyRegex;
private List<String> freeRegexList;
private List<String> publicRegexList;
private List<String> allRegexList;
private Pattern publicLicensePattern;
private Pattern freeLicensePattern;
private Pattern allLicensePattern;
private String authenticationScheme;
public FullConfiguration (Properties properties) throws IOException {
super(properties);
}
@Override
public void load (Properties properties) throws IOException {
super.load(properties);
// EM: regex used for storing vc
setLicenseRegex(properties);
// EM: pattern for matching availability in Krill matches
setLicensePatterns(properties);
ldapConfig = properties.getProperty("ldap.config");
}
private void setLicensePatterns (Properties properties) {
setFreeLicensePattern(compilePattern(getFreeOnlyRegex()));
setPublicLicensePattern(
compilePattern(getFreeOnlyRegex() + "|" + getPublicOnlyRegex()));
setAllLicensePattern(compilePattern(
getFreeOnlyRegex() + "|" + getPublicOnlyRegex() + "|" + getAllOnlyRegex()));
}
private void setLicenseRegex (Properties properties) {
setFreeOnlyRegex(properties.getProperty("availability.regex.free", ""));
freeRegexList = splitAndAddToList(getFreeOnlyRegex());
setPublicOnlyRegex(properties.getProperty("availability.regex.public", ""));
publicRegexList = splitAndAddToList(getPublicOnlyRegex());
setAllOnlyRegex(properties.getProperty("availability.regex.all", ""));
allRegexList = splitAndAddToList(getAllOnlyRegex());
}
private List<String> splitAndAddToList (String regex) {
List<String> list;
if (regex.contains("|")) {
String[] regexes = regex.split("\\|");
list = new ArrayList<>(regexes.length);
for (String s : regexes) {
list.add(s.trim());
}
}
else{
list = new ArrayList<>(1);
list.add(regex);
}
return list;
}
private Pattern compilePattern (String patternStr) {
if (!patternStr.isEmpty()) {
return Pattern.compile(patternStr);
}
else {
return null;
}
}
public String getLdapConfig () {
return ldapConfig;
}
public Pattern getPublicLicensePattern () {
return publicLicensePattern;
}
public void setPublicLicensePattern (Pattern publicLicensePattern) {
this.publicLicensePattern = publicLicensePattern;
}
public Pattern getFreeLicensePattern () {
return freeLicensePattern;
}
public void setFreeLicensePattern (Pattern freeLicensePattern) {
this.freeLicensePattern = freeLicensePattern;
}
public Pattern getAllLicensePattern () {
return allLicensePattern;
}
public void setAllLicensePattern (Pattern allLicensePattern) {
this.allLicensePattern = allLicensePattern;
}
public String getAuthenticationScheme () {
return authenticationScheme;
}
public void setAuthenticationScheme (String authenticationScheme) {
this.authenticationScheme = authenticationScheme;
}
public List<String> getFreeRegexList () {
return freeRegexList;
}
public void setFreeRegexList (List<String> freeRegexList) {
this.freeRegexList = freeRegexList;
}
public List<String> getPublicRegexList () {
return publicRegexList;
}
public void setPublicRegexList (List<String> publicRegexList) {
this.publicRegexList = publicRegexList;
}
public List<String> getAllRegexList () {
return allRegexList;
}
public void setAllRegexList (List<String> allRegexList) {
this.allRegexList = allRegexList;
}
public String getFreeOnlyRegex () {
return freeOnlyRegex;
}
public void setFreeOnlyRegex (String freeOnlyRegex) {
this.freeOnlyRegex = freeOnlyRegex;
}
public String getPublicOnlyRegex () {
return publicOnlyRegex;
}
public void setPublicOnlyRegex (String publicOnlyRegex) {
this.publicOnlyRegex = publicOnlyRegex;
}
public String getAllOnlyRegex () {
return allOnlyRegex;
}
public void setAllOnlyRegex (String allOnlyRegex) {
this.allOnlyRegex = allOnlyRegex;
}
}