diff --git a/engine/src/main/java/org/archive/crawler/framework/Engine.java b/engine/src/main/java/org/archive/crawler/framework/Engine.java index fee3ef86..7b68c9c0 100644 --- a/engine/src/main/java/org/archive/crawler/framework/Engine.java +++ b/engine/src/main/java/org/archive/crawler/framework/Engine.java @@ -23,12 +23,14 @@ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.filefilter.FileFilterUtils; import org.archive.util.ArchiveUtils; @@ -272,5 +274,26 @@ public class Engine { return false; } + public boolean createNewJobWithDefaults(String path) throws IOException { + + File newJobDir = new File(jobsDir,"/"+path); + if (newJobDir.exists()) { + throw new IOException("file exists: "+newJobDir); + } + newJobDir.mkdirs(); + + // get crawler-beans template from this package into string + InputStream inStream = getClass().getResourceAsStream( + "/org/archive/crawler/restlet/profile-crawler-beans.cxml"); + String defaultCxmlStr = IOUtils.toString(inStream); + inStream.close(); + + // write default crawler-beans string to new job config + File newJobCxml = new File(newJobDir,"crawler-beans.cxml"); + FileUtils.writeStringToFile(newJobCxml, defaultCxmlStr); + + return true; + } + } \ No newline at end of file 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 afa7ed4b..c87a9661 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/EngineResource.java @@ -85,6 +85,35 @@ public class EngineResource extends Resource { if(!added) { Flash.addFlash(getResponse(), "not a valid preexisting job directory: \""+path+"\"", Flash.Kind.NACK); } + } else if ("create".equals(action)) { + String errStyle = "style=\"margin:1em;padding:0.2em 1em;background:pink;\""; + String warnStyle = errStyle; + String msgStyle = "style=\"margin:1em;padding:0.2em 1em;background:khaki;\""; + String path = form.getFirstValue("addpath"); + if (path.indexOf("/") != -1) { + String warn = "
Successfully created job: " + + "" + path + "
\n"; + Flash.addFlash(getResponse(), msg, Flash.Kind.NACK); + getEngine().findJobConfigs(); + } + } } // default: redirect to GET self getResponse().redirectSeeOther(getRequest().getOriginalRef()); @@ -137,6 +166,14 @@ public class EngineResource extends Resource { "'rescan' button above. Or, supply a full path to another " + "valid job directory at the engine machine below.