mirror of
https://github.com/internetarchive/heritrix3.git
synced 2026-09-26 07:35:39 +00:00
move some code into EngineModel constructor and restore reverse chronological ordering of crawl jobs
This commit is contained in:
@@ -19,29 +19,16 @@
|
||||
|
||||
package org.archive.crawler.restlet;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.archive.crawler.framework.CrawlJob;
|
||||
import org.archive.crawler.framework.Engine;
|
||||
import org.archive.crawler.framework.CrawlController.State;
|
||||
import org.archive.crawler.restlet.models.CrawlJobModel;
|
||||
import org.archive.crawler.restlet.models.EngineModel;
|
||||
import org.archive.crawler.restlet.models.ViewModel;
|
||||
import org.archive.util.FileUtils;
|
||||
import org.restlet.Context;
|
||||
import org.restlet.data.CharacterSet;
|
||||
import org.restlet.data.Form;
|
||||
@@ -219,46 +206,8 @@ public class EngineResource extends BaseResource {
|
||||
if(!baseRef.endsWith("/")) {
|
||||
baseRef += "/";
|
||||
}
|
||||
EngineModel model = new EngineModel(getEngine(), baseRef);
|
||||
|
||||
List<Map<String,Object>> jobList = new ArrayList<Map<String,Object>>();
|
||||
model.put("jobs", jobList);
|
||||
|
||||
//Generate list of jobs
|
||||
ArrayList<Map.Entry<String,CrawlJob>> jobConfigurations = new ArrayList<Map.Entry<String,CrawlJob>>(getEngine().getJobConfigs().entrySet());
|
||||
Collections.sort(jobConfigurations, new Comparator<Map.Entry<String, CrawlJob>>() {
|
||||
public int compare(Map.Entry<String, CrawlJob> cj1, Map.Entry<String, CrawlJob> cj2) {
|
||||
return (cj2.getValue()).compareTo(cj1.getValue());
|
||||
}
|
||||
});
|
||||
for(Map.Entry<String,CrawlJob> jobConfig : jobConfigurations) {
|
||||
CrawlJob job = jobConfig.getValue();
|
||||
HashMap<String, Object> crawlJobModel = new HashMap<String, Object>();
|
||||
crawlJobModel.put("shortName",job.getShortName());
|
||||
crawlJobModel.put("url",baseRef+"job/"+job.getShortName());
|
||||
crawlJobModel.put("isProfile",job.isProfile());
|
||||
crawlJobModel.put("launchCount",job.getLaunchCount());
|
||||
crawlJobModel.put("lastLaunch",job.getLastLaunch());
|
||||
crawlJobModel.put("hasApplicationContext",job.hasApplicationContext());
|
||||
crawlJobModel.put("statusDescription", job.getJobStatusDescription());
|
||||
crawlJobModel.put("isLaunchInfoPartial", job.isLaunchInfoPartial());
|
||||
File primaryConfig = FileUtils.tryToCanonicalize(job.getPrimaryConfig());
|
||||
crawlJobModel.put("primaryConfig", primaryConfig.getAbsolutePath());
|
||||
crawlJobModel.put("primaryConfigUrl", baseRef + "jobdir/" + primaryConfig.getName());
|
||||
if (job.getCrawlController() != null) {
|
||||
crawlJobModel.put("crawlControllerState", job.getCrawlController().getState());
|
||||
if (job.getCrawlController().getState() == State.FINISHED) {
|
||||
crawlJobModel.put("crawlExitStatus", job.getCrawlController().getCrawlExitStatus());
|
||||
}
|
||||
}
|
||||
|
||||
crawlJobModel.put("key", jobConfig.getKey());
|
||||
jobList.add(crawlJobModel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return model;
|
||||
return new EngineModel(getEngine(), baseRef);
|
||||
}
|
||||
|
||||
protected void writeHtml(Writer writer) {
|
||||
|
||||
@@ -21,40 +21,23 @@ package org.archive.crawler.restlet;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.apache.commons.io.filefilter.IOFileFilter;
|
||||
import org.apache.commons.lang.StringEscapeUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.archive.checkpointing.Checkpoint;
|
||||
import org.archive.crawler.framework.CrawlController.State;
|
||||
import org.archive.crawler.framework.CrawlJob;
|
||||
import org.archive.crawler.framework.Engine;
|
||||
import org.archive.crawler.reporting.AlertHandler;
|
||||
import org.archive.crawler.reporting.AlertThreadGroup;
|
||||
import org.archive.crawler.reporting.Report;
|
||||
import org.archive.crawler.restlet.models.CrawlJobModel;
|
||||
import org.archive.crawler.restlet.models.EngineModel;
|
||||
import org.archive.crawler.restlet.models.ViewModel;
|
||||
import org.archive.spring.ConfigPath;
|
||||
import org.archive.util.ArchiveUtils;
|
||||
import org.archive.util.FileUtils;
|
||||
import org.archive.util.TextUtils;
|
||||
import org.restlet.Context;
|
||||
import org.restlet.data.CharacterSet;
|
||||
import org.restlet.data.Form;
|
||||
import org.restlet.data.MediaType;
|
||||
import org.restlet.data.Reference;
|
||||
import org.restlet.data.Request;
|
||||
import org.restlet.data.Response;
|
||||
import org.restlet.resource.Representation;
|
||||
@@ -63,7 +46,6 @@ import org.restlet.resource.Variant;
|
||||
import org.restlet.resource.WriterRepresentation;
|
||||
|
||||
import freemarker.template.Configuration;
|
||||
import freemarker.template.DefaultObjectWrapper;
|
||||
import freemarker.template.ObjectWrapper;
|
||||
import freemarker.template.Template;
|
||||
import freemarker.template.TemplateException;
|
||||
@@ -142,15 +124,11 @@ public class JobResource extends BaseResource {
|
||||
* @return the nested Map data structure
|
||||
*/
|
||||
protected CrawlJobModel makeDataModel() {
|
||||
|
||||
String baseRef = getRequest().getResourceRef().getBaseRef().toString();
|
||||
if (!baseRef.endsWith("/")) {
|
||||
baseRef += "/";
|
||||
}
|
||||
Reference baseRefRef = new Reference(baseRef);
|
||||
CrawlJobModel model = new CrawlJobModel(cj,baseRef);
|
||||
|
||||
return model;
|
||||
return new CrawlJobModel(cj,baseRef);
|
||||
}
|
||||
|
||||
protected void writeHtml(Writer writer) {
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
package org.archive.crawler.restlet.models;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.archive.crawler.framework.CrawlJob;
|
||||
import org.archive.crawler.framework.Engine;
|
||||
import org.archive.crawler.framework.CrawlController.State;
|
||||
import org.archive.util.FileUtils;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@@ -22,5 +29,46 @@ public class EngineModel extends HashMap<String, Object> {
|
||||
actions.add("add");
|
||||
actions.add("create");
|
||||
this.put("availableActions", actions);
|
||||
|
||||
this.put("jobs", makeJobList(engine, urlBaseRef));
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> makeJobList(Engine engine,
|
||||
String urlBaseRef) {
|
||||
List<Map<String, Object>> jobList;
|
||||
jobList = new ArrayList<Map<String,Object>>();
|
||||
// Generate list of jobs
|
||||
ArrayList<Map.Entry<String,CrawlJob>> jobConfigurations = new ArrayList<Map.Entry<String,CrawlJob>>(engine.getJobConfigs().entrySet());
|
||||
Collections.sort(jobConfigurations, new Comparator<Map.Entry<String, CrawlJob>>() {
|
||||
public int compare(Map.Entry<String, CrawlJob> cj1, Map.Entry<String, CrawlJob> cj2) {
|
||||
return cj1.getValue().compareTo(cj2.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
for(Map.Entry<String,CrawlJob> jobConfig : jobConfigurations) {
|
||||
CrawlJob job = jobConfig.getValue();
|
||||
HashMap<String, Object> crawlJobModel = new HashMap<String, Object>();
|
||||
crawlJobModel.put("shortName",job.getShortName());
|
||||
crawlJobModel.put("url",urlBaseRef+"job/"+job.getShortName());
|
||||
crawlJobModel.put("isProfile",job.isProfile());
|
||||
crawlJobModel.put("launchCount",job.getLaunchCount());
|
||||
crawlJobModel.put("lastLaunch",job.getLastLaunch());
|
||||
crawlJobModel.put("hasApplicationContext",job.hasApplicationContext());
|
||||
crawlJobModel.put("statusDescription", job.getJobStatusDescription());
|
||||
crawlJobModel.put("isLaunchInfoPartial", job.isLaunchInfoPartial());
|
||||
File primaryConfig = FileUtils.tryToCanonicalize(job.getPrimaryConfig());
|
||||
crawlJobModel.put("primaryConfig", primaryConfig.getAbsolutePath());
|
||||
crawlJobModel.put("primaryConfigUrl", urlBaseRef + "jobdir/" + primaryConfig.getName());
|
||||
if (job.getCrawlController() != null) {
|
||||
crawlJobModel.put("crawlControllerState", job.getCrawlController().getState());
|
||||
if (job.getCrawlController().getState() == State.FINISHED) {
|
||||
crawlJobModel.put("crawlExitStatus", job.getCrawlController().getCrawlExitStatus());
|
||||
}
|
||||
}
|
||||
|
||||
crawlJobModel.put("key", jobConfig.getKey());
|
||||
jobList.add(crawlJobModel);
|
||||
}
|
||||
return jobList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user