package com.owera.xaps.tr069;
import com.owera.common.util.PropertyReader;
import com.owera.xaps.base.Log;
public class Properties {
private static PropertyReader pr = new PropertyReader("xaps-tr069.properties");
public static String getCustomProperty(String customProperty) {
return pr.getProperty(customProperty);
}
private static String getUnittypeName(SessionData sessionData) {
String unittypeName = null;
if (sessionData != null && sessionData.getUnittype() != null)
unittypeName = sessionData.getUnittype().getName();
return unittypeName;
}
private static String getVersion(SessionData sessionData) {
String version = null;
if (sessionData != null && sessionData.getCpeParameters() != null)
version = sessionData.getCpeParameters().getValue(sessionData.getCpeParameters().SOFTWARE_VERSION);
return version;
}
// public static boolean isConfigFileVersionQuirk(SessionData sessionData) {
// return isQuirk("configfileversion", getUnittypeName(sessionData),
// getVersion(sessionData));
// }
public static boolean isParameterkeyQuirk(SessionData sessionData) {
return isQuirk("parameterkey", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isUnitDiscovery(SessionData sessionData) {
return isQuirk("unitdiscovery", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isTerminationQuirk(SessionData sessionData) {
return isQuirk("termination", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isXmlCharFilterQuirk(SessionData sessionData) {
return isQuirk("xmlcharfilter", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isPrettyPrintQuirk(SessionData sessionData) {
return isQuirk("prettyprint", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isIgnoreVendorConfigFile(SessionData sessionData) {
return isQuirk("ignorevendorconfigfile", getUnittypeName(sessionData), getVersion(sessionData));
}
public static boolean isNextLevel0InGPN(SessionData sessionData) {
return isQuirk("nextlevel0ingpn", getUnittypeName(sessionData), getVersion(sessionData));
}
private static boolean isQuirk(String quirkName, String unittypeName, String version) {
if (unittypeName == null) {
Log.debug(Properties.class, "The unittypename (" + unittypeName + ") could not be found. The quirk " + quirkName + " will return default false");
return false;
}
for (String quirk : getQuirks(unittypeName, version)) {
if (quirk.equals(quirkName))
return true;
}
return false;
}
private static String[] getQuirks(String unittypeName, String version) {
String quirks = null;
if (version != null)
quirks = pr.getProperty("quirks." + unittypeName + "@" + version);
if (quirks == null)
quirks = pr.getProperty("quirks." + unittypeName);
if (quirks == null)
return new String[0];
else
return quirks.split("\\s*,\\s*");
}
// public static boolean isDiscoveryForce() {
// return getString("discovery.force", "false").equals("true");
// }
public static boolean isDiscoveryMode() {
return getString("discovery.mode", "false").equals("true");
}
public static String[] getDiscoveryBlocked() {
String blocked = getString("discovery.block", null);
if (blocked == null)
return new String[0];
else
return blocked.split("\\s*,\\s*");
}
public static boolean isTestMode() {
return getString("debug.test.mode", "false").equals("true");
}
private static int getInteger(String propertyKey, int defaultValue) {
String prop = pr.getProperty(propertyKey);
try {
return Integer.parseInt(prop);
} catch (Throwable t) {
Log.warn(Properties.class, "The value of " + propertyKey + " was not a number, instead using default value " + defaultValue, t);
return defaultValue;
}
}
private static String getString(String propertyKey, String defaultValue) {
String prop = pr.getProperty(propertyKey);
if (prop == null) {
Log.warn(Properties.class, "The value of " + propertyKey + " was not specified, instead using default value " + defaultValue);
return defaultValue;
}
return prop;
}
// public static String getLog2SyslogDB() {
// return getString("log2syslogdb", "false");
// }
//
public static String getAuthMethod() {
return getString("auth.method", "none");
}
public static int getXAPSCacheTimeout() {
return getInteger("xaps.cache.timeout", 300);
}
public static boolean isFileAuthUsed() {
return getString("file.auth.used", "false").equals("true");
}
}