MatchRule3.java
01 package gate.creole.orthomatcher;
02 
03 
04 /**
05  * RULE #3: adding a possessive at the end
06  * of one name causes a match
07  * e.g. "Standard and Poor" == "Standard and Poor's"
08  * and also "Standard and Poor" == "Standard's"
09  * Condition(s): case-insensitive match
10  * Applied to: all name annotations
11  */
12 public class MatchRule3 implements OrthoMatcherRule {
13 
14     OrthoMatcher orthomatcher;
15     
16     public MatchRule3(OrthoMatcher orthmatcher){
17       this.orthomatcher=orthmatcher;
18     }
19   
20   @Override
21   public boolean value(String s1,  String s2) { //short string
22 
23     boolean result=false;
24     
25     if (s2.endsWith("'s"|| s2.endsWith("'")
26               ||(s1.endsWith("'s")|| s1.endsWith("'"))) {
27 
28         String s2_poss = null;
29 
30         if (!s2.endsWith("'s")) s2_poss = s2.concat("'s");
31         else s2_poss = s2.concat("'");
32 
33         if (s2_poss != null && OrthoMatcherHelper.straightCompare(s1, s2_poss,orthomatcher.caseSensitive)) {
34           if (OrthoMatcher.log.isDebugEnabled()) {
35             OrthoMatcher.log.debug("rule 3 matched " + s1 + " to " + s2);
36           }
37           result = true;
38         }
39 
40         // now check the second case i.e. "Standard and Poor" == "Standard's"
41         String token = (String)
42         orthomatcher.tokensLongAnnot.get(0).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME);
43 
44         if (!token.endsWith("'s")) s2_poss = token.concat("'s");
45         else s2_poss = token.concat("'");
46 
47         if (s2_poss != null && OrthoMatcherHelper.straightCompare(s2_poss,s2,orthomatcher.caseSensitive)) {
48           if (OrthoMatcher.log.isDebugEnabled()){
49             OrthoMatcher.log.debug("rule 3 matched " + s1 + " to " + s2);
50           }
51           result = true;
52         }
53 
54       // if (s2.endsWith("'s")
55     
56       if (resultOrthoMatcherHelper.usedRule(3);
57       
58       return result;
59   }
60   
61   @Override
62   public String getId(){
63     return "MatchRule3";
64   }
65 }