MatchRule8.java
01 package gate.creole.orthomatcher;
02 
03 
04 /**
05  * RULE #7: if one of the tokens in one of the
06  * names is in the list of separators eg. "&"
07  * then check if the token before the separator
08  * matches the other name
09  * e.g. "R.H. Macy & Co." == "Macy"
10  * Condition(s): case-sensitive match
11  * Applied to: organisation annotations only
12  */
13 public class MatchRule8 implements OrthoMatcherRule {
14 
15   OrthoMatcher orthomatcher;
16   
17   public MatchRule8(OrthoMatcher orthmatcher){
18     this.orthomatcher=orthmatcher;
19   }
20   
21   @Override
22   public boolean value(String s1, String s2) {
23     
24       boolean result=false;
25      
26       //don't try it unless the second string is just one token
27       if (orthomatcher.tokensShortAnnot.size() != 1)
28         result = false;
29       else
30       {
31             String previous_token = null;
32       
33             for (int i = 0;  i < orthomatcher.tokensLongAnnot.size(); i++ ) {
34               if (orthomatcher.connector.containsKeyorthomatcher.tokensLongAnnot.get(i).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME) )) {
35                 previous_token = (Stringorthomatcher.tokensLongAnnot.get(i-1).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME);
36       
37                 break;
38               }
39             }
40       
41             //now match previous_token with other name
42             if (previous_token != null) {
43       //      if (s1.equalsIgnoreCase("chin") || s2.equalsIgnoreCase("chin"))
44       //      Out.prln("Rule7");
45               result = OrthoMatcherHelper.straightCompare(previous_token,s2,orthomatcher.caseSensitive);
46       
47             }
48       }
49       
50       if (resultOrthoMatcherHelper.usedRule(8);
51       return result;
52 
53   }
54   
55   @Override
56   public String getId(){
57     return "MatchRule8";
58   }
59 }