package org.openstack.atlas.tools;
import java.util.ArrayList;
import org.openstack.atlas.logs.hadoop.util.Constants;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.openstack.atlas.config.CloudFilesZipInfo;
import org.openstack.atlas.util.staticutils.StaticStringUtils;
public class QuartzSchedulerConfigs {
private String runTime;
private String rawlogsFileTime;
private String inputString;
private String fileMoveInput;
private List<String> inputForMultiPathJobs;
private List<CloudFilesZipInfo> cloudFilesZipInfoList;
private String jobJarPath;
private boolean lzoInput;
@Override
public String toString() {
return "QuartzSchedulerConfigs{runTime=" + runTime
+ ", rawlogsFileTime=" + rawlogsFileTime
+ ", inputString=" + inputString
+ ", fileMoveInput=" + fileMoveInput
+ ", inputForMultiPathJobs=" + StaticStringUtils.collectionToString(inputForMultiPathJobs, ",")
+ ", jobJarPath=" + jobJarPath
+ ", lzoInput=" + lzoInput
+ ", cloudFilesZipList ={" + cloudFilesZipFileListToString() + "}"
+ "}";
}
private String cloudFilesZipFileListToString() {
if (cloudFilesZipInfoList == null) {
return "null";
}
long uncompressedSize = 0;
long nLines = 0;
int nFiles = 0;
for (CloudFilesZipInfo zipInfo : cloudFilesZipInfoList) {
uncompressedSize += zipInfo.getUncompressedSize();
nFiles += 1;
nLines += zipInfo.getnLines();
}
return "nLines=" + nLines
+ ", nFiles=" + nFiles
+ ", uncompressedSize=" + uncompressedSize;
}
private static List<String> createInputForMultiPathJobs(Map values) {
Object val = values.get(Constants.COPY_ALL_FILES);
if (val instanceof List) {
return (List<String>) val;
} else if (val instanceof Object[]) {
List returnVals = new LinkedList();
for (Object o : (Object[]) val) {
if (o instanceof String) {
returnVals.add((String) o);
} else {
returnVals.add(o.toString());
}
return returnVals;
}
}
return null;
}
public Map createMapOutputOfValues() {
Map map = new HashMap();
map.put(Constants.FORMATTED_RUNTIME, getRunTime());
map.put(Constants.INPUT_DIR, getInputString());
map.put(Constants.FILEDATE, getRawlogsFileTime());
map.put(Constants.COPY_ALL_FILES, getInputForMultiPathJobs());
map.put(Constants.JOBJAR_PATH, getJobJarPath());
map.put(Constants.CLOUDFILES_ZIP_INFO, getCloudFilesZipInfoList());
map.put(Constants.INPUT_TYPE, isLzoInput());
return map;
}
public static QuartzSchedulerConfigs createSchedulerConfigsFromMap(Map values) {
QuartzSchedulerConfigs schedulerConfigs = new QuartzSchedulerConfigs();
schedulerConfigs.setRunTime((String) values.get(Constants.FORMATTED_RUNTIME));
schedulerConfigs.setInputString((String) values.get(Constants.INPUT_DIR));
schedulerConfigs.setRawlogsFileTime((String) values.get(Constants.FILEDATE));
schedulerConfigs.setCloudFilesZipInfoList((List<CloudFilesZipInfo>) values.get(Constants.CLOUDFILES_ZIP_INFO));
schedulerConfigs.setInputForMultiPathJobs(createInputForMultiPathJobs(values));
schedulerConfigs.setJobJarPath((String) values.get(Constants.JOBJAR_PATH));
if (values.get(Constants.INPUT_TYPE) == null) {
schedulerConfigs.setLzoInput(false);
} else {
schedulerConfigs.setLzoInput((Boolean) values.get(Constants.INPUT_TYPE));
}
return schedulerConfigs;
}
public String getRunTime() {
return runTime;
}
public void setRunTime(String runTime) {
this.runTime = runTime;
}
public String getRawlogsFileTime() {
return rawlogsFileTime;
}
public void setRawlogsFileTime(String rawlogsFileTime) {
this.rawlogsFileTime = rawlogsFileTime;
}
public String getInputString() {
return inputString;
}
public void setInputString(String inputString) {
this.inputString = inputString;
}
public String getFileMoveInput() {
return fileMoveInput;
}
public void setFileMoveInput(String fileMoveInput) {
this.fileMoveInput = fileMoveInput;
}
public List<String> getInputForMultiPathJobs() {
return inputForMultiPathJobs;
}
public void setInputForMultiPathJobs(List<String> inputForMultiPathJobs) {
this.inputForMultiPathJobs = inputForMultiPathJobs;
}
public String getJobJarPath() {
return jobJarPath;
}
public void setJobJarPath(String jobJarPath) {
this.jobJarPath = jobJarPath;
}
public boolean isLzoInput() {
return lzoInput;
}
public void setLzoInput(boolean lzoInput) {
this.lzoInput = lzoInput;
}
public List<CloudFilesZipInfo> getCloudFilesZipInfoList() {
if (cloudFilesZipInfoList == null) {
cloudFilesZipInfoList = new ArrayList<CloudFilesZipInfo>();
}
return cloudFilesZipInfoList;
}
public void setCloudFilesZipInfoList(List<CloudFilesZipInfo> cloudFilesZipInfoList) {
this.cloudFilesZipInfoList = cloudFilesZipInfoList;
}
}