View Javadoc
1   /*
2    * (c) Copyright 2006-2020 by rapiddweller GmbH & Volker Bergmann. All rights reserved.
3    *
4    * Redistribution and use in source and binary forms, with or without
5    * modification, is permitted under the terms of the
6    * GNU General Public License.
7    *
8    * For redistributing this software or a derivative work under a license other
9    * than the GPL-compatible Free Software License as defined by the Free
10   * Software Foundation or approved by OSI, you must first obtain a commercial
11   * license to this software product from rapiddweller GmbH & Volker Bergmann.
12   *
13   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14   * WITHOUT A WARRANTY OF ANY KIND. ALL EXPRESS OR IMPLIED CONDITIONS,
15   * REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
16   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE
17   * HEREBY EXCLUDED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24   * POSSIBILITY OF SUCH DAMAGE.
25   */
26  
27  package com.rapiddweller.benerator.engine;
28  
29  import com.rapiddweller.benerator.GeneratorContext;
30  import com.rapiddweller.benerator.factory.DefaultsProvider;
31  import com.rapiddweller.benerator.factory.GeneratorFactory;
32  import com.rapiddweller.benerator.wrapper.ProductWrapper;
33  import com.rapiddweller.model.data.ComponentDescriptor;
34  import com.rapiddweller.model.data.DataModel;
35  import com.rapiddweller.model.data.DescriptorProvider;
36  import com.rapiddweller.model.data.TypeDescriptor;
37  import com.rapiddweller.script.ScriptContext;
38  
39  import java.util.Locale;
40  
41  /**
42   * A BeneratorContext.<br/><br/>
43   * Created at 20.04.2008 06:41:04
44   *
45   * @author Volker Bergmann
46   * @since 0.5.2
47   */
48  public interface BeneratorContext extends GeneratorContext, ScriptContext {
49  
50    // simple configuration properties ---------------------------------------------------------------------------------
51  
52    /**
53     * Sets default encoding.
54     *
55     * @param defaultEncoding the default encoding
56     */
57    void setDefaultEncoding(String defaultEncoding);
58  
59    /**
60     * Sets default line separator.
61     *
62     * @param defaultLineSeparator the default line separator
63     */
64    void setDefaultLineSeparator(String defaultLineSeparator);
65  
66    /**
67     * Sets default locale.
68     *
69     * @param defaultLocale the default locale
70     */
71    void setDefaultLocale(Locale defaultLocale);
72  
73    /**
74     * Sets default dataset.
75     *
76     * @param defaultDataset the default dataset
77     */
78    void setDefaultDataset(String defaultDataset);
79  
80    /**
81     * Sets default page size.
82     *
83     * @param defaultPageSize the default page size
84     */
85    void setDefaultPageSize(long defaultPageSize);
86  
87    /**
88     * Sets default script.
89     *
90     * @param defaultScript the default script
91     */
92    void setDefaultScript(String defaultScript);
93  
94    /**
95     * Sets default null.
96     *
97     * @param defaultNull the default null
98     */
99    void setDefaultNull(boolean defaultNull);
100 
101   /**
102    * Sets default separator.
103    *
104    * @param defaultSeparator the default separator
105    */
106   void setDefaultSeparator(char defaultSeparator);
107 
108   /**
109    * Sets default error handler.
110    *
111    * @param defaultErrorHandler the default error handler
112    */
113   void setDefaultErrorHandler(String defaultErrorHandler);
114 
115   /**
116    * Sets context uri.
117    *
118    * @param contextUri the context uri
119    */
120   void setContextUri(String contextUri);
121 
122   /**
123    * Sets validate.
124    *
125    * @param validate the validate
126    */
127   void setValidate(boolean validate);
128 
129   /**
130    * Sets max count.
131    *
132    * @param maxCount the max count
133    */
134   void setMaxCount(Long maxCount);
135 
136   /**
137    * Is default imports boolean.
138    *
139    * @return the boolean
140    */
141   boolean isDefaultImports();
142 
143   /**
144    * Sets default imports.
145    *
146    * @param defaultImports the default imports
147    */
148   void setDefaultImports(boolean defaultImports);
149 
150   /**
151    * Is default one to one boolean.
152    *
153    * @return the boolean
154    */
155   boolean isDefaultOneToOne();
156 
157   /**
158    * Sets default one to one.
159    *
160    * @param defaultOneToOne the default one to one
161    */
162   void setDefaultOneToOne(boolean defaultOneToOne);
163 
164   /**
165    * Is accept unknown simple types boolean.
166    *
167    * @return the boolean
168    */
169   boolean isAcceptUnknownSimpleTypes();
170 
171   /**
172    * Sets accept unknown simple types.
173    *
174    * @param acceptUnknownSimpleTypes the accept unknown simple types
175    */
176   void setAcceptUnknownSimpleTypes(boolean acceptUnknownSimpleTypes);
177 
178   // import handling -------------------------------------------------------------------------------------------------
179 
180   @Override
181   void importClass(String className);
182 
183   /**
184    * Import package.
185    *
186    * @param packageName the package name
187    */
188   void importPackage(String packageName);
189 
190   /**
191    * Import defaults.
192    */
193   void importDefaults();
194 
195   // service provider sharing ----------------------------------------------------------------------------------------
196 
197   @Override
198   GeneratorFactory getGeneratorFactory();
199 
200   /**
201    * Sets generator factory.
202    *
203    * @param generatorFactory the generator factory
204    */
205   void setGeneratorFactory(GeneratorFactory generatorFactory);
206 
207   /**
208    * Gets data model.
209    *
210    * @return the data model
211    */
212   DataModel getDataModel();
213 
214   /**
215    * Sets data model.
216    *
217    * @param dataModel the data model
218    */
219   void setDataModel(DataModel dataModel);
220 
221   /**
222    * Gets defaults provider.
223    *
224    * @return the defaults provider
225    */
226   DefaultsProvider getDefaultsProvider();
227 
228   /**
229    * Sets defaults provider.
230    *
231    * @param defaultsProvider the defaults provider
232    */
233   void setDefaultsProvider(DefaultsProvider defaultsProvider);
234 
235   /**
236    * Gets local descriptor provider.
237    *
238    * @return the local descriptor provider
239    */
240   DescriptorProvider getLocalDescriptorProvider();
241 
242   /**
243    * Add local type.
244    *
245    * @param type the type
246    */
247   void addLocalType(TypeDescriptor type);
248 
249   /**
250    * Gets default component config.
251    *
252    * @param name the name
253    * @return the default component config
254    */
255   ComponentDescriptor getDefaultComponentConfig(String name);
256 
257   /**
258    * Sets default component config.
259    *
260    * @param component the component
261    */
262   void setDefaultComponentConfig(ComponentDescriptor component);
263 
264   // data management -------------------------------------------------------------------------------------------------
265 
266   /**
267    * Sets global.
268    *
269    * @param name  the name
270    * @param value the value
271    */
272   void setGlobal(String name, Object value);
273 
274   @Override
275   ProductWrapper<?> getCurrentProduct();
276 
277   @Override
278   void setCurrentProduct(ProductWrapper<?> currentProduct);
279 
280   /**
281    * Has product name in scope boolean.
282    *
283    * @param productName the product name
284    * @return the boolean
285    */
286   boolean hasProductNameInScope(String productName);
287 
288   /**
289    * Create sub context benerator context.
290    *
291    * @param productName the product name
292    * @return the benerator context
293    */
294   BeneratorContext createSubContext(String productName);
295 
296 }