17
17
import java .util .Set ;
18
18
import java .util .TreeSet ;
19
19
20
+ import org .mercurydb .queryutils .FieldExtractable ;
21
+
20
22
import com .github .mustachejava .DefaultMustacheFactory ;
21
23
import com .github .mustachejava .Mustache ;
22
24
import com .github .mustachejava .MustacheFactory ;
@@ -41,6 +43,8 @@ public class ClassToTableExtractor {
41
43
42
44
public int joinId ;
43
45
46
+ public List <TemplateCounter > templateCounters ;
47
+
44
48
public ClassToTableExtractor (
45
49
Class <?> c , String superTable , Collection <String > subClassTables , String tableSuffix , int joinId )
46
50
throws IOException {
@@ -56,10 +60,12 @@ public ClassToTableExtractor(
56
60
this .subClasses = subClassTables ;
57
61
populateFieldsList ();
58
62
populateQueriesList (queries , fields );
63
+ templateCounters = new ArrayList <>(fields .size ());
64
+ for (int i = 1 ; i <= fields .size (); ++i ) {
65
+ templateCounters .add (new TemplateCounter (i ));
66
+ }
59
67
}
60
68
61
-
62
-
63
69
private void populateFieldsList () {
64
70
for (Field f : c .getFields ()) {
65
71
// Ignore fields belonging to superclasses
@@ -155,6 +161,38 @@ public int compareTo(FieldData o) {
155
161
}
156
162
}
157
163
164
+ @ SuppressWarnings ("unused" )
165
+ private class TemplateCounter {
166
+ public List <Integer > counter ;
167
+
168
+ public TemplateCounter (int size ) {
169
+ counter = new ArrayList <Integer >(size );
170
+ for (int i = 1 ; i <= size ; ++i ) {
171
+ counter .add (i );
172
+ }
173
+ }
174
+
175
+ public String template () {
176
+ StringBuilder sb = new StringBuilder ();
177
+ sb .append ("<" );
178
+ for (Integer i : counter ) {
179
+ sb .append ("F" +i +"," );
180
+ }
181
+ sb .setCharAt (sb .length ()-1 , '>' );
182
+ return sb .toString ();
183
+ }
184
+
185
+ public String prototype () {
186
+ StringBuilder sb = new StringBuilder ();
187
+ for (Integer i : counter ) {
188
+ sb .append (FieldExtractable .class .getSimpleName ());
189
+ sb .append ("<" +sourceClass ()+", F" +i +"> fe" +i +", F" +i +" val" +i +"," );
190
+ }
191
+ sb .setLength (sb .length ()-1 );
192
+ return sb .toString ();
193
+ }
194
+ }
195
+
158
196
public String fullSourceClass () {
159
197
return c .getName ();
160
198
}
0 commit comments