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.distribution;
28
29 import com.rapiddweller.benerator.Generator;
30 import com.rapiddweller.common.BeanUtil;
31 import com.rapiddweller.common.ConfigurationError;
32
33 /**
34 * Provides access to specific Sequence number Generators.<br/>
35 * <br/>
36 * Created: 11.09.2006 21:12:57
37 *
38 * @author Volker Bergmann
39 * @since 0.1
40 */
41 public abstract class Sequence implements Distribution {
42
43 // interface -------------------------------------------------------------------------------------------------------
44
45 @Override
46 public <T> Generator<T> applyTo(Generator<T> source, boolean unique) {
47 if (source == null) {
48 throw new ConfigurationError("No source provided");
49 }
50 return new IndexBasedSampleGeneratorProxy<>(source, this, unique);
51 }
52
53 // java.lang.Object overrides --------------------------------------------------------------------------------------
54
55 @Override
56 public String toString() {
57 return BeanUtil.toString(this);
58 }
59
60 }