1 package uk.ac.ebi.intenz.tools.sib.translator.rules;
2
3 import org.apache.log4j.Logger;
4 import uk.ac.ebi.xchars.SpecialCharacters;
5 import uk.ac.ebi.xchars.domain.EncodingType;
6
7
8
9
10
11
12
13
14
15
16
17 public class TagRules implements RuleGroup {
18
19 private static final Logger LOGGER = Logger.getLogger(TagRules.class);
20
21 private static TagRules INSTANCE;
22 SpecialCharacters encoding;
23
24 private final String[][] RULES =
25 {
26
27 {"\\<b\\>(.*?)\\<\\/b\\>","$1"},
28 {"\\<i\\>(.*?)\\<\\/i\\>","$1"},
29 {"\\<a\\s(.+?)\\>(.+?)\\<\\/a\\>","$2"},
30 {"\\<ring\\>p\\<\\/ring\\>","\\<ringsugar\\>p\\<\\/ringsugar\\>"},
31 {"\\<ring\\>f\\<\\/ring\\>","\\<ringsugar\\>f\\<\\/ringsugar\\>"},
32 };
33
34
35
36
37 private TagRules(SpecialCharacters encoding) {
38 this.encoding = encoding;
39 }
40
41
42
43
44
45
46
47
48
49 public static TagRules getInstance(SpecialCharacters encoding) {
50 if( INSTANCE == null){
51 synchronized (TagRules.class){
52 if(INSTANCE == null)
53 INSTANCE = new TagRules(encoding);
54 }
55 }
56 return INSTANCE;
57 }
58
59
60
61
62
63
64
65
66 public String applyRules(String text) {
67 if (text == null) throw new NullPointerException("Parameter 'text' must not be null.");
68 return translate(text, RULES);
69 }
70
71
72
73
74
75
76
77
78 public String reverseRules(String text) {
79
80 return applyRules(text);
81 }
82
83
84
85
86
87
88
89
90 private String translate(String text, String[][] rules) {
91
92 text = this.encoding.xml2Display(text, EncodingType.SWISSPROT_CODE);
93 for (int iii = 0; iii < rules.length; iii++) {
94 String[] rule = rules[iii];
95 text = text.replaceAll(rule[0], rule[1]);
96 }
97 return text;
98 }
99
100 }