aboutsummaryrefslogtreecommitdiffstats
path: root/examples/hyphenation
diff options
context:
space:
mode:
Diffstat (limited to 'examples/hyphenation')
-rw-r--r--examples/hyphenation/README5
-rw-r--r--examples/hyphenation/src/org/apache/fop/hyphenation/HyphenationTreeAnalysis.java248
2 files changed, 138 insertions, 115 deletions
diff --git a/examples/hyphenation/README b/examples/hyphenation/README
index 1b34a9e64..0723b3b76 100644
--- a/examples/hyphenation/README
+++ b/examples/hyphenation/README
@@ -6,4 +6,7 @@ representation.
Building: ant compile
-Running: \ No newline at end of file
+Running: ./analyse or analyse.cmd
+
+You can specify an object file in a jar file as follows:
+/path/to/fop-hyph.jar:hyph/xx.hyp.
diff --git a/examples/hyphenation/src/org/apache/fop/hyphenation/HyphenationTreeAnalysis.java b/examples/hyphenation/src/org/apache/fop/hyphenation/HyphenationTreeAnalysis.java
index 1349c5bf4..25070ca8b 100644
--- a/examples/hyphenation/src/org/apache/fop/hyphenation/HyphenationTreeAnalysis.java
+++ b/examples/hyphenation/src/org/apache/fop/hyphenation/HyphenationTreeAnalysis.java
@@ -23,10 +23,13 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipEntry;
/**
* This class provides some useful methods to print the structure of a HyphenationTree object
@@ -279,134 +282,151 @@ public class HyphenationTreeAnalysis extends TernaryTreeAnalysis {
* Provide interactive access to a HyphenationTree object and its representation methods
* @param args the arguments
*/
- public static void main(String[] args) throws Exception {
+ public static void main(String[] args) {
HyphenationTree ht = null;
HyphenationTreeAnalysis hta = null;
int minCharCount = 2;
BufferedReader in = new BufferedReader(new java.io.InputStreamReader(System.in));
while (true) {
System.out.print("l:\tload patterns from XML\n"
- + "L:\tload patterns from serialized object\n"
- + "s:\tset minimun character count\n"
- + "w:\twrite hyphenation tree to object file\n"
- + "p:\tprint hyphenation tree to stdout\n"
- + "n:\tprint hyphenation tree nodes to stdout\n"
- + "c:\tprint compact hyphenation tree nodes to stdout\n"
- + "t:\tprint tree representation of hyphenation tree to stdout\n"
- + "h:\thyphenate\n"
- + "f:\tfind pattern\n"
- + "b:\tbenchmark\n"
- + "q:\tquit\n\n"
- + "Command:");
- String token = in.readLine().trim();
- if (token.equals("f")) {
- System.out.print("Pattern: ");
- token = in.readLine().trim();
- System.out.println("Values: " + ht.findPattern(token));
- } else if (token.equals("s")) {
- System.out.print("Minimum value: ");
- token = in.readLine().trim();
- minCharCount = Integer.parseInt(token);
- } else if (token.equals("l")) {
- ht = new HyphenationTree();
- hta = new HyphenationTreeAnalysis(ht);
- System.out.print("XML file name: ");
- token = in.readLine().trim();
- ht.loadPatterns(token);
- } else if (token.equals("L")) {
- ObjectInputStream ois = null;
- System.out.print("Object file name: ");
- token = in.readLine().trim();
- try {
- ois = new ObjectInputStream(new FileInputStream(token));
- ht = (HyphenationTree) ois.readObject();
+ + "L:\tload patterns from serialized object\n"
+ + "s:\tset minimun character count\n"
+ + "w:\twrite hyphenation tree to object file\n"
+ + "p:\tprint hyphenation tree to stdout\n"
+ + "n:\tprint hyphenation tree nodes to stdout\n"
+ + "c:\tprint compact hyphenation tree nodes to stdout\n"
+ + "t:\tprint tree representation of hyphenation tree to stdout\n"
+ + "h:\thyphenate\n"
+ + "f:\tfind pattern\n"
+ + "b:\tbenchmark\n"
+ + "q:\tquit\n\n"
+ + "Command:");
+ try {
+ String token = in.readLine().trim();
+ if (token.equals("f")) {
+ System.out.print("Pattern: ");
+ token = in.readLine().trim();
+ System.out.println("Values: " + ht.findPattern(token));
+ } else if (token.equals("s")) {
+ System.out.print("Minimum value: ");
+ token = in.readLine().trim();
+ minCharCount = Integer.parseInt(token);
+ } else if (token.equals("l")) {
+ ht = new HyphenationTree();
hta = new HyphenationTreeAnalysis(ht);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (ois != null) {
- try {
- ois.close();
- } catch (IOException e) {
- //ignore
- }
+ System.out.print("XML file name: ");
+ token = in.readLine().trim();
+ try {
+ ht.loadPatterns(token);
+ } catch (HyphenationException e) {
+ e.printStackTrace();
}
- }
- } else if (token.equals("w")) {
- System.out.print("Object file name: ");
- token = in.readLine().trim();
- ObjectOutputStream oos = null;
- try {
- oos = new ObjectOutputStream(new FileOutputStream(token));
- oos.writeObject(ht);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (oos != null) {
- try {
- oos.flush();
- } catch (IOException e) {
- //ignore
+ } else if (token.equals("L")) {
+ ObjectInputStream ois = null;
+ System.out.print("Object file name: ");
+ token = in.readLine().trim();
+ try {
+ String[] parts = token.split(":");
+ InputStream is = null;
+ if (parts.length == 1) {
+ is = new FileInputStream(token);
+ } else if (parts.length == 2) {
+ ZipFile jar = new ZipFile(parts[0]);
+ ZipEntry entry = new ZipEntry(jar.getEntry(parts[1]));
+ is = jar.getInputStream(entry);
}
- try {
- oos.close();
- } catch (IOException e) {
- //ignore
+ ois = new ObjectInputStream(is);
+ ht = (HyphenationTree) ois.readObject();
+ hta = new HyphenationTreeAnalysis(ht);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (ois != null) {
+ try {
+ ois.close();
+ } catch (IOException e) {
+ //ignore
+ }
}
}
- }
- } else if (token.equals("p")) {
- System.out.print(hta);
- } else if (token.equals("n")) {
- System.out.print(hta.toNodes());
- } else if (token.equals("c")) {
- System.out.print(hta.toCompactNodes());
- } else if (token.equals("t")) {
- System.out.print(hta.toTree());
- } else if (token.equals("h")) {
- System.out.print("Word: ");
- token = in.readLine().trim();
- System.out.print("Hyphenation points: ");
- System.out.println(ht.hyphenate(token, minCharCount,
- minCharCount));
- } else if (token.equals("b")) {
- if (ht == null) {
- System.out.println("No patterns have been loaded.");
- break;
- }
- System.out.print("Word list filename: ");
- token = in.readLine().trim();
- long starttime = 0;
- int counter = 0;
- try {
- BufferedReader reader = new BufferedReader(new FileReader(token));
- String line;
-
- starttime = System.currentTimeMillis();
- while ((line = reader.readLine()) != null) {
- // System.out.print("\nline: ");
- Hyphenation hyp = ht.hyphenate(line, minCharCount,
- minCharCount);
- if (hyp != null) {
- String hword = hyp.toString();
- // System.out.println(line);
- // System.out.println(hword);
- } else {
- // System.out.println("No hyphenation");
+ } else if (token.equals("w")) {
+ System.out.print("Object file name: ");
+ token = in.readLine().trim();
+ ObjectOutputStream oos = null;
+ try {
+ oos = new ObjectOutputStream(new FileOutputStream(token));
+ oos.writeObject(ht);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (oos != null) {
+ try {
+ oos.flush();
+ } catch (IOException e) {
+ //ignore
+ }
+ try {
+ oos.close();
+ } catch (IOException e) {
+ //ignore
+ }
}
- counter++;
}
- } catch (Exception ioe) {
- System.out.println("Exception " + ioe);
- ioe.printStackTrace();
+ } else if (token.equals("p")) {
+ System.out.print(hta);
+ } else if (token.equals("n")) {
+ System.out.print(hta.toNodes());
+ } else if (token.equals("c")) {
+ System.out.print(hta.toCompactNodes());
+ } else if (token.equals("t")) {
+ System.out.print(hta.toTree());
+ } else if (token.equals("h")) {
+ System.out.print("Word: ");
+ token = in.readLine().trim();
+ System.out.print("Hyphenation points: ");
+ System.out.println(ht.hyphenate(token, minCharCount,
+ minCharCount));
+ } else if (token.equals("b")) {
+ if (ht == null) {
+ System.out.println("No patterns have been loaded.");
+ break;
+ }
+ System.out.print("Word list filename: ");
+ token = in.readLine().trim();
+ long starttime = 0;
+ int counter = 0;
+ try {
+ BufferedReader reader = new BufferedReader(new FileReader(token));
+ String line;
+
+ starttime = System.currentTimeMillis();
+ while ((line = reader.readLine()) != null) {
+ // System.out.print("\nline: ");
+ Hyphenation hyp = ht.hyphenate(line, minCharCount,
+ minCharCount);
+ if (hyp != null) {
+ String hword = hyp.toString();
+ // System.out.println(line);
+ // System.out.println(hword);
+ } else {
+ // System.out.println("No hyphenation");
+ }
+ counter++;
+ }
+ } catch (Exception ioe) {
+ System.out.println("Exception " + ioe);
+ ioe.printStackTrace();
+ }
+ long endtime = System.currentTimeMillis();
+ long result = endtime - starttime;
+ System.out.println(counter + " words in " + result
+ + " Milliseconds hyphenated");
+
+ } else if (token.equals("q")) {
+ break;
}
- long endtime = System.currentTimeMillis();
- long result = endtime - starttime;
- System.out.println(counter + " words in " + result
- + " Milliseconds hyphenated");
-
- } else if (token.equals("q")) {
- break;
+ } catch (IOException e) {
+ e.printStackTrace();
}
}