1212
1313import com .essi .Dependency .Repository .GrammarRepository ;
1414import org .springframework .beans .factory .annotation .Autowired ;
15+ import org .springframework .beans .factory .annotation .Value ;
1516import org .springframework .stereotype .Repository ;
1617
1718import com .essi .Dependency .Components .Bug ;
2021import com .essi .Dependency .Components .DependencyType ;
2122import com .essi .Dependency .Components .ExternalDependency ;
2223import com .essi .Dependency .Components .Status ;
24+ import org .springframework .stereotype .Service ;
2325
24- @ Repository
2526public class Grammar {
2627
27- @ Autowired
28- private GrammarRepository grammarRepository ;
29-
3028 // Gazetters
3129 private String linkTerm ;
3230 private String implicitTerm ;
@@ -57,63 +55,23 @@ public class Grammar {
5755 /**
5856 * Constructor
5957 */
60- public Grammar () {
58+ public Grammar (com . essi . Dependency . Components . Grammar grammar ) {
6159 super ();
6260 // Gazetteers
6361 this .linkTerm = "((\\ s)?of(\\ s)?|(\\ s)?of the(\\ s)?|(\\ s)?of a(\\ s)?)" ;
6462
6563 this .implicitTerm = "((\\ s)?above(\\ s)?|(\\ s)?below(\\ s)?|(\\ s)?preceding(\\ s)?|(\\ s)?following(\\ s)?|(\\ s)?that follows(\\ s)?|"
6664 + "(\\ s)?next(\\ s)?|(\\ s)?previous(\\ s)?|(\\ s)?this(\\ s)?|(\\ s)?same(\\ s)?|(\\ s)?current(\\ s)?)" ;
67- this .markerTerm = "((\\ s+|\\ (|\\ |)(section(s)?(\\ s)?|sect\\ .(\\ s)?|subsection(s)?(\\ s)?|subsect\\ .(\\ s)?|paragraph(s)?(\\ s)?|"
68- + "subparagraph(s)?(\\ s)?|subitem(s)?(\\ s)?|volume(s)?(\\ s)?|lot('s)?(\\ s)?|book(s)?(\\ s)?"
69- + "|article(s)?(\\ s)?|item(s)?(\\ s)?|point(s)?(\\ s)?" +
70- "|" +
71- "(\\ s)?qt(-)?bug(s(:?))?(-)?" +
72- "|" +
73- "(\\ s)?qt(-)?3ds(s(:?))?(-)?" +
74- "|" +
75- "(\\ s)?qt(-)?jira(s(:?))?(-)?" +
76- "|" +
77- "(\\ s)?qt(-)?creatorbug(s(:?))?(-)?" +
78- "|" +
79- "(\\ s)?qt(-)?ifw(s(:?))?(-)?" +
80- "|" +
81- "(\\ s)?qt(-)?mobility(s(:?))?(-)?" +
82- "|" +
83- "(\\ s)?qt(-)?playground(s(:?))?(-)?" +
84- "|" +
85- "(\\ s)?qt(-)?website(s(:?))?(-)?" +
86- "|" +
87- "(\\ s)?qt(-)?qainfra(s(:?))?(-)?" +
88- "|" +
89- "(\\ s)?qt(-)?components(s(:?))?(-)?" +
90- "|" +
91- "(\\ s)?qt(-)?solbug(s(:?))?(-)?" +
92- "|" +
93- "(\\ s)?qt(-)?vsaddinbug(s(:?))?(-)?" +
94- "|" +
95- "(\\ s)?qt(-)?wb(s(:?))?(-)?" +
96- "|" +
97- "(\\ s)?qt(-)?sysadm(s(:?))?(-)?" +
98- "|" +
99- "[?]id(=)?" +
100- "|" +
101- "(\\ s)?bug(s(:?))?(\\ s)?(#)?" +
102- "|" +
103- "(\\ s)?qbs(s(:?))?(\\ s)?(#)?" +
104- "|" +
105- "(\\ s)?autosuite(s(:?))?(\\ s)?(#)?" +
106- "|" +
107- "(\\ s)?qds(s(:?))?(\\ s)?(#)?" +
108- "|" +
109- "(\\ s)?pyside(s(:?))?(\\ s)?(#)?" +
110- "|" +
111- "(\\ s)?qsr(s(:?))?(\\ s)?(#)?" +
112- "))" ;
65+
11366 this .sepTerm = "(,(\\ s)?|(\\ s)?-(\\ s)?|(\\ s)?and(\\ s)?|(\\ s)?or(\\ s)?|(\\ s)?to(\\ s)?|(\\ s)?in(\\ s)?)" ;
11467 this .externalTerm = "((\\ s)?contract(\\ s)?|(\\ s)?tender documentation(\\ s)?|(\\ s)?technical specifications(\\ s)?"
11568 + "|(\\ s)?contractor proposal(\\ s)?|(\\ s)?tendering documentation(\\ s)?)" ;
11669
70+ if (grammar == null )
71+ loadDefaultGrammar ();
72+ else
73+ loadCustomGrammar (grammar );
74+
11775 // Expressions
11876
11977 this .numExp = "(([\\ (]?((\\ d)+|[a-zA-Z])[(\\ .(\\ d)+(\\ .)?)]*[\\ )]?)(?![a-zA-Z]).?|(\\ (?(ix|iv|v?i{1,3}|x?i{1,3})\\ )?)(?![a-zA-Z]).?)" ;
@@ -145,8 +103,25 @@ public Grammar() {
145103
146104 this .grammar = "(" + externalExp + "|" + complexExp + "|" + simpleExp + ")" ;
147105
106+ }
107+
108+ private void loadCustomGrammar (com .essi .Dependency .Components .Grammar grammar ) {
109+ this .bugPrefixs = new String [grammar .getPrefixes ().size ()];
110+ this .bugPrefixs = grammar .getPrefixes ().toArray (this .bugPrefixs );
111+ this .markerTerm = "((\\ s+|\\ (|\\ |)(section(s)?(\\ s)?|sect\\ .(\\ s)?|subsection(s)?(\\ s)?|subsect\\ .(\\ s)?|paragraph(s)?(\\ s)?|"
112+ + "subparagraph(s)?(\\ s)?|subitem(s)?(\\ s)?|volume(s)?(\\ s)?|lot('s)?(\\ s)?|book(s)?(\\ s)?"
113+ + "|article(s)?(\\ s)?|item(s)?(\\ s)?|point(s)?(\\ s)?" ;
114+
115+ for (String prefix : grammar .getPrefixes ()) {
116+ this .markerTerm += "|" + "(\\ s)?" + prefix + "(s(:?))?(-)?" ;
117+ }
118+ this .markerTerm += "))" ;
119+
120+ }
121+
122+ private void loadDefaultGrammar () {
148123 this .bugPrefixs = new String []{
149- "QBS" ,
124+ "QBS" ,
150125 "QTBUG" ,
151126 "QT3DS" ,
152127 "AUTOSUITE" ,
@@ -164,7 +139,55 @@ public Grammar() {
164139 "QTSOLBUG" ,
165140 "QTVSADDINBUG" ,
166141 "QTWB" ,
167- "QTSYSADM" };
142+ "QTSYSADM"
143+ };
144+
145+ this .markerTerm = "((\\ s+|\\ (|\\ |)(section(s)?(\\ s)?|sect\\ .(\\ s)?|subsection(s)?(\\ s)?|subsect\\ .(\\ s)?|paragraph(s)?(\\ s)?|"
146+ + "subparagraph(s)?(\\ s)?|subitem(s)?(\\ s)?|volume(s)?(\\ s)?|lot('s)?(\\ s)?|book(s)?(\\ s)?"
147+ + "|article(s)?(\\ s)?|item(s)?(\\ s)?|point(s)?(\\ s)?" +
148+ "|" +
149+ "(\\ s)?qt(-)?bug(s(:?))?(-)?" +
150+ "|" +
151+ "(\\ s)?qt(-)?3ds(s(:?))?(-)?" +
152+ "|" +
153+ "(\\ s)?qt(-)?jira(s(:?))?(-)?" +
154+ "|" +
155+ "(\\ s)?qt(-)?creatorbug(s(:?))?(-)?" +
156+ "|" +
157+ "(\\ s)?qt(-)?ifw(s(:?))?(-)?" +
158+ "|" +
159+ "(\\ s)?qt(-)?mobility(s(:?))?(-)?" +
160+ "|" +
161+ "(\\ s)?qt(-)?playground(s(:?))?(-)?" +
162+ "|" +
163+ "(\\ s)?qt(-)?website(s(:?))?(-)?" +
164+ "|" +
165+ "(\\ s)?qt(-)?qainfra(s(:?))?(-)?" +
166+ "|" +
167+ "(\\ s)?qt(-)?components(s(:?))?(-)?" +
168+ "|" +
169+ "(\\ s)?qt(-)?solbug(s(:?))?(-)?" +
170+ "|" +
171+ "(\\ s)?qt(-)?vsaddinbug(s(:?))?(-)?" +
172+ "|" +
173+ "(\\ s)?qt(-)?wb(s(:?))?(-)?" +
174+ "|" +
175+ "(\\ s)?qt(-)?sysadm(s(:?))?(-)?" +
176+ "|" +
177+ "[?]id(=)?" +
178+ "|" +
179+ "(\\ s)?bug(s(:?))?(\\ s)?(#)?" +
180+ "|" +
181+ "(\\ s)?qbs(s(:?))?(\\ s)?(#)?" +
182+ "|" +
183+ "(\\ s)?autosuite(s(:?))?(\\ s)?(#)?" +
184+ "|" +
185+ "(\\ s)?qds(s(:?))?(\\ s)?(#)?" +
186+ "|" +
187+ "(\\ s)?pyside(s(:?))?(\\ s)?(#)?" +
188+ "|" +
189+ "(\\ s)?qsr(s(:?))?(\\ s)?(#)?" +
190+ "))" ;
168191 }
169192
170193 /**
@@ -177,7 +200,7 @@ public Grammar() {
177200 * @return ArrayList
178201 * @throws InterruptedException
179202 */
180- public ArrayList <Object > applyGrammar (ArrayList <Object > expressionList , ArrayList <Object > expressionDB )
203+ public ArrayList <Object > applyGrammar (com . essi . Dependency . Components . Grammar grammarObj , ArrayList <Object > expressionList , ArrayList <Object > expressionDB )
181204 throws InterruptedException {
182205
183206 ArrayList <Object > dependencies = new ArrayList <>();
@@ -186,7 +209,7 @@ public ArrayList<Object> applyGrammar(ArrayList<Object> expressionList, ArrayLis
186209 Pattern pattern = Pattern .compile ("(" + grammar + ")" );
187210 for (Object expression : expressionList ) {
188211
189- FutureTask task = new FutureTask (new CallableTask (expression , expressionDB , pattern , dep ));
212+ FutureTask task = new FutureTask (new CallableTask (grammarObj , expression , expressionDB , pattern , dep ));
190213 ExecutorService executor = Executors .newSingleThreadExecutor ();
191214 executor .submit (task );
192215
0 commit comments