package edu.sc.seis.sod.source; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; import edu.sc.seis.fissuresUtil.cache.ClassicRetryStrategy; import edu.sc.seis.fissuresUtil.cache.RetryStrategy; import edu.sc.seis.fissuresUtil.namingService.FissuresNamingService; import edu.sc.seis.sod.CommonAccess; import edu.sc.seis.sod.SodUtil; import edu.sc.seis.sod.UserReportRetryStrategy; public abstract class AbstractSource implements Source { public AbstractSource(String name) { this(name, -1); } public AbstractSource(String name, int retries) { this.name = name; retries = -1; retryStrategy = new ClassicRetryStrategy(retries); } public AbstractSource(Element config, String defaultName) { this(config, defaultName, -1); } public AbstractSource(Element config, String defaultName, int defaultRetries) { if (config.hasAttribute("name")) { name = config.getAttribute("name"); } else { name = SodUtil.loadText(config, NAME_ELEMENT, defaultName); } retries = SodUtil.loadInt(config, RETRIES_ELEMENT, defaultRetries); retryStrategy = new UserReportRetryStrategy(getRetries()); } /* * (non-Javadoc) * * @see edu.sc.seis.sod.source.Source#getName() */ @Override public String getName() { return name; } public int getRetries() { return retries; } public FissuresNamingService getFissuresNamingService() { return CommonAccess.getNameService(); } public RetryStrategy getRetryStrategy() { return retryStrategy; } public void setRetryStrategy(RetryStrategy retryStrategy) { if (retryStrategy != null) { this.retryStrategy = retryStrategy; } else { throw new IllegalArgumentException("RetryStrategy cannot be null"); } } public void appendToName(String suffix) { name += suffix; } protected String name; private int retries = -1; private RetryStrategy retryStrategy; public static final String NAME_ELEMENT = "name"; public static final String RETRIES_ELEMENT = "retries"; private static Logger logger = LoggerFactory.getLogger(AbstractSource.class); }// AbstractSource