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.factory;
28
29 import com.rapiddweller.common.BeanUtil;
30 import com.rapiddweller.common.NumberUtil;
31 import com.rapiddweller.common.TimeUtil;
32 import com.rapiddweller.common.converter.NumberToNumberConverter;
33
34 import java.math.BigDecimal;
35 import java.util.Date;
36
37 /**
38 * {@link DefaultsProvider} implementation which provides mean defaults
39 * for provoking errors in functional testing.<br/><br/>
40 * Created: 15.07.2011 21:22:39
41 *
42 * @author Volker Bergmann
43 * @since 0.7.0
44 */
45 public class MeanDefaultsProvider implements DefaultsProvider {
46
47 private static final BigDecimal DECIMAL_GRANULARITY = new BigDecimal("0.00001");
48
49 @Override
50 public <T extends Number> T defaultMin(Class<T> numberType) {
51 return NumberUtil.minValue(numberType);
52 }
53
54 @Override
55 public <T extends Number> T defaultMax(Class<T> numberType) {
56 return NumberUtil.maxValue(numberType);
57 }
58
59 @Override
60 public <T extends Number> T defaultGranularity(Class<T> numberType) {
61 return NumberToNumberConverter.convert((BeanUtil.isDecimalNumberType(numberType) ? DECIMAL_GRANULARITY : 1), numberType);
62 }
63
64 @Override
65 public int defaultMinLength() {
66 return 0;
67 }
68
69 @Override
70 public Integer defaultMaxLength() {
71 return 1000;
72 }
73
74 @Override
75 public boolean defaultNullable() {
76 return true;
77 }
78
79 @Override
80 public double defaultNullQuota() {
81 return 0.5;
82 }
83
84 @Override
85 public Date defaultMinDate() {
86 return TimeUtil.date(-2000, 0, 1);
87 }
88
89 @Override
90 public Date defaultMaxDate() {
91 return TimeUtil.date(2999, 11, 31);
92 }
93
94 }