From f988a26e10e62be3abd0bd6836a5bc732ecbb38e Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Thu, 28 Mar 2013 19:09:14 -0700 Subject: [PATCH] move some code into EngineModel constructor and restore reverse chronological ordering of crawl jobs --- .../crawler/restlet/EngineResource.java | 53 +------------------ .../archive/crawler/restlet/JobResource.java | 24 +-------- .../crawler/restlet/models/EngineModel.java | 48 +++++++++++++++++ 3 files changed, 50 insertions(+), 75 deletions(-) diff --git a/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java b/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java index 190768ac..535e9576 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java @@ -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> jobList = new ArrayList>(); - model.put("jobs", jobList); - - //Generate list of jobs - ArrayList> jobConfigurations = new ArrayList>(getEngine().getJobConfigs().entrySet()); - Collections.sort(jobConfigurations, new Comparator>() { - public int compare(Map.Entry cj1, Map.Entry cj2) { - return (cj2.getValue()).compareTo(cj1.getValue()); - } - }); - for(Map.Entry jobConfig : jobConfigurations) { - CrawlJob job = jobConfig.getValue(); - HashMap crawlJobModel = new HashMap(); - 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) { diff --git a/engine/src/main/java/org/archive/crawler/restlet/JobResource.java b/engine/src/main/java/org/archive/crawler/restlet/JobResource.java index 3a9dd75e..baeea4d2 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/JobResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/JobResource.java @@ -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) { diff --git a/engine/src/main/java/org/archive/crawler/restlet/models/EngineModel.java b/engine/src/main/java/org/archive/crawler/restlet/models/EngineModel.java index ae6b4f00..c3c9eaf3 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/models/EngineModel.java +++ b/engine/src/main/java/org/archive/crawler/restlet/models/EngineModel.java @@ -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 { actions.add("add"); actions.add("create"); this.put("availableActions", actions); + + this.put("jobs", makeJobList(engine, urlBaseRef)); } + + private List> makeJobList(Engine engine, + String urlBaseRef) { + List> jobList; + jobList = new ArrayList>(); + // Generate list of jobs + ArrayList> jobConfigurations = new ArrayList>(engine.getJobConfigs().entrySet()); + Collections.sort(jobConfigurations, new Comparator>() { + public int compare(Map.Entry cj1, Map.Entry cj2) { + return cj1.getValue().compareTo(cj2.getValue()); + } + }); + + for(Map.Entry jobConfig : jobConfigurations) { + CrawlJob job = jobConfig.getValue(); + HashMap crawlJobModel = new HashMap(); + 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; + } }