View Javadoc
1   /*
2    *    Copyright 2006-2023 the original author or authors.
3    *
4    *    Licensed under the Apache License, Version 2.0 (the "License");
5    *    you may not use this file except in compliance with the License.
6    *    You may obtain a copy of the License at
7    *
8    *       https://www.apache.org/licenses/LICENSE-2.0
9    *
10   *    Unless required by applicable law or agreed to in writing, software
11   *    distributed under the License is distributed on an "AS IS" BASIS,
12   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *    See the License for the specific language governing permissions and
14   *    limitations under the License.
15   */
16  package org.mybatis.generator.api;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  import java.util.Properties;
21  import java.util.stream.Collectors;
22  
23  import org.mybatis.generator.api.dom.java.Field;
24  import org.mybatis.generator.api.dom.java.Interface;
25  import org.mybatis.generator.api.dom.java.Method;
26  import org.mybatis.generator.api.dom.java.TopLevelClass;
27  import org.mybatis.generator.api.dom.kotlin.KotlinFile;
28  import org.mybatis.generator.api.dom.kotlin.KotlinFunction;
29  import org.mybatis.generator.api.dom.kotlin.KotlinProperty;
30  import org.mybatis.generator.api.dom.kotlin.KotlinType;
31  import org.mybatis.generator.api.dom.xml.Document;
32  import org.mybatis.generator.api.dom.xml.XmlElement;
33  import org.mybatis.generator.config.Context;
34  
35  /**
36   * This class implements a composite plugin. It contains a list of plugins for the
37   * current context and is used to aggregate plugins together. This class
38   * implements the rule that if any plugin returns "false" from a method, then no
39   * subsequent plugin is called.
40   *
41   * @author Jeff Butler
42   */
43  public abstract class CompositePlugin implements Plugin {
44      private final List<Plugin> plugins = new ArrayList<>();
45  
46      protected CompositePlugin() {
47          super();
48      }
49  
50      public void addPlugin(Plugin plugin) {
51          plugins.add(plugin);
52      }
53  
54      @Override
55      public void setContext(Context context) {
56          for (Plugin plugin : plugins) {
57              plugin.setContext(context);
58          }
59      }
60  
61      @Override
62      public void setProperties(Properties properties) {
63          for (Plugin plugin : plugins) {
64              plugin.setProperties(properties);
65          }
66      }
67  
68      @Override
69      public void initialized(IntrospectedTable introspectedTable) {
70          for (Plugin plugin : plugins) {
71              plugin.initialized(introspectedTable);
72          }
73      }
74  
75      @Override
76      public List<GeneratedJavaFile> contextGenerateAdditionalJavaFiles() {
77          return plugins.stream()
78                  .map(Plugin::contextGenerateAdditionalJavaFiles)
79                  .flatMap(List::stream)
80                  .collect(Collectors.toList());
81      }
82  
83      @Override
84      public List<GeneratedJavaFile> contextGenerateAdditionalJavaFiles(IntrospectedTable introspectedTable) {
85          return plugins.stream()
86                  .map(p -> p.contextGenerateAdditionalJavaFiles(introspectedTable))
87                  .flatMap(List::stream)
88                  .collect(Collectors.toList());
89      }
90  
91      @Override
92      public List<GeneratedKotlinFile> contextGenerateAdditionalKotlinFiles() {
93          return plugins.stream()
94                          .map(Plugin::contextGenerateAdditionalKotlinFiles)
95                  .flatMap(List::stream)
96                  .collect(Collectors.toList());
97      }
98  
99      @Override
100     public List<GeneratedKotlinFile> contextGenerateAdditionalKotlinFiles(IntrospectedTable introspectedTable) {
101         return plugins.stream()
102                 .map(p -> p.contextGenerateAdditionalKotlinFiles(introspectedTable))
103                 .flatMap(List::stream)
104                 .collect(Collectors.toList());
105     }
106 
107     @Override
108     public List<GeneratedFile> contextGenerateAdditionalFiles() {
109         return plugins.stream()
110                 .map(Plugin::contextGenerateAdditionalFiles)
111                 .flatMap(List::stream)
112                 .collect(Collectors.toList());
113     }
114 
115     @Override
116     public List<GeneratedFile> contextGenerateAdditionalFiles(IntrospectedTable introspectedTable) {
117         return plugins.stream()
118                 .map(p -> p.contextGenerateAdditionalFiles(introspectedTable))
119                 .flatMap(List::stream)
120                 .collect(Collectors.toList());
121     }
122 
123     @Override
124     public List<GeneratedXmlFile> contextGenerateAdditionalXmlFiles() {
125         return plugins.stream()
126                 .map(Plugin::contextGenerateAdditionalXmlFiles)
127                 .flatMap(List::stream)
128                 .collect(Collectors.toList());
129     }
130 
131     @Override
132     public List<GeneratedXmlFile> contextGenerateAdditionalXmlFiles(IntrospectedTable introspectedTable) {
133         return plugins.stream()
134                 .map(p -> p.contextGenerateAdditionalXmlFiles(introspectedTable))
135                 .flatMap(List::stream)
136                 .collect(Collectors.toList());
137     }
138 
139     @Override
140     public boolean clientGenerated(Interface interfaze, IntrospectedTable introspectedTable) {
141         for (Plugin plugin : plugins) {
142             if (!plugin.clientGenerated(interfaze, introspectedTable)) {
143                 return false;
144             }
145         }
146 
147         return true;
148     }
149 
150     @Override
151     public boolean clientBasicInsertMethodGenerated(Method method, Interface interfaze,
152             IntrospectedTable introspectedTable) {
153         for (Plugin plugin : plugins) {
154             if (!plugin.clientBasicInsertMethodGenerated(method, interfaze, introspectedTable)) {
155                 return false;
156             }
157         }
158 
159         return true;
160     }
161 
162     @Override
163     public boolean clientBasicInsertMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
164             IntrospectedTable introspectedTable) {
165         for (Plugin plugin : plugins) {
166             if (!plugin.clientBasicInsertMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
167                 return false;
168             }
169         }
170 
171         return true;
172     }
173 
174     @Override
175     public boolean clientBasicInsertMultipleMethodGenerated(Method method, Interface interfaze,
176             IntrospectedTable introspectedTable) {
177         for (Plugin plugin : plugins) {
178             if (!plugin.clientBasicInsertMultipleMethodGenerated(method, interfaze, introspectedTable)) {
179                 return false;
180             }
181         }
182 
183         return true;
184     }
185 
186     @Override
187     public boolean clientBasicInsertMultipleMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
188             IntrospectedTable introspectedTable) {
189         for (Plugin plugin : plugins) {
190             if (!plugin.clientBasicInsertMultipleMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
191                 return false;
192             }
193         }
194 
195         return true;
196     }
197 
198     @Override
199     public boolean clientBasicSelectManyMethodGenerated(Method method, Interface interfaze,
200             IntrospectedTable introspectedTable) {
201         for (Plugin plugin : plugins) {
202             if (!plugin.clientBasicSelectManyMethodGenerated(method, interfaze, introspectedTable)) {
203                 return false;
204             }
205         }
206 
207         return true;
208     }
209 
210     @Override
211     public boolean clientBasicSelectManyMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
212             IntrospectedTable introspectedTable) {
213         for (Plugin plugin : plugins) {
214             if (!plugin.clientBasicSelectManyMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
215                 return false;
216             }
217         }
218 
219         return true;
220     }
221 
222     @Override
223     public boolean clientBasicSelectOneMethodGenerated(Method method, Interface interfaze,
224             IntrospectedTable introspectedTable) {
225         for (Plugin plugin : plugins) {
226             if (!plugin.clientBasicSelectOneMethodGenerated(method, interfaze, introspectedTable)) {
227                 return false;
228             }
229         }
230 
231         return true;
232     }
233 
234     @Override
235     public boolean clientBasicSelectOneMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
236             IntrospectedTable introspectedTable) {
237         for (Plugin plugin : plugins) {
238             if (!plugin.clientBasicSelectOneMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
239                 return false;
240             }
241         }
242 
243         return true;
244     }
245 
246     @Override
247     public boolean clientCountByExampleMethodGenerated(Method method, Interface interfaze,
248             IntrospectedTable introspectedTable) {
249         for (Plugin plugin : plugins) {
250             if (!plugin.clientCountByExampleMethodGenerated(method, interfaze, introspectedTable)) {
251                 return false;
252             }
253         }
254 
255         return true;
256     }
257 
258     @Override
259     public boolean clientDeleteByExampleMethodGenerated(Method method, Interface interfaze,
260             IntrospectedTable introspectedTable) {
261         for (Plugin plugin : plugins) {
262             if (!plugin.clientDeleteByExampleMethodGenerated(method, interfaze, introspectedTable)) {
263                 return false;
264             }
265         }
266 
267         return true;
268     }
269 
270     @Override
271     public boolean clientDeleteByPrimaryKeyMethodGenerated(Method method, Interface interfaze,
272             IntrospectedTable introspectedTable) {
273         for (Plugin plugin : plugins) {
274             if (!plugin.clientDeleteByPrimaryKeyMethodGenerated(method, interfaze, introspectedTable)) {
275                 return false;
276             }
277         }
278 
279         return true;
280     }
281 
282     @Override
283     public boolean clientDeleteByPrimaryKeyMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
284             IntrospectedTable introspectedTable) {
285         for (Plugin plugin : plugins) {
286             if (!plugin.clientDeleteByPrimaryKeyMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
287                 return false;
288             }
289         }
290 
291         return true;
292     }
293 
294     @Override
295     public boolean clientGeneralCountMethodGenerated(Method method, Interface interfaze,
296             IntrospectedTable introspectedTable) {
297         for (Plugin plugin : plugins) {
298             if (!plugin.clientGeneralCountMethodGenerated(method, interfaze, introspectedTable)) {
299                 return false;
300             }
301         }
302 
303         return true;
304     }
305 
306     @Override
307     public boolean clientGeneralCountMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
308             IntrospectedTable introspectedTable) {
309         for (Plugin plugin : plugins) {
310             if (!plugin.clientGeneralCountMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
311                 return false;
312             }
313         }
314 
315         return true;
316     }
317 
318     @Override
319     public boolean clientGeneralDeleteMethodGenerated(Method method, Interface interfaze,
320             IntrospectedTable introspectedTable) {
321         for (Plugin plugin : plugins) {
322             if (!plugin.clientGeneralDeleteMethodGenerated(method, interfaze, introspectedTable)) {
323                 return false;
324             }
325         }
326 
327         return true;
328     }
329 
330     @Override
331     public boolean clientGeneralDeleteMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
332             IntrospectedTable introspectedTable) {
333         for (Plugin plugin : plugins) {
334             if (!plugin.clientGeneralDeleteMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
335                 return false;
336             }
337         }
338 
339         return true;
340     }
341 
342     @Override
343     public boolean clientGeneralSelectDistinctMethodGenerated(Method method, Interface interfaze,
344             IntrospectedTable introspectedTable) {
345         for (Plugin plugin : plugins) {
346             if (!plugin.clientGeneralSelectDistinctMethodGenerated(method, interfaze, introspectedTable)) {
347                 return false;
348             }
349         }
350 
351         return true;
352     }
353 
354     @Override
355     public boolean clientGeneralSelectDistinctMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
356             IntrospectedTable introspectedTable) {
357         for (Plugin plugin : plugins) {
358             if (!plugin.clientGeneralSelectDistinctMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
359                 return false;
360             }
361         }
362 
363         return true;
364     }
365 
366     @Override
367     public boolean clientGeneralSelectMethodGenerated(Method method, Interface interfaze,
368             IntrospectedTable introspectedTable) {
369         for (Plugin plugin : plugins) {
370             if (!plugin.clientGeneralSelectMethodGenerated(method, interfaze, introspectedTable)) {
371                 return false;
372             }
373         }
374 
375         return true;
376     }
377 
378     @Override
379     public boolean clientGeneralSelectMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
380             IntrospectedTable introspectedTable) {
381         for (Plugin plugin : plugins) {
382             if (!plugin.clientGeneralSelectMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
383                 return false;
384             }
385         }
386 
387         return true;
388     }
389 
390     @Override
391     public boolean clientGeneralUpdateMethodGenerated(Method method, Interface interfaze,
392             IntrospectedTable introspectedTable) {
393         for (Plugin plugin : plugins) {
394             if (!plugin.clientGeneralUpdateMethodGenerated(method, interfaze, introspectedTable)) {
395                 return false;
396             }
397         }
398 
399         return true;
400     }
401 
402     @Override
403     public boolean clientGeneralUpdateMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
404             IntrospectedTable introspectedTable) {
405         for (Plugin plugin : plugins) {
406             if (!plugin.clientGeneralUpdateMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
407                 return false;
408             }
409         }
410 
411         return true;
412     }
413 
414     @Override
415     public boolean clientInsertMethodGenerated(Method method, Interface interfaze,
416             IntrospectedTable introspectedTable) {
417         for (Plugin plugin : plugins) {
418             if (!plugin.clientInsertMethodGenerated(method, interfaze, introspectedTable)) {
419                 return false;
420             }
421         }
422 
423         return true;
424     }
425 
426     @Override
427     public boolean clientInsertMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
428             IntrospectedTable introspectedTable) {
429         for (Plugin plugin : plugins) {
430             if (!plugin.clientInsertMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
431                 return false;
432             }
433         }
434 
435         return true;
436     }
437 
438     @Override
439     public boolean clientInsertMultipleMethodGenerated(Method method, Interface interfaze,
440             IntrospectedTable introspectedTable) {
441         for (Plugin plugin : plugins) {
442             if (!plugin.clientInsertMultipleMethodGenerated(method, interfaze, introspectedTable)) {
443                 return false;
444             }
445         }
446 
447         return true;
448     }
449 
450     @Override
451     public boolean clientInsertMultipleMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
452             IntrospectedTable introspectedTable) {
453         for (Plugin plugin : plugins) {
454             if (!plugin.clientInsertMultipleMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
455                 return false;
456             }
457         }
458 
459         return true;
460     }
461 
462     @Override
463     public boolean clientInsertSelectiveMethodGenerated(Method method, Interface interfaze,
464             IntrospectedTable introspectedTable) {
465         for (Plugin plugin : plugins) {
466             if (!plugin.clientInsertSelectiveMethodGenerated(method, interfaze, introspectedTable)) {
467                 return false;
468             }
469         }
470 
471         return true;
472     }
473 
474     @Override
475     public boolean clientInsertSelectiveMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
476             IntrospectedTable introspectedTable) {
477         for (Plugin plugin : plugins) {
478             if (!plugin.clientInsertSelectiveMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
479                 return false;
480             }
481         }
482 
483         return true;
484     }
485 
486     @Override
487     public boolean clientSelectByExampleWithBLOBsMethodGenerated(Method method, Interface interfaze,
488             IntrospectedTable introspectedTable) {
489         for (Plugin plugin : plugins) {
490             if (!plugin.clientSelectByExampleWithBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
491                 return false;
492             }
493         }
494 
495         return true;
496     }
497 
498     @Override
499     public boolean clientSelectByExampleWithoutBLOBsMethodGenerated(Method method, Interface interfaze,
500             IntrospectedTable introspectedTable) {
501         for (Plugin plugin : plugins) {
502             if (!plugin.clientSelectByExampleWithoutBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
503                 return false;
504             }
505         }
506 
507         return true;
508     }
509 
510     @Override
511     public boolean clientSelectByPrimaryKeyMethodGenerated(Method method, Interface interfaze,
512             IntrospectedTable introspectedTable) {
513         for (Plugin plugin : plugins) {
514             if (!plugin.clientSelectByPrimaryKeyMethodGenerated(method, interfaze, introspectedTable)) {
515                 return false;
516             }
517         }
518 
519         return true;
520     }
521 
522     @Override
523     public boolean clientSelectByPrimaryKeyMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
524             IntrospectedTable introspectedTable) {
525         for (Plugin plugin : plugins) {
526             if (!plugin.clientSelectByPrimaryKeyMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
527                 return false;
528             }
529         }
530 
531         return true;
532     }
533 
534     @Override
535     public boolean clientSelectListFieldGenerated(Field field, Interface interfaze,
536             IntrospectedTable introspectedTable) {
537         for (Plugin plugin : plugins) {
538             if (!plugin.clientSelectListFieldGenerated(field, interfaze, introspectedTable)) {
539                 return false;
540             }
541         }
542 
543         return true;
544     }
545 
546     @Override
547     public boolean clientSelectOneMethodGenerated(Method method, Interface interfaze,
548             IntrospectedTable introspectedTable) {
549         for (Plugin plugin : plugins) {
550             if (!plugin.clientSelectOneMethodGenerated(method, interfaze, introspectedTable)) {
551                 return false;
552             }
553         }
554 
555         return true;
556     }
557 
558     @Override
559     public boolean clientSelectOneMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
560             IntrospectedTable introspectedTable) {
561         for (Plugin plugin : plugins) {
562             if (!plugin.clientSelectOneMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
563                 return false;
564             }
565         }
566 
567         return true;
568     }
569 
570     @Override
571     public boolean clientUpdateByExampleSelectiveMethodGenerated(Method method, Interface interfaze,
572             IntrospectedTable introspectedTable) {
573         for (Plugin plugin : plugins) {
574             if (!plugin.clientUpdateByExampleSelectiveMethodGenerated(method, interfaze, introspectedTable)) {
575                 return false;
576             }
577         }
578 
579         return true;
580     }
581 
582     @Override
583     public boolean clientUpdateAllColumnsMethodGenerated(Method method, Interface interfaze,
584             IntrospectedTable introspectedTable) {
585         for (Plugin plugin : plugins) {
586             if (!plugin.clientUpdateAllColumnsMethodGenerated(method, interfaze, introspectedTable)) {
587                 return false;
588             }
589         }
590 
591         return true;
592     }
593 
594     @Override
595     public boolean clientUpdateAllColumnsMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
596             IntrospectedTable introspectedTable) {
597         for (Plugin plugin : plugins) {
598             if (!plugin.clientUpdateAllColumnsMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
599                 return false;
600             }
601         }
602 
603         return true;
604     }
605 
606     @Override
607     public boolean clientUpdateSelectiveColumnsMethodGenerated(Method method, Interface interfaze,
608             IntrospectedTable introspectedTable) {
609         for (Plugin plugin : plugins) {
610             if (!plugin.clientUpdateSelectiveColumnsMethodGenerated(method, interfaze, introspectedTable)) {
611                 return false;
612             }
613         }
614 
615         return true;
616     }
617 
618     @Override
619     public boolean clientUpdateSelectiveColumnsMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
620             IntrospectedTable introspectedTable) {
621         for (Plugin plugin : plugins) {
622             if (!plugin.clientUpdateSelectiveColumnsMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
623                 return false;
624             }
625         }
626 
627         return true;
628     }
629 
630     @Override
631     public boolean clientUpdateByExampleWithBLOBsMethodGenerated(Method method, Interface interfaze,
632             IntrospectedTable introspectedTable) {
633         for (Plugin plugin : plugins) {
634             if (!plugin.clientUpdateByExampleWithBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
635                 return false;
636             }
637         }
638 
639         return true;
640     }
641 
642     @Override
643     public boolean clientUpdateByExampleWithoutBLOBsMethodGenerated(Method method, Interface interfaze,
644             IntrospectedTable introspectedTable) {
645         for (Plugin plugin : plugins) {
646             if (!plugin.clientUpdateByExampleWithoutBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
647                 return false;
648             }
649         }
650 
651         return true;
652     }
653 
654     @Override
655     public boolean clientUpdateByPrimaryKeySelectiveMethodGenerated(Method method, Interface interfaze,
656             IntrospectedTable introspectedTable) {
657         for (Plugin plugin : plugins) {
658             if (!plugin.clientUpdateByPrimaryKeySelectiveMethodGenerated(method, interfaze, introspectedTable)) {
659                 return false;
660             }
661         }
662 
663         return true;
664     }
665 
666     @Override
667     public boolean clientUpdateByPrimaryKeySelectiveMethodGenerated(KotlinFunction kotlinFunction,
668             KotlinFile kotlinFile, IntrospectedTable introspectedTable) {
669         for (Plugin plugin : plugins) {
670             if (!plugin.clientUpdateByPrimaryKeySelectiveMethodGenerated(kotlinFunction, kotlinFile,
671                     introspectedTable)) {
672                 return false;
673             }
674         }
675 
676         return true;
677     }
678 
679     @Override
680     public boolean clientUpdateByPrimaryKeyWithBLOBsMethodGenerated(Method method, Interface interfaze,
681             IntrospectedTable introspectedTable) {
682         for (Plugin plugin : plugins) {
683             if (!plugin.clientUpdateByPrimaryKeyWithBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
684                 return false;
685             }
686         }
687 
688         return true;
689     }
690 
691     @Override
692     public boolean clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(Method method, Interface interfaze,
693             IntrospectedTable introspectedTable) {
694         for (Plugin plugin : plugins) {
695             if (!plugin.clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(method, interfaze, introspectedTable)) {
696                 return false;
697             }
698         }
699 
700         return true;
701     }
702 
703     @Override
704     public boolean clientSelectAllMethodGenerated(Method method, Interface interfaze,
705             IntrospectedTable introspectedTable) {
706         for (Plugin plugin : plugins) {
707             if (!plugin.clientSelectAllMethodGenerated(method, interfaze, introspectedTable)) {
708                 return false;
709             }
710         }
711 
712         return true;
713     }
714 
715     @Override
716     public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass,
717             IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
718             ModelClassType modelClassType) {
719         for (Plugin plugin : plugins) {
720             if (!plugin.modelFieldGenerated(field, topLevelClass, introspectedColumn, introspectedTable,
721                     modelClassType)) {
722                 return false;
723             }
724         }
725 
726         return true;
727     }
728 
729     @Override
730     public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass,
731             IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
732             ModelClassType modelClassType) {
733         for (Plugin plugin : plugins) {
734             if (!plugin.modelGetterMethodGenerated(method, topLevelClass, introspectedColumn, introspectedTable,
735                     modelClassType)) {
736                 return false;
737             }
738         }
739 
740         return true;
741     }
742 
743     @Override
744     public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass,
745             IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
746             ModelClassType modelClassType) {
747         for (Plugin plugin : plugins) {
748             if (!plugin.modelSetterMethodGenerated(method, topLevelClass, introspectedColumn, introspectedTable,
749                     modelClassType)) {
750                 return false;
751             }
752         }
753 
754         return true;
755     }
756 
757     @Override
758     public boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
759         for (Plugin plugin : plugins) {
760             if (!plugin.modelPrimaryKeyClassGenerated(topLevelClass, introspectedTable)) {
761                 return false;
762             }
763         }
764 
765         return true;
766     }
767 
768     @Override
769     public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
770         for (Plugin plugin : plugins) {
771             if (!plugin.modelBaseRecordClassGenerated(topLevelClass, introspectedTable)) {
772                 return false;
773             }
774         }
775 
776         return true;
777     }
778 
779     @Override
780     public boolean modelRecordWithBLOBsClassGenerated(TopLevelClass topLevelClass,
781             IntrospectedTable introspectedTable) {
782         for (Plugin plugin : plugins) {
783             if (!plugin.modelRecordWithBLOBsClassGenerated(topLevelClass, introspectedTable)) {
784                 return false;
785             }
786         }
787 
788         return true;
789     }
790 
791     @Override
792     public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
793         for (Plugin plugin : plugins) {
794             if (!plugin.modelExampleClassGenerated(topLevelClass, introspectedTable)) {
795                 return false;
796             }
797         }
798 
799         return true;
800     }
801 
802     @Override
803     public boolean sqlMapGenerated(GeneratedXmlFile sqlMap, IntrospectedTable introspectedTable) {
804         for (Plugin plugin : plugins) {
805             if (!plugin.sqlMapGenerated(sqlMap, introspectedTable)) {
806                 return false;
807             }
808         }
809 
810         return true;
811     }
812 
813     @Override
814     public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) {
815         for (Plugin plugin : plugins) {
816             if (!plugin.sqlMapDocumentGenerated(document, introspectedTable)) {
817                 return false;
818             }
819         }
820 
821         return true;
822     }
823 
824     @Override
825     public boolean sqlMapResultMapWithoutBLOBsElementGenerated(XmlElement element,
826             IntrospectedTable introspectedTable) {
827         for (Plugin plugin : plugins) {
828             if (!plugin.sqlMapResultMapWithoutBLOBsElementGenerated(element, introspectedTable)) {
829                 return false;
830             }
831         }
832 
833         return true;
834     }
835 
836     @Override
837     public boolean sqlMapCountByExampleElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
838         for (Plugin plugin : plugins) {
839             if (!plugin.sqlMapCountByExampleElementGenerated(element, introspectedTable)) {
840                 return false;
841             }
842         }
843 
844         return true;
845     }
846 
847     @Override
848     public boolean sqlMapDeleteByExampleElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
849         for (Plugin plugin : plugins) {
850             if (!plugin.sqlMapDeleteByExampleElementGenerated(element, introspectedTable)) {
851                 return false;
852             }
853         }
854 
855         return true;
856     }
857 
858     @Override
859     public boolean sqlMapDeleteByPrimaryKeyElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
860         for (Plugin plugin : plugins) {
861             if (!plugin.sqlMapDeleteByPrimaryKeyElementGenerated(element, introspectedTable)) {
862                 return false;
863             }
864         }
865 
866         return true;
867     }
868 
869     @Override
870     public boolean sqlMapExampleWhereClauseElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
871         for (Plugin plugin : plugins) {
872             if (!plugin.sqlMapExampleWhereClauseElementGenerated(element, introspectedTable)) {
873                 return false;
874             }
875         }
876 
877         return true;
878     }
879 
880     @Override
881     public boolean sqlMapBaseColumnListElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
882         for (Plugin plugin : plugins) {
883             if (!plugin.sqlMapBaseColumnListElementGenerated(element, introspectedTable)) {
884                 return false;
885             }
886         }
887 
888         return true;
889     }
890 
891     @Override
892     public boolean sqlMapBlobColumnListElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
893         for (Plugin plugin : plugins) {
894             if (!plugin.sqlMapBlobColumnListElementGenerated(element, introspectedTable)) {
895                 return false;
896             }
897         }
898 
899         return true;
900     }
901 
902     @Override
903     public boolean sqlMapInsertElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
904         for (Plugin plugin : plugins) {
905             if (!plugin.sqlMapInsertElementGenerated(element, introspectedTable)) {
906                 return false;
907             }
908         }
909 
910         return true;
911     }
912 
913     @Override
914     public boolean sqlMapInsertSelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
915         for (Plugin plugin : plugins) {
916             if (!plugin.sqlMapInsertSelectiveElementGenerated(element, introspectedTable)) {
917                 return false;
918             }
919         }
920 
921         return true;
922     }
923 
924     @Override
925     public boolean sqlMapResultMapWithBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
926         for (Plugin plugin : plugins) {
927             if (!plugin.sqlMapResultMapWithBLOBsElementGenerated(element, introspectedTable)) {
928                 return false;
929             }
930         }
931 
932         return true;
933     }
934 
935     @Override
936     public boolean sqlMapSelectAllElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
937         for (Plugin plugin : plugins) {
938             if (!plugin.sqlMapSelectAllElementGenerated(element, introspectedTable)) {
939                 return false;
940             }
941         }
942 
943         return true;
944     }
945 
946     @Override
947     public boolean sqlMapSelectByPrimaryKeyElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
948         for (Plugin plugin : plugins) {
949             if (!plugin.sqlMapSelectByPrimaryKeyElementGenerated(element, introspectedTable)) {
950                 return false;
951             }
952         }
953 
954         return true;
955     }
956 
957     @Override
958     public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element,
959             IntrospectedTable introspectedTable) {
960         for (Plugin plugin : plugins) {
961             if (!plugin.sqlMapSelectByExampleWithoutBLOBsElementGenerated(element, introspectedTable)) {
962                 return false;
963             }
964         }
965 
966         return true;
967     }
968 
969     @Override
970     public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element,
971             IntrospectedTable introspectedTable) {
972         for (Plugin plugin : plugins) {
973             if (!plugin.sqlMapSelectByExampleWithBLOBsElementGenerated(element, introspectedTable)) {
974                 return false;
975             }
976         }
977 
978         return true;
979     }
980 
981     @Override
982     public boolean sqlMapUpdateByExampleSelectiveElementGenerated(XmlElement element,
983             IntrospectedTable introspectedTable) {
984         for (Plugin plugin : plugins) {
985             if (!plugin.sqlMapUpdateByExampleSelectiveElementGenerated(element, introspectedTable)) {
986                 return false;
987             }
988         }
989 
990         return true;
991     }
992 
993     @Override
994     public boolean sqlMapUpdateByExampleWithBLOBsElementGenerated(XmlElement element,
995             IntrospectedTable introspectedTable) {
996         for (Plugin plugin : plugins) {
997             if (!plugin.sqlMapUpdateByExampleWithBLOBsElementGenerated(element, introspectedTable)) {
998                 return false;
999             }
1000         }
1001 
1002         return true;
1003     }
1004 
1005     @Override
1006     public boolean sqlMapUpdateByExampleWithoutBLOBsElementGenerated(XmlElement element,
1007             IntrospectedTable introspectedTable) {
1008         for (Plugin plugin : plugins) {
1009             if (!plugin.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable)) {
1010                 return false;
1011             }
1012         }
1013 
1014         return true;
1015     }
1016 
1017     @Override
1018     public boolean sqlMapUpdateByPrimaryKeySelectiveElementGenerated(XmlElement element,
1019             IntrospectedTable introspectedTable) {
1020         for (Plugin plugin : plugins) {
1021             if (!plugin.sqlMapUpdateByPrimaryKeySelectiveElementGenerated(element, introspectedTable)) {
1022                 return false;
1023             }
1024         }
1025 
1026         return true;
1027     }
1028 
1029     @Override
1030     public boolean sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated(XmlElement element,
1031             IntrospectedTable introspectedTable) {
1032         for (Plugin plugin : plugins) {
1033             if (!plugin.sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated(element, introspectedTable)) {
1034                 return false;
1035             }
1036         }
1037 
1038         return true;
1039     }
1040 
1041     @Override
1042     public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(XmlElement element,
1043             IntrospectedTable introspectedTable) {
1044         for (Plugin plugin : plugins) {
1045             if (!plugin.sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(element, introspectedTable)) {
1046                 return false;
1047             }
1048         }
1049 
1050         return true;
1051     }
1052 
1053     @Override
1054     public boolean providerGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
1055         for (Plugin plugin : plugins) {
1056             if (!plugin.providerGenerated(topLevelClass, introspectedTable)) {
1057                 return false;
1058             }
1059         }
1060 
1061         return true;
1062     }
1063 
1064     @Override
1065     public boolean providerApplyWhereMethodGenerated(Method method, TopLevelClass topLevelClass,
1066             IntrospectedTable introspectedTable) {
1067         for (Plugin plugin : plugins) {
1068             if (!plugin.providerApplyWhereMethodGenerated(method, topLevelClass, introspectedTable)) {
1069                 return false;
1070             }
1071         }
1072 
1073         return true;
1074     }
1075 
1076     @Override
1077     public boolean providerCountByExampleMethodGenerated(Method method, TopLevelClass topLevelClass,
1078             IntrospectedTable introspectedTable) {
1079         for (Plugin plugin : plugins) {
1080             if (!plugin.providerCountByExampleMethodGenerated(method, topLevelClass, introspectedTable)) {
1081                 return false;
1082             }
1083         }
1084 
1085         return true;
1086     }
1087 
1088     @Override
1089     public boolean providerDeleteByExampleMethodGenerated(Method method, TopLevelClass topLevelClass,
1090             IntrospectedTable introspectedTable) {
1091         for (Plugin plugin : plugins) {
1092             if (!plugin.providerDeleteByExampleMethodGenerated(method, topLevelClass, introspectedTable)) {
1093                 return false;
1094             }
1095         }
1096 
1097         return true;
1098     }
1099 
1100     @Override
1101     public boolean providerInsertSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass,
1102             IntrospectedTable introspectedTable) {
1103         for (Plugin plugin : plugins) {
1104             if (!plugin.providerInsertSelectiveMethodGenerated(method, topLevelClass, introspectedTable)) {
1105                 return false;
1106             }
1107         }
1108 
1109         return true;
1110     }
1111 
1112     @Override
1113     public boolean providerSelectByExampleWithBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass,
1114             IntrospectedTable introspectedTable) {
1115         for (Plugin plugin : plugins) {
1116             if (!plugin.providerSelectByExampleWithBLOBsMethodGenerated(method, topLevelClass, introspectedTable)) {
1117                 return false;
1118             }
1119         }
1120 
1121         return true;
1122     }
1123 
1124     @Override
1125     public boolean providerSelectByExampleWithoutBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass,
1126             IntrospectedTable introspectedTable) {
1127         for (Plugin plugin : plugins) {
1128             if (!plugin.providerSelectByExampleWithoutBLOBsMethodGenerated(method, topLevelClass, introspectedTable)) {
1129                 return false;
1130             }
1131         }
1132 
1133         return true;
1134     }
1135 
1136     @Override
1137     public boolean providerUpdateByExampleSelectiveMethodGenerated(Method method, TopLevelClass topLevelClass,
1138             IntrospectedTable introspectedTable) {
1139         for (Plugin plugin : plugins) {
1140             if (!plugin.providerUpdateByExampleSelectiveMethodGenerated(method, topLevelClass, introspectedTable)) {
1141                 return false;
1142             }
1143         }
1144 
1145         return true;
1146     }
1147 
1148     @Override
1149     public boolean providerUpdateByExampleWithBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass,
1150             IntrospectedTable introspectedTable) {
1151         for (Plugin plugin : plugins) {
1152             if (!plugin.providerUpdateByExampleWithBLOBsMethodGenerated(method, topLevelClass, introspectedTable)) {
1153                 return false;
1154             }
1155         }
1156 
1157         return true;
1158     }
1159 
1160     @Override
1161     public boolean providerUpdateByExampleWithoutBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass,
1162             IntrospectedTable introspectedTable) {
1163         for (Plugin plugin : plugins) {
1164             if (!plugin.providerUpdateByExampleWithoutBLOBsMethodGenerated(method, topLevelClass, introspectedTable)) {
1165                 return false;
1166             }
1167         }
1168 
1169         return true;
1170     }
1171 
1172     @Override
1173     public boolean providerUpdateByPrimaryKeySelectiveMethodGenerated(Method method, TopLevelClass topLevelClass,
1174             IntrospectedTable introspectedTable) {
1175         for (Plugin plugin : plugins) {
1176             if (!plugin.providerUpdateByPrimaryKeySelectiveMethodGenerated(method, topLevelClass, introspectedTable)) {
1177                 return false;
1178             }
1179         }
1180 
1181         return true;
1182     }
1183 
1184     @Override
1185     public boolean dynamicSqlSupportGenerated(TopLevelClass supportClass, IntrospectedTable introspectedTable) {
1186         for (Plugin plugin : plugins) {
1187             if (!plugin.dynamicSqlSupportGenerated(supportClass, introspectedTable)) {
1188                 return false;
1189             }
1190         }
1191 
1192         return true;
1193     }
1194 
1195     @Override
1196     public boolean dynamicSqlSupportGenerated(KotlinFile kotlinFile, KotlinType outerSupportObject,
1197                                               KotlinType innerSupportClass, IntrospectedTable introspectedTable) {
1198         for (Plugin plugin : plugins) {
1199             if (!plugin.dynamicSqlSupportGenerated(kotlinFile, outerSupportObject, innerSupportClass,
1200                     introspectedTable)) {
1201                 return false;
1202             }
1203         }
1204 
1205         return true;
1206     }
1207 
1208     @Override
1209     public boolean mapperGenerated(KotlinFile mapperFile, KotlinType mapper, IntrospectedTable introspectedTable) {
1210         for (Plugin plugin : plugins) {
1211             if (!plugin.mapperGenerated(mapperFile, mapper, introspectedTable)) {
1212                 return false;
1213             }
1214         }
1215 
1216         return true;
1217     }
1218 
1219     @Override
1220     public boolean kotlinDataClassGenerated(KotlinFile kotlinFile, KotlinType dataClass,
1221             IntrospectedTable introspectedTable) {
1222         for (Plugin plugin : plugins) {
1223             if (!plugin.kotlinDataClassGenerated(kotlinFile, dataClass, introspectedTable)) {
1224                 return false;
1225             }
1226         }
1227 
1228         return true;
1229     }
1230 
1231     @Override
1232     public boolean clientColumnListPropertyGenerated(KotlinProperty kotlinProperty, KotlinFile kotlinFile,
1233             IntrospectedTable introspectedTable) {
1234         for (Plugin plugin : plugins) {
1235             if (!plugin.clientColumnListPropertyGenerated(kotlinProperty, kotlinFile, introspectedTable)) {
1236                 return false;
1237             }
1238         }
1239 
1240         return true;
1241     }
1242 
1243     @Override
1244     public boolean clientInsertMultipleVarargMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
1245             IntrospectedTable introspectedTable) {
1246         for (Plugin plugin : plugins) {
1247             if (!plugin.clientInsertMultipleVarargMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
1248                 return false;
1249             }
1250         }
1251 
1252         return true;
1253     }
1254 
1255     @Override
1256     public boolean clientUpdateByPrimaryKeyMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile,
1257             IntrospectedTable introspectedTable) {
1258         for (Plugin plugin : plugins) {
1259             if (!plugin.clientUpdateByPrimaryKeyMethodGenerated(kotlinFunction, kotlinFile, introspectedTable)) {
1260                 return false;
1261             }
1262         }
1263 
1264         return true;
1265     }
1266 
1267     @Override
1268     public boolean shouldGenerate(IntrospectedTable introspectedTable) {
1269         for (Plugin plugin : plugins) {
1270             if (!plugin.shouldGenerate(introspectedTable)) {
1271                 return false;
1272             }
1273         }
1274 
1275         return true;
1276     }
1277 
1278     @Override
1279     public boolean clientUpdateByPrimaryKeyMethodGenerated(Method method, Interface interfaze,
1280             IntrospectedTable introspectedTable) {
1281         for (Plugin plugin : plugins) {
1282             if (!plugin.clientUpdateByPrimaryKeyMethodGenerated(method, interfaze, introspectedTable)) {
1283                 return false;
1284             }
1285         }
1286 
1287         return true;
1288     }
1289 }