From 3d573a8d5fd0b99d8b6dc89ad60cdba0fec53f46 Mon Sep 17 00:00:00 2001 From: gojomo Date: Fri, 24 Jul 2009 00:00:28 +0000 Subject: [PATCH] Resolve remaining broken links to logs outside job dir * JobResource.java refactor, improve printLinkedFile * EngineApplication.java remove debug output --- .../crawler/restlet/EngineApplication.java | 1 - .../archive/crawler/restlet/JobResource.java | 82 ++++++++++--------- 2 files changed, 45 insertions(+), 38 deletions(-) diff --git a/engine/src/main/java/org/archive/crawler/restlet/EngineApplication.java b/engine/src/main/java/org/archive/crawler/restlet/EngineApplication.java index 9024822b..6378eb40 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/EngineApplication.java +++ b/engine/src/main/java/org/archive/crawler/restlet/EngineApplication.java @@ -78,7 +78,6 @@ public class EngineApplication extends Application { @Override Reference determineRootRef(Request request) { String ref = "file:/"; - System.out.println(ref); return new Reference(ref); }}; anypath.setListingAllowed(true); 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 7bfebecb..2b29dfef 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/JobResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/JobResource.java @@ -161,10 +161,10 @@ public class JobResource extends Resource { // configuration pw.println("configuration: "); - printLinkedIfInJobDirectory(pw, cj.getPrimaryConfig()); + printLinked(pw, cj.getPrimaryConfig()); for(File f : cj.getImportedConfigs(cj.getPrimaryConfig())) { pw.println("imported: "); - printLinkedIfInJobDirectory(pw,f); + printLinked(pw,f); } // if(cj.isXmlOk()) { @@ -225,10 +225,11 @@ public class JobResource extends Resource { pw.println("
Alerts
  "); pw.println(cj.getAlertCount()==0 ? "none" : cj.getAlertCount()); if(cj.getAlertCount()>0) { - pw.println("tail alert log..."); + printLinkedFile( + pw, + cj.getCrawlController().getLoggerModule().getAlertsLogPath().getFile(), + "tail alert log...", + "?format=paged&pos=-1&lines=-128"); } pw.println("
Rates
  "); @@ -252,10 +253,11 @@ public class JobResource extends Resource { if(cj.isRunning() || (cj.isContainerOk() && !cj.isLaunchable())) { // show crawl log for running or finished crawls pw.println("

Crawl Log"); - pw.println("(more)"); + printLinkedFile( + pw, + cj.getCrawlController().getLoggerModule().getCrawlLogPath().getFile(), + "more", + "format=paged&pos=-1&lines=-128&reverse=y"); pw.println("

"); pw.println("
");
                 try {
@@ -298,7 +300,7 @@ public class JobResource extends Resource {
             for(ConfigPath cp : cj.getConfigPaths().values()) {
                 pw.println("
"+cp.getName()+"
"); pw.println("
"); - printLinkedIfInJobDirectory(pw, cp.getFile()); + printLinked(pw, cp.getFile()); pw.println("
"); } pw.println(""); @@ -325,41 +327,47 @@ public class JobResource extends Resource { } /** - * Print the given File path, but only provide view/edit link if - * path is within job directory. + * Print a link to the given File * * @param pw PrintWriter * @param f File */ - protected void printLinkedIfInJobDirectory(PrintWriter pw, File f) { - String jobDirRelative = cj.jobDirRelativePath(f); - if(jobDirRelative==null) { - /// print via anypath - String fullPath = f.getAbsolutePath(); - fullPath = fullPath.replace(File.separatorChar, '/'); - pw.println("" - + f +""); - if(EDIT_FILTER.accept(f)) { - pw.println("[edit]
"); - } - - - //pw.println(f); - return; - } - pw.println("" - + f +""); + protected void printLinked(PrintWriter pw, File f) { + printLinkedFile(pw,f,f.toString(),null); + } + + /** + * Print a link to the given File, using the given link text + * + * @param pw PrintWriter + * @param f File + */ + protected void printLinkedFile(PrintWriter pw, File f, String linktext, String queryString) { + String relativePath = getHrefPath(f); + pw.println("" + + linktext +""); if(EDIT_FILTER.accept(f)) { - pw.println("[edit]
"); } } + protected String getHrefPath(File f) { + String jobDirRelative = cj.jobDirRelativePath(f); + if(jobDirRelative!=null) { + return "jobdir/"+jobDirRelative; + } + // TODO: delegate this to EngineApplication, or make + // conditional on whether /anypath/ service is present? + String fullPath = f.getAbsolutePath(); + fullPath = fullPath.replace(File.separatorChar, '/'); + return "../../anypath/"+fullPath; + } + protected Engine getEngine() { return ((EngineApplication)getApplication()).getEngine(); }