View Javadoc

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  }