1 /* Version 1.0 based on Apache Software License 1.1
2 *
3 * Copyright (c) 2003 Piotr Maj and DBMonster developers. All rights
4 * reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * 3. The end-user documentation included with the redistribution, if any,
18 * must include the following acknowledgment:
19 *
20 * "This product includes software developed by DBMonster developers
21 * (http://dbmonster.kernelpanic.pl/)."
22 *
23 * Alternately, this acknowledgment may appear in the software itself,
24 * if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The name "DBMonster" must not be used to endorse or promote products
27 * derived from this software without prior written permission. For
28 * written permission, please contact pm@jcake.com.
29 *
30 * 5. Products derived from this software may not be called "DBMonster",
31 * nor may "DBMonster" appear in their name, without prior written
32 * permission of Piotr Maj.
33 *
34 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
35 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
36 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
37 * IN NO EVENT SHALL THE DBMONSTER DEVELOPERS BE LIABLE FOR ANY DIRECT,
38 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
40 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
42 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
43 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44 * POSSIBILITY OF SUCH DAMAGE.
45 */
46
47 package pl.kernelpanic.dbmonster.generator;
48
49 import java.util.Random;
50
51 import pl.kernelpanic.dbmonster.DBMonster;
52 import pl.kernelpanic.dbmonster.DBMonsterContext;
53 import pl.kernelpanic.dbmonster.util.Converter;
54
55 /***
56 * The generator which produces boolean values.
57 *
58 * @author Piotr Maj <pm@jcake.com>
59 *
60 * @version $Id: BooleanGenerator.java,v 1.2 2006/01/05 16:29:37 majek Exp $
61 */
62 public class BooleanGenerator extends BasicDataGenerator implements Initializable {
63
64 /***
65 * Probability.
66 */
67 private int probability = 50;
68
69 /***
70 * Context.
71 */
72 private DBMonsterContext context = null;
73
74 /***
75 * Random number generator.
76 */
77 private Random random = null;
78
79 /***
80 * @see Initializable#initialize(DBMonsterContext)
81 */
82 public void initialize(DBMonsterContext ctx) throws Exception {
83 context = ctx;
84 random = (Random) context.getProperty(DBMonster.RANDOM_KEY);
85 }
86
87 /***
88 * Generates boolean value.
89 *
90 * @return <code>true</code>, <code>false</code> or <code>null</code>.
91 */
92 public Object generate() {
93
94 if (nulls != 0 && random.nextInt(101) <= nulls) {
95 return null;
96 }
97
98 if (probability != 0 && random.nextInt(101) <= probability) {
99 return Boolean.valueOf(true);
100 }
101 return Boolean.valueOf(false);
102 }
103
104 /***
105 * Returns the probability.
106 *
107 * @return number of <code>true</code> per each 100 generatied values.
108 */
109 public int getProbability() {
110 return probability;
111 }
112
113 /***
114 * Sets the probability.
115 *
116 * @param prob probability
117 */
118 public void setProbability(int prob) {
119 probability = Converter.checkNulls(prob);
120 }
121
122 /***
123 * Reset generator.
124 */
125 public void reset() {
126 }
127 }