/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse;
import edu.harvard.iq.dataverse.settings.Setting;
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import javax.ejb.EJB;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
/**
*
* @author gdurand
*/
@ViewScoped
@Named
public class SettingsWrapper implements java.io.Serializable {
@EJB
SettingsServiceBean settingService;
private Map<String, String> settingsMap;
/**
* Values that are considered as "true".
* @see #isTrue(java.lang.String, boolean)
*/
private static final Set<String> TRUE_VALUES = Collections.unmodifiableSet(
new TreeSet<>( Arrays.asList("1","yes", "true","allow")));
public String get(String settingKey) {
if (settingsMap == null) {
initSettingsMap();
}
return settingsMap.get(settingKey);
}
public boolean isTrueForKey(String settingKey, boolean safeDefaultIfKeyNotFound) {
if (settingsMap == null) {
initSettingsMap();
}
String val = settingsMap.get(settingKey);;
return ( val==null ) ? safeDefaultIfKeyNotFound : TRUE_VALUES.contains(val.trim().toLowerCase() );
}
private void initSettingsMap() {
// initialize settings map
settingsMap = new HashMap<>();
for (Setting setting : settingService.listAll()) {
settingsMap.put(setting.getName(), setting.getContent());
}
}
private String guidesBaseUrl = null;
public String getGuidesBaseUrl() {
if (guidesBaseUrl == null) {
String saneDefault = "http://guides.dataverse.org";
guidesBaseUrl = get(":GuidesBaseUrl");
if (guidesBaseUrl == null) {
guidesBaseUrl = saneDefault + "/en";
} else {
guidesBaseUrl = guidesBaseUrl + "/en";
}
// TODO:
// hard-coded "en"; will need to be configuratble once
// we have support for other languages.
// TODO:
// remove a duplicate of this method from SystemConfig
}
return guidesBaseUrl;
}
}