package focusedCrawler.util.storage; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.JsonNode; import focusedCrawler.util.ParameterFile; public class StorageConfig { @JsonProperty("host") private String host = "localhost"; @JsonProperty("port") private int port = 1987; @JsonProperty("try_number") private int tryNumber = 1; @JsonProperty("delay_after_exception") private long delayAfterException = 5; @JsonProperty("binder_class_name") private String binderClassName = "focusedCrawler.util.storage.socket.StorageBinder"; @JsonProperty("factory_class_name") private String factoryClassname = "focusedCrawler.util.storage.socket.StorageRemoteAdapterFactory"; public StorageConfig() { } public StorageConfig(ParameterFile parameters) { this.binderClassName = parameters.getParamOrDefault("STORAGE_BINDER_CLASSNAME", "focusedCrawler.util.storage.socket.StorageBinder"); this.factoryClassname = parameters.getParamOrDefault("STORAGE_FACTORY_CLASSNAME", "focusedCrawler.util.storage.socket.StorageRemoteAdapterFactory"); this.port = parameters.getParamIntOrDefault("RMI_STORAGE_SERVER_PORT", 1987); this.tryNumber = parameters.getParamIntOrDefault("STORAGE_TRY_NUMBER", 1); this.delayAfterException = parameters.getParamLongOrDefault("STORAGE_DELAY_AFTER_EXCEPTION", 5); } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public int getTryNumber() { return tryNumber; } public void setTryNumber(int tryNumber) { this.tryNumber = tryNumber; } public long getDelayAfterException() { return delayAfterException; } public void setDelayAfterException(long delayAfterException) { this.delayAfterException = delayAfterException; } public String getBinderClassName() { return binderClassName; } public void setBinderClassName(String binderClassName) { this.binderClassName = binderClassName; } public String getFactoryClassname() { return factoryClassname; } public void setFactoryClassname(String factoryClassname) { this.factoryClassname = factoryClassname; } public static StorageConfig create(JsonNode config, String prefix) { StorageConfig serverConfig = new StorageConfig(); if(config.get(prefix + "host") != null) serverConfig.setHost(config.get(prefix + "host").asText()); if(config.get(prefix + "port") != null) serverConfig.setPort(config.get(prefix + "port").asInt()); if(config.get(prefix + "try_number") != null) serverConfig.setTryNumber(config.get(prefix + "try_number").asInt()); if(config.get(prefix + "delay_after_exception") != null) serverConfig.setDelayAfterException(config.get(prefix + "delay_after_exception").asInt()); if(config.get(prefix + "binder_class_name") != null) serverConfig.setBinderClassName(config.get(prefix + "binder_class_name").asText()); if(config.get(prefix + "factory_class_name") != null) serverConfig.setFactoryClassname(config.get(prefix + "factory_class_name").asText()); return serverConfig; } }