1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.sat4j.csp;
20
21 import org.sat4j.AbstractLauncher;
22 import org.sat4j.reader.CSPExtSupportReader;
23 import org.sat4j.reader.Reader;
24 import org.sat4j.reader.XMLCSPReader;
25 import org.sat4j.specs.ISolver;
26
27 public class CSPLauncher extends AbstractLauncher {
28
29
30
31
32 private static final long serialVersionUID = 1L;
33
34
35
36
37
38
39 @Override
40 protected ISolver configureSolver(String[] args) {
41 ISolver asolver;
42 if (args.length == 2) {
43 asolver = SolverFactory.instance().createSolverByName(args[0]);
44 } else {
45 asolver = SolverFactory.newDefault();
46 }
47 log(asolver.toString(COMMENT_PREFIX));
48 return asolver;
49 }
50
51
52
53
54
55
56
57
58 @Override
59 protected Reader createReader(final ISolver aSolver,
60 final String problemname) {
61 Reader aReader;
62 boolean allDiffCards = System.getProperty("allDiffCards") != null;
63 if (problemname.endsWith(".txt")) {
64 aReader = new CSPExtSupportReader(aSolver, allDiffCards);
65 } else {
66 assert problemname.endsWith(".xml");
67 aReader = new XMLCSPReader(aSolver, allDiffCards);
68 }
69 if (System.getProperty("verbose") != null) {
70 log("verbose mode on");
71 aReader.setVerbosity(true);
72 aSolver.setVerbose(true);
73 } else {
74 aSolver.setVerbose(false);
75 }
76 return aReader;
77 }
78
79 public static void main(String[] args) {
80 AbstractLauncher lanceur = new CSPLauncher();
81 if (args.length > 2 || args.length == 0) {
82 lanceur.usage();
83 return;
84 }
85 try {
86 lanceur.run(args);
87 } catch (IllegalArgumentException e) {
88 lanceur.log(">>>> " + e.getMessage() + " <<<<");
89 }
90 }
91
92 @Override
93 public void displayLicense() {
94 super.displayLicense();
95 log("That software uses the Rhino library from the Mozilla project.");
96 }
97
98 @Override
99 public void usage() {
100 System.out.println("Please provide a CSP instance file!");
101 }
102
103 @Override
104 protected String getInstanceName(String[] args) {
105 if (args.length == 1)
106 return args[0];
107 return args[1];
108 }
109 }