.replaceEnvVariables(((Element) daemonNode)
.getAttribute(ALIAS_ATTR));
RemoteSite dataFilesRemoteSite = this.siteInfo
.getSiteByAlias(siteAlias);
if (dataFilesRemoteSite == null)
throw new ConfigException("Alias '" + siteAlias
+ "' in SiteInfo file '"
+ remoteSpecsFile.getAbsolutePath()
+ "' has not been defined");
// get RUNINFO element
NodeList runInfoList = ((Element) daemonNode)
.getElementsByTagName(RUN_INFO_TAG);
String firstRunDateTimeString = null, period = null, epsilon = null;
boolean runOnReboot = false;
if (runInfoList.getLength() > 0) {
Element runInfo = (Element) runInfoList.item(0);
firstRunDateTimeString = runInfo
.getAttribute(FIRSTRUN_DATETIME_ATTR);
period = runInfo.getAttribute(PERIOD_ATTR);
runOnReboot = (runInfo.getAttribute(RUNONREBOOT_ATTR)
.toLowerCase().equals("yes")) ? true : false;
epsilon = runInfo.getAttribute(EPSILON_ATTR);
if (epsilon.equals(""))
epsilon = "0s";
}
// get PROPINFO elements
NodeList propInfoList = ((Element) daemonNode)
.getElementsByTagName(PROP_INFO_TAG);
LinkedList<PropFilesInfo> pfiList = new LinkedList<PropFilesInfo>();
PropFilesInfo pfi = null;
if (propInfoList.getLength() > 0) {
Node propInfoNode = propInfoList.item(0);
// get directory where the property files are
File propertyFilesDir = new File(PathUtils
.replaceEnvVariables(((Element) propInfoNode)
.getAttribute(DIR_ATTR)));
pfi = new PropFilesInfo(propertyFilesDir);
// get PROPFILES elements
NodeList propFilesList = ((Element) propInfoNode)
.getElementsByTagName(PROP_FILES_TAG);
String propFilesRegExp = null;
if (propFilesList.getLength() > 0) {
for (int k = 0; k < propFilesList.getLength(); k++) {
Node propFilesNode = propFilesList.item(k);
propFilesRegExp = ((Element) propFilesNode)
.getAttribute(REG_EXP_ATTR);
pfi
.addPropFiles(
propFilesRegExp,
PushPullObjectFactory
.createNewInstance((Class<Parser>) Class
.forName(PathUtils
.replaceEnvVariables(((Element) propFilesNode)
.getAttribute(PARSER_ATTR)))));
}
} else
throw new ConfigException(
"No propFiles element specified for deamon with alias '"
+ siteAlias + "' in RemoteSpecs file '"
+ remoteSpecsFile.getAbsolutePath()
+ "'");
// get DOWNLOADINFO element if given
NodeList downloadInfoList = ((Element) propInfoNode)
.getElementsByTagName(DOWNLOAD_INFO_TAG);
if (downloadInfoList.getLength() > 0) {
Node downloadInfo = downloadInfoList.item(0);
String propFilesAlias = PathUtils
.replaceEnvVariables(((Element) downloadInfo)
.getAttribute(ALIAS_ATTR));
String propFilesRenamingConv = ((Element) downloadInfo)
.getAttribute(RENAMING_CONV_ATTR);
boolean allowAliasOverride = PathUtils
.replaceEnvVariables(
((Element) downloadInfo)
.getAttribute(ALLOW_ALIAS_OVERRIDE_ATTR))
.equals("yes");
boolean deleteFromServer = PathUtils
.replaceEnvVariables(
((Element) downloadInfo)
.getAttribute(DELETE_FROM_SERVER_ATTR))
.equals("yes");
RemoteSite propFilesRemoteSite = this.siteInfo
.getSiteByAlias(propFilesAlias);
if (propFilesRemoteSite == null)
throw new ConfigException("Alias '"
+ propFilesAlias
+ "' in RemoteSpecs file '"
+ remoteSpecsFile.getAbsolutePath()
+ "' has not been defined");
String regExp = ((Element) downloadInfo)
.getAttribute(REG_EXP_ATTR);
if (regExp.equals(""))
regExp = propFilesRegExp;
NodeList propsList = ((Element) propInfoNode)
.getElementsByTagName(PROP_FILE_TAG);
HashMap<File, Parser> propFileToParserMap = new HashMap<File, Parser>();
for (int p = 0; p < propsList.getLength(); p++) {
Element propElem = (Element) propsList.item(p);
propFileToParserMap
.put(
new File(
PathUtils
.replaceEnvVariables(propElem
.getAttribute(PATH_ATTR))),
PushPullObjectFactory
.createNewInstance((Class<Parser>) Class
.forName(PathUtils
.replaceEnvVariables(propElem
.getAttribute(PARSER_ATTR)))));
}
pfi.setDownloadInfo(new DownloadInfo(
propFilesRemoteSite, propFilesRenamingConv,
deleteFromServer, propertyFilesDir,
allowAliasOverride), propFileToParserMap);
}
// get AFTERUSE element
NodeList afterUseList = ((Element) propInfoNode)
.getElementsByTagName(AFTER_USE_TAG);
if (afterUseList.getLength() > 0) {
Element afterUse = (Element) afterUseList.item(0);
File onSuccessDir = new File(PathUtils
.replaceEnvVariables(((Element) afterUse)
.getAttribute(MOVEON_TO_SUCCESS_ATTR)));
File onFailDir = new File(PathUtils
.replaceEnvVariables(((Element) afterUse)
.getAttribute(MOVEON_TO_FAIL_ATTR)));
pfi.setAfterUseEffects(onSuccessDir, onFailDir);
}
} else
throw new ConfigException(
"No propInfo element specified for deamon with alias '"
+ siteAlias + "' in RemoteSpecs file '"
+ remoteSpecsFile.getAbsolutePath() + "'");
// get DATAINFO elements
NodeList dataInfoList = ((Element) daemonNode)
.getElementsByTagName(DATA_INFO_TAG);
DataFilesInfo dfi = null;
if (dataInfoList.getLength() > 0) {
Node dataInfo = dataInfoList.item(0);
String queryElement = PathUtils
.replaceEnvVariables(((Element) dataInfo)
.getAttribute(QUERY_ELEM_ATTR));
String renamingConv = ((Element) dataInfo)
.getAttribute(RENAMING_CONV_ATTR);
boolean allowAliasOverride = PathUtils.replaceEnvVariables(
((Element) dataInfo)
.getAttribute(ALLOW_ALIAS_OVERRIDE_ATTR))
.equals("yes");
File stagingArea = new File(PathUtils
.replaceEnvVariables(((Element) dataInfo)
.getAttribute(STAGING_AREA_ATTR)));
boolean deleteFromServer = PathUtils.replaceEnvVariables(
((Element) dataInfo)
.getAttribute(DELETE_FROM_SERVER_ATTR))
.equals("yes");
dfi = new DataFilesInfo(queryElement, new DownloadInfo(
dataFilesRemoteSite, renamingConv,
deleteFromServer, stagingArea, allowAliasOverride));
} else
throw new ConfigException(
"No dataInfo element specified for deamon with alias '"
+ siteAlias + "' in RemoteSpecs file '"
+ remoteSpecsFile.getAbsolutePath() + "'");
daemonInfoList.add(new DaemonInfo(firstRunDateTimeString,
period, epsilon, runOnReboot, pfi, dfi));
}
} catch (Exception e) {
e.printStackTrace();
throw new ConfigException("Failed to load crawl elements : "
+ e.getMessage());
}
}