/*_##########################################################################
_##
_## Copyright (C) 2011 Kaito Yamada
_##
_##########################################################################
*/
package com.github.kaitoy.sneo.tools.console;
import java.lang.reflect.InvocationTargetException;
import org.apache.log4j.Logger;
import org.pcap4j.util.PropertiesLoader;
import org.snmp4j.util.VariableTextFormat;
import com.github.kaitoy.sneo.util.ColonSeparatedOidTypeValueVariableTextFormat;
public class SnmpRequestPropertiesLoader {
private static final Logger logger
= Logger.getLogger(PropertiesLoader.class);
private static final String KEY_PREFIX
= SnmpRequestPropertiesLoader.class.getPackage().getName()
+ ".snmpRequest";
public static final String AGENT_PROPERTIES_PATH_KEY
= KEY_PREFIX + ".properties";
private static final SnmpRequestPropertiesLoader INSTANCE
= new SnmpRequestPropertiesLoader();
private PropertiesLoader loader
= new PropertiesLoader(
System.getProperty(
AGENT_PROPERTIES_PATH_KEY,
KEY_PREFIX.replace('.', '/') + ".properties"
),
true,
true
);
private SnmpRequestPropertiesLoader() {}
public static SnmpRequestPropertiesLoader getInstance() {
return INSTANCE;
}
public VariableTextFormat getVariableTextFormat() {
Class<? extends VariableTextFormat> vtfClass
= loader.<VariableTextFormat>getClass(
KEY_PREFIX + ".VariableTextFormat",
ColonSeparatedOidTypeValueVariableTextFormat.class
);
try {
return (VariableTextFormat)vtfClass
.getMethod("getInstance").invoke(null);
} catch (SecurityException e) {
logger.warn(
new StringBuilder()
.append("[").append(loader.getResourceName())
.append("] Failed to get instance because of ")
.append(e.getMessage())
.append(", use defalut value: ")
.append(ColonSeparatedOidTypeValueVariableTextFormat.class.getName())
);
return ColonSeparatedOidTypeValueVariableTextFormat.getInstance();
} catch (NoSuchMethodException e) {
logger.warn(
new StringBuilder()
.append("[").append(loader.getResourceName())
.append("] Failed to get instance because of ")
.append(e.getMessage())
.append(", use defalut value: ")
.append(ColonSeparatedOidTypeValueVariableTextFormat.class.getName())
);
return ColonSeparatedOidTypeValueVariableTextFormat.getInstance();
} catch (IllegalArgumentException e) {
logger.warn(
new StringBuilder()
.append("[").append(loader.getResourceName())
.append("] Failed to get instance because of ")
.append(e.getMessage())
.append(", use defalut value: ")
.append(ColonSeparatedOidTypeValueVariableTextFormat.class.getName())
);
return ColonSeparatedOidTypeValueVariableTextFormat.getInstance();
} catch (IllegalAccessException e) {
logger.warn(
new StringBuilder()
.append("[").append(loader.getResourceName())
.append("] Failed to get instance because of ")
.append(e.getMessage())
.append(", use defalut value: ")
.append(ColonSeparatedOidTypeValueVariableTextFormat.class.getName())
);
return ColonSeparatedOidTypeValueVariableTextFormat.getInstance();
} catch (InvocationTargetException e) {
logger.warn(
new StringBuilder()
.append("[").append(loader.getResourceName())
.append("] Failed to get instance because of ")
.append(e.getMessage())
.append(", use defalut value: ")
.append(ColonSeparatedOidTypeValueVariableTextFormat.class.getName())
);
return ColonSeparatedOidTypeValueVariableTextFormat.getInstance();
}
}
}