View Javadoc

1   package net.sf.jhunlang.jmorph.analysis.consumer;
2   
3   import java.util.Collection;
4   
5   import net.sf.jhunlang.jmorph.DictEntry;
6   
7   public class BasicConsumer implements AnalysisConsumer
8   {
9     /***
10     * The parent consumer.
11     */
12    protected AnalysisConsumer parent;
13    /***
14     * The current stemming level
15     */
16    protected int level;
17    /***
18     * The configured depth of analysis
19     */
20    protected int depth;
21    
22    protected boolean frozen;
23  
24    protected Collection analyses;
25  
26    public void setDepth(int depth)
27    {
28      this.depth = depth;
29    }
30  
31    public void setLevel(int level)
32    {
33      if (!frozen)
34      {
35        this.level = level;
36      }
37    }
38  
39    public void freezeLevel(int level)
40    {
41      setLevel(level);
42      frozen = true;
43    }
44  
45    public void thawLevel()
46    {
47      frozen = false;
48    }
49    
50    public AnalysisConsumer setParentConsumer(AnalysisConsumer parent)
51    {
52      AnalysisConsumer old = this.parent;
53      this.parent = parent;
54      return old;
55    }
56  
57    public void setStems(Collection stems)
58    {
59      this.analyses = stems;
60    }
61  
62    public Collection getStems()
63    {
64      return analyses;
65    }
66  
67    public boolean done()
68    {
69      return parent == null ?
70        (depth <= level && analyses.size() > 0) : parent.done();
71    }
72  
73    /***
74     * Return if stemming should be continued.
75     */
76    public boolean continueStemming(String word, DictEntry entry)
77    {
78      return depth >= level;
79    }
80  
81    public boolean ignoreCase()
82    {
83      return false;
84    }
85    
86    public boolean hasSuffixFlag(int flag)
87    {
88      return false;
89    }
90  
91    public AnalysisConsumer getParent()
92    {
93      return parent;
94    }
95  }