1
15
16 package gate.lexicon;
17
18 import java.io.Serializable;
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import gate.util.Out;
23
24 public class MutableWordImpl implements MutableWord, Serializable {
25 private String lemma = "";
26 private List senseList = new ArrayList();
27 static final long serialVersionUID = -2448794632943663270L;
28
29
30 public MutableWordImpl(String newLemma) {
31 this.lemma = newLemma;
32 }
33
34 public LexKBWordSense addSense(MutableLexKBSynset wordSynset) {
35 return addSense(senseList.size(), wordSynset);
36 }
37
38 public LexKBWordSense addSense(int index, MutableLexKBSynset wordSynset) {
39 MutableLexKBSynset newSynset = wordSynset;
40 if (newSynset == null)
41 throw new RuntimeException("A valid synset must be provided!");
42 MutableLexKBWordSense newSense = new MutableLexKBWordSenseImpl(
43 this, newSynset, index, newSynset.getWordSenses().size());
44 senseList.add(index, newSense);
45 newSynset.addWordSense(newSense);
46 return newSense;
47 }
48
49 public List getWordSenses() {
50 return senseList;
51 }
52
53 public String getLemma() {
54 return lemma;
55 }
56
57 public int getSenseCount() {
58 return senseList.size();
59 }
60
61 public void removeSenses() {
62 for (int i= senseList.size()-1; i >=0; i--) {
65 LexKBWordSense theSense = (LexKBWordSense) senseList.get(i);
66 removeSense(theSense);
67 }
68 }
69
70 public void removeSense(LexKBWordSense theSense) {
71 if (! (theSense instanceof MutableLexKBWordSense)) {
72 Out.prln("Could not remove sense: " + theSense
73 + "because it is not mutable");
74 return;
75 }
76 LexKBSynset theSynset = ((MutableLexKBWordSense)theSense).getSynset();
77 if (! (theSynset instanceof MutableLexKBSynset)) {
78 Out.prln("Could not remove sense: " + theSense
79 + "because it is not mutable");
80 return;
81 }
82 ((MutableLexKBSynset)theSynset).removeSense(theSense);
83
84 for (int i=theSense.getSenseNumber() + 1; i < senseList.size(); i++) {
85 LexKBWordSense nextSense = (LexKBWordSense) senseList.get(i);
86 if (! (nextSense instanceof MutableLexKBWordSense))
87 continue;
88 ((MutableLexKBWordSense)nextSense).setSenseNumber(
90 nextSense.getSenseNumber()-1);
91 }
92 senseList.remove(theSense);
93 }
94 }
95