/*
* Copyright 2012, CMM, University of Queensland.
*
* This file is part of Paul.
*
* Paul is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Paul is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Paul. If not, see <http://www.gnu.org/licenses/>.
*/
package au.edu.uq.cmm.paul;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import au.edu.uq.cmm.aclslib.config.ConfigurationException;
import au.edu.uq.cmm.aclslib.config.JsonConfigLoader;
import au.edu.uq.cmm.paul.queue.QueueFileManager;
/**
* This class represents the configuration details of an ACLS proxy backed by a
* JSON file.
*
* @author scrawley
*/
public class StaticPaulConfiguration implements GrabberConfiguration {
private String captureDirectory;
private String archiveDirectory;
private int grabberTimeout;
private String baseFileUrl;
private String feedId;
private String feedTitle;
private String feedAuthor;
private String feedAuthorEmail;
private String feedUrl;
private int feedPageSize = 20;
private long queueExpiryTime;
private long queueExpiryInterval;
private boolean expireByDeleting;
private boolean holdDatasetsWithNoUser = true;
private String primaryRepositoryUrl;
private String aclsUrl;
private QueueFileManager.Strategy queueFileStrategy = QueueFileManager.Strategy.COPY_FILES;
private long queueFileSizeThreshold;
@Override
public String getCaptureDirectory() {
return captureDirectory;
}
public void setCaptureDirectory(String captureDirectory) {
this.captureDirectory = captureDirectory;
}
@Override
public String getArchiveDirectory() {
return archiveDirectory;
}
public void setArchiveDirectory(String archiveDirectory) {
this.archiveDirectory = archiveDirectory;
}
@Override
public int getGrabberTimeout() {
return grabberTimeout;
}
public void setGrabberTimeout(int grabberTimeout) {
this.grabberTimeout = grabberTimeout;
}
@Override
public String getBaseFileUrl() {
return baseFileUrl;
}
public void setBaseFileUrl(String baseFileUrl) {
this.baseFileUrl = baseFileUrl;
}
@Override
public String getFeedId() {
return feedId;
}
public void setFeedId(String feedId) {
this.feedId = feedId;
}
@Override
public String getFeedTitle() {
return feedTitle;
}
public void setFeedTitle(String feedTitle) {
this.feedTitle = feedTitle;
}
@Override
public String getFeedAuthor() {
return feedAuthor;
}
public void setFeedAuthor(String feedAuthor) {
this.feedAuthor = feedAuthor;
}
@Override
public String getFeedAuthorEmail() {
return feedAuthorEmail;
}
public void setFeedAuthorEmail(String feedAuthorEmail) {
this.feedAuthorEmail = feedAuthorEmail;
}
@Override
public String getFeedUrl() {
return feedUrl;
}
public void setFeedUrl(String feedUrl) {
this.feedUrl = feedUrl;
}
@Override
public int getFeedPageSize() {
return feedPageSize ;
}
public void setFeedPageSize(int feedPageSize) {
this.feedPageSize = feedPageSize;
}
@Override
public long getQueueExpiryTime() {
return queueExpiryTime;
}
public void setQueueExpiryTime(long queueExpiryTime) {
this.queueExpiryTime = queueExpiryTime;
}
@Override
public long getQueueExpiryInterval() {
return queueExpiryInterval;
}
public void setQueueExpiryInterval(long queueExpiryInterval) {
this.queueExpiryInterval = queueExpiryInterval;
}
@Override
public boolean isExpireByDeleting() {
return expireByDeleting;
}
public void setExpireByDeleting(boolean expireByDeleting) {
this.expireByDeleting = expireByDeleting;
}
@Override
public String getPrimaryRepositoryUrl() {
return primaryRepositoryUrl;
}
public void setPrimaryRepositoryUrl(String primaryRepositoryUrl) {
this.primaryRepositoryUrl = primaryRepositoryUrl;
}
@Override
public String getAclsUrl() {
return aclsUrl;
}
public void setAclsUrl(String aclsUrl) {
this.aclsUrl = aclsUrl;
}
@Override
public boolean isHoldDatasetsWithNoUser() {
return holdDatasetsWithNoUser;
}
public void setHoldDatasetsWithNoUser(boolean holdDatasetsWithNoUser) {
this.holdDatasetsWithNoUser = holdDatasetsWithNoUser;
}
@Override
public QueueFileManager.Strategy getQueueFileStrategy() {
return queueFileStrategy;
}
public void setQueueFileStrategy(QueueFileManager.Strategy queueFileStrategy) {
this.queueFileStrategy = queueFileStrategy;
}
@Override
public Long getQueueFileSizeThreshold() {
return queueFileSizeThreshold;
}
public void setQueueFileSizeThreshold(Long queueFileSizeThreshold) {
this.queueFileSizeThreshold = queueFileSizeThreshold;
}
/**
* Load the configuration from a file.
*
* @param configFile
* @return the configuration or null if it couldn't be found / read.
* @throws ConfigurationException
*/
public static StaticPaulConfiguration loadConfiguration(String configFile)
throws ConfigurationException {
return new JsonConfigLoader<StaticPaulConfiguration>(StaticPaulConfiguration.class).
loadConfiguration(configFile);
}
/**
* Load the configuration from a URL. This understands any URL that the
* JVM has a protocol handler for, and also "classpath:" URLs.
* @return the configuration or null
* @param urlString the URL for the config file
* @throws URISyntaxException
* @throws MalformedURLException
*/
public static StaticPaulConfiguration loadConfigurationFromUrl(String urlString)
throws ConfigurationException {
return new JsonConfigLoader<StaticPaulConfiguration>(StaticPaulConfiguration.class).
loadConfigurationFromUrl(urlString);
}
/**
* Load the configuration from a stream.
* @return the configuration or null
* @param urlString the URL for the config file
* @throws URISyntaxException
* @throws MalformedURLException
*/
public static StaticPaulConfiguration loadConfiguration(InputStream is)
throws ConfigurationException {
return new JsonConfigLoader<StaticPaulConfiguration>(StaticPaulConfiguration.class).
loadConfiguration(is);
}
@Override
public String toString() {
return "StaticPaulConfiguration [captureDirectory=" + captureDirectory
+ ", archiveDirectory=" + archiveDirectory
+ ", grabberTimeout=" + grabberTimeout + ", baseFileUrl="
+ baseFileUrl + ", feedId=" + feedId + ", feedTitle="
+ feedTitle + ", feedAuthor=" + feedAuthor
+ ", feedAuthorEmail=" + feedAuthorEmail + ", feedUrl="
+ feedUrl + ", feedPageSize=" + feedPageSize
+ ", queueExpiryTime=" + queueExpiryTime
+ ", queueExpiryInterval=" + queueExpiryInterval
+ ", expireByDeleting=" + expireByDeleting
+ ", holdDatasetsWithNoUser=" + holdDatasetsWithNoUser
+ ", primaryRepositoryUrl=" + primaryRepositoryUrl
+ ", aclsUrl=" + aclsUrl + ", queueFileStrategy="
+ queueFileStrategy + "]";
}
}