[jboss-svn-commits] JBL Code SVN: r18327 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 5 15:57:47 EST 2008
Author: ge0ffrey
Date: 2008-02-05 15:57:46 -0500 (Tue, 05 Feb 2008)
New Revision: 18327
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java
labs/jbossrules/trunk/drools-solver/src/main/assembly/emptydir/
labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java
labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml
labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh
Log:
ExaminationShellApp
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java 2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/XmlSolverConfigurer.java 2008-02-05 20:57:46 UTC (rev 18327)
@@ -40,6 +40,10 @@
Annotations.configureAliases(xStream, aliasClass);
}
+ public LocalSearchSolverConfig getConfig() {
+ return config;
+ }
+
// ************************************************************************
// Worker methods
// ************************************************************************
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java (from rev 18175, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationApp.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationShellApp.java 2008-02-05 20:57:46 UTC (rev 18327)
@@ -0,0 +1,110 @@
+package org.drools.solver.examples.itc2007.examination.app;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.solver.config.XmlSolverConfigurer;
+import org.drools.solver.core.Solver;
+import org.drools.solver.examples.common.app.LoggingMain;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.persistence.ExaminationInputConvertor;
+import org.drools.solver.examples.itc2007.examination.persistence.ExaminationOutputConvertor;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class ExaminationShellApp extends LoggingMain {
+
+ public static final String SOLVER_CONFIG
+ = "/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml";
+
+ public static void main(String[] args) {
+ if (args.length != 1) {
+ System.out.println("Use exactly 1 program argument (maximumSecondsSpend). Exiting...");
+ System.exit(1);
+ }
+ long maximumSecondsSpend;
+ try {
+ maximumSecondsSpend = Long.parseLong(args[0]);
+ } catch (NumberFormatException e) {
+ System.out.println("The program argument maximumSecondsSpend (" + args[0] + ") is not a number."
+ + " Exiting...");
+ System.exit(1);
+ maximumSecondsSpend = 0L; // unreachable statement
+ }
+ new ExaminationShellApp(maximumSecondsSpend).processs();
+ }
+
+ private ExaminationInputConvertor examinationInputConvertor = new ExaminationInputConvertor();
+ private ExaminationOutputConvertor examinationOutputConvertor = new ExaminationOutputConvertor();
+
+ private Solver solver;
+ private File inputDir;
+ private File outputDir;
+
+ private ExaminationShellApp(long maximumSecondsSpend) {
+ configureSolver(maximumSecondsSpend);
+ configureDataDir();
+ }
+
+ private void configureSolver(long maximumSecondsSpend) {
+ XmlSolverConfigurer configurer = new XmlSolverConfigurer();
+ configurer.configure(SOLVER_CONFIG);
+ configurer.getConfig().getFinishConfig().setMaximumSecondsSpend(maximumSecondsSpend);
+ solver = configurer.buildSolver();
+ }
+
+ private void configureDataDir() {
+ File dataDir = new File("data/itc2007/examination/");
+ inputDir = new File(dataDir, "input");
+ if (!inputDir.exists()) {
+ throw new IllegalStateException("The directory inputDir (" + inputDir.getAbsolutePath()
+ + ") does not exist. The working directory should be set to the script directory"
+ + " or to drools-solver-examples.");
+ }
+ outputDir = new File(dataDir, "output");
+ if (!outputDir.exists()) {
+ throw new IllegalStateException("The directory outputDir (" + outputDir.getAbsolutePath()
+ + ") does not exist. The working directory should be set to the script directory"
+ + " or to drools-solver-examples.");
+ }
+ }
+
+ private void processs() {
+ List<File> inputFileList = getInputFileList();
+ for (File inputFile : inputFileList) {
+ Examination examination = examinationInputConvertor.readExamination(inputFile);
+ solver.setStartingSolution(examination);
+ solver.solve();
+ examination = (Examination) solver.getBestSolution();
+ File outputFile = getOutputFile(inputFile);
+ examinationOutputConvertor.writeExamination(examination, outputFile);
+ }
+ }
+
+ public List<File> getInputFileList() {
+ List<File> inputFileList = Arrays.asList(inputDir.listFiles(new ExamInputFileFilter()));
+ Collections.sort(inputFileList);
+ return inputFileList;
+ }
+
+ private File getOutputFile(File inputFile) {
+ String outputFileName = inputFile.getName().replaceAll("\\.exam$", ".sln");
+ return new File(outputDir, outputFileName);
+ }
+
+ public class ExamInputFileFilter implements FileFilter {
+
+ public boolean accept(File file) {
+ if (file.isDirectory() || file.isHidden()) {
+ return false;
+ }
+ return file.getName().endsWith(".exam");
+ }
+
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java 2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java 2008-02-05 20:57:46 UTC (rev 18327)
@@ -78,7 +78,7 @@
}
}
- private Examination readExamination(BufferedReader bufferedReader) throws IOException {
+ public Examination readExamination(BufferedReader bufferedReader) throws IOException {
Examination examination = new Examination();
examination.setId(0L);
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java 2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationOutputConvertor.java 2008-02-05 20:57:46 UTC (rev 18327)
@@ -47,7 +47,7 @@
}
}
- private void writeExamination(Examination examination, File outputFile) {
+ public void writeExamination(Examination examination, File outputFile) {
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter(outputFile));
@@ -59,7 +59,7 @@
}
}
- private void writeExamination(Examination examination, BufferedWriter bufferedWriter) throws IOException {
+ public void writeExamination(Examination examination, BufferedWriter bufferedWriter) throws IOException {
Collections.sort(examination.getExamList(), new PersistableIdComparator()); // TODO remove me when obsolete
for (Exam exam : examination.getExamList()) {
bufferedWriter.write(exam.getPeriod().getId() + ", " + exam.getRoom().getId() + "\r\n");
Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml 2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/itc2007Examination.xml 2008-02-05 20:57:46 UTC (rev 18327)
@@ -21,6 +21,14 @@
<directory>src/main/assembly/scripts</directory>
<outputDirectory/>
</fileSet>
+ <fileSet>
+ <directory>src/main/assembly/emptydir</directory>
+ <outputDirectory>data/itc2007/examination/output</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>src/main/assembly/emptydir</directory>
+ <outputDirectory>data/itc2007/examination/solved</outputDirectory>
+ </fileSet>
</fileSets>
<moduleSets>
Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh 2008-02-05 20:09:41 UTC (rev 18326)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/runExamination.sh 2008-02-05 20:57:46 UTC (rev 18327)
@@ -1,7 +1,7 @@
#!/bin/sh
mainJar=lib/drools-solver-examples-4.1.0.SNAPSHOT.jar
-mainClass=org.drools.solver.examples.itc2007.examination.app.ExaminationCmdApp
+mainClass=org.drools.solver.examples.itc2007.examination.app.ExaminationShellApp
echo "Usage: ./runExamination.sh [maximumSecondsSpendPerSolution]"
echo "For example: ./runExamination.sh 429"
Added: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.odt
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-solver/src/main/assembly/scripts/usageExamination.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the jboss-svn-commits
mailing list