1
2 package org.tartarus.snowball;
3
4 import java.lang.reflect.Method;
5 import java.io.Reader;
6 import java.io.Writer;
7 import java.io.BufferedReader;
8 import java.io.BufferedWriter;
9 import java.io.FileInputStream;
10 import java.io.InputStreamReader;
11 import java.io.OutputStreamWriter;
12 import java.io.OutputStream;
13 import java.io.FileOutputStream;
14
15 public class TestApp {
16 private static void usage()
17 {
18 System.err.println("Usage: TestApp <algorithm> <input file> [-o <output file>]");
19 }
20
21 public static void main(String [] args) throws Throwable {
22 if (args.length < 2) {
23 usage();
24 return;
25 }
26
27 Class stemClass = Class.forName("org.tartarus.snowball.ext." +
28 args[0] + "Stemmer");
29 SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance();
30
31 Reader reader;
32 reader = new InputStreamReader(new FileInputStream(args[1]));
33 reader = new BufferedReader(reader);
34
35 StringBuffer input = new StringBuffer();
36
37 OutputStream outstream;
38
39 if (args.length > 2) {
40 if (args.length >= 4 && args[2].equals("-o")) {
41 outstream = new FileOutputStream(args[3]);
42 } else {
43 usage();
44 return;
45 }
46 } else {
47 outstream = System.out;
48 }
49 Writer output = new OutputStreamWriter(outstream);
50 output = new BufferedWriter(output);
51
52 int repeat = 1;
53 if (args.length > 4) {
54 repeat = Integer.parseInt(args[4]);
55 }
56
57 Object [] emptyArgs = new Object[0];
58 int character;
59 while ((character = reader.read()) != -1) {
60 char ch = (char) character;
61 if (Character.isWhitespace((char) ch)) {
62 if (input.length() > 0) {
63 stemmer.setCurrent(input.toString());
64 for (int i = repeat; i != 0; i--) {
65 stemmer.stem();
66 }
67 output.write(stemmer.getCurrent());
68 output.write('\n');
69 input.delete(0, input.length());
70 }
71 } else {
72 input.append(Character.toLowerCase(ch));
73 }
74 }
75 output.flush();
76 }
77 }