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.internal.rules;
17  
18  import org.mybatis.generator.api.IntrospectedTable;
19  import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
20  
21  /**
22   * This class can be used by plugins to easily implement a custom rules
23   * implementation. Plugins should respect the rules implementation calculated by
24   * the generator, as well as implementations from other plugins. In general if
25   * something is disabled by the default rules, or is disabled by some other
26   * plugin, it should not be re-enabled. Therefore, the following pattern of use
27   * is recommended:
28   *
29   * <pre>
30   * public class MyPlugin extends PluginAdapter {
31   *   &#64;Override
32   *   public void initialized(IntrospectedTable introspectedTable) {
33   *     MyRules myRules = new MyRules(introspectedTable.getRules());
34   *     introspectedTable.setRules(myRules);
35   *   }
36   * }
37   *
38   * public class MyRules extends RulesDelegate (
39   *   public MyRules(Rules rules) {
40   *     super(rules);
41   *   }
42   *
43   *   &#64;Override
44   *   public boolean generateInsert() {
45   *     boolean rc = super.generateInsert();
46   *     if (rc) {
47   *       // Other plugins, and the default rules, enable generation
48   *       // of the insert method.  We can decide to disable it here
49   *       // if needed.
50   *     }
51   *
52   *     return rc;
53   *   }
54   * </pre>
55   *
56   * @author Jeff Butler
57   */
58  public class RulesDelegate implements Rules {
59      protected final Rules rules;
60  
61      public RulesDelegate(Rules rules) {
62          this.rules = rules;
63      }
64  
65      @Override
66      public FullyQualifiedJavaType calculateAllFieldsClass() {
67          return rules.calculateAllFieldsClass();
68      }
69  
70      @Override
71      public boolean generateBaseRecordClass() {
72          return rules.generateBaseRecordClass();
73      }
74  
75      @Override
76      public boolean generateBaseResultMap() {
77          return rules.generateBaseResultMap();
78      }
79  
80      @Override
81      public boolean generateCountByExample() {
82          return rules.generateCountByExample();
83      }
84  
85      @Override
86      public boolean generateDeleteByExample() {
87          return rules.generateDeleteByExample();
88      }
89  
90      @Override
91      public boolean generateDeleteByPrimaryKey() {
92          return rules.generateDeleteByPrimaryKey();
93      }
94  
95      @Override
96      public boolean generateExampleClass() {
97          return rules.generateExampleClass();
98      }
99  
100     @Override
101     public boolean generateInsert() {
102         return rules.generateInsert();
103     }
104 
105     @Override
106     public boolean generateInsertSelective() {
107         return rules.generateInsertSelective();
108     }
109 
110     @Override
111     public boolean generatePrimaryKeyClass() {
112         return rules.generatePrimaryKeyClass();
113     }
114 
115     @Override
116     public boolean generateRecordWithBLOBsClass() {
117         return rules.generateRecordWithBLOBsClass();
118     }
119 
120     @Override
121     public boolean generateResultMapWithBLOBs() {
122         return rules.generateResultMapWithBLOBs();
123     }
124 
125     @Override
126     public boolean generateSelectByExampleWithBLOBs() {
127         return rules.generateSelectByExampleWithBLOBs();
128     }
129 
130     @Override
131     public boolean generateSelectByExampleWithoutBLOBs() {
132         return rules.generateSelectByExampleWithoutBLOBs();
133     }
134 
135     @Override
136     public boolean generateSelectByPrimaryKey() {
137         return rules.generateSelectByPrimaryKey();
138     }
139 
140     @Override
141     public boolean generateSQLExampleWhereClause() {
142         return rules.generateSQLExampleWhereClause();
143     }
144 
145     @Override
146     public boolean generateMyBatis3UpdateByExampleWhereClause() {
147         return rules.generateMyBatis3UpdateByExampleWhereClause();
148     }
149 
150     @Override
151     public boolean generateUpdateByExampleSelective() {
152         return rules.generateUpdateByExampleSelective();
153     }
154 
155     @Override
156     public boolean generateUpdateByExampleWithBLOBs() {
157         return rules.generateUpdateByExampleWithBLOBs();
158     }
159 
160     @Override
161     public boolean generateUpdateByExampleWithoutBLOBs() {
162         return rules.generateUpdateByExampleWithoutBLOBs();
163     }
164 
165     @Override
166     public boolean generateUpdateByPrimaryKeySelective() {
167         return rules.generateUpdateByPrimaryKeySelective();
168     }
169 
170     @Override
171     public boolean generateUpdateByPrimaryKeyWithBLOBs() {
172         return rules.generateUpdateByPrimaryKeyWithBLOBs();
173     }
174 
175     @Override
176     public boolean generateUpdateByPrimaryKeyWithoutBLOBs() {
177         return rules.generateUpdateByPrimaryKeyWithoutBLOBs();
178     }
179 
180     @Override
181     public IntrospectedTable getIntrospectedTable() {
182         return rules.getIntrospectedTable();
183     }
184 
185     @Override
186     public boolean generateBaseColumnList() {
187         return rules.generateBaseColumnList();
188     }
189 
190     @Override
191     public boolean generateBlobColumnList() {
192         return rules.generateBlobColumnList();
193     }
194 
195     @Override
196     public boolean generateJavaClient() {
197         return rules.generateJavaClient();
198     }
199 }