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.benerator.NonNullGenerator; 31 32 /** 33 * Parent interface for all distribution types.<br/> 34 * <br/> 35 * Created: 11.09.2006 21:31:54 36 * 37 * @author Volker Bergmann 38 * @version 0.1 39 */ 40 public interface Distribution { 41 /** 42 * Create number generator non null generator. 43 * 44 * @param <T> the type parameter 45 * @param numberType the number type 46 * @param min the min 47 * @param max the max 48 * @param granularity the granularity 49 * @param unique the unique 50 * @return the non null generator 51 */ 52 <T extends Number> NonNullGenerator<T> createNumberGenerator( 53 Class<T> numberType, T min, T max, T granularity, boolean unique); 54 55 /** 56 * Apply to generator. 57 * 58 * @param <T> the type parameter 59 * @param source the source 60 * @param unique the unique 61 * @return the generator 62 */ 63 <T> Generator<T> applyTo(Generator<T> source, boolean unique); 64 }