01: /*
02: * (c) Copyright 2006 by Volker Bergmann. All rights reserved.
03: *
04: * Redistribution and use in source and binary forms, with or without
05: * modification, is permitted under the terms of the
06: * GNU General Public License.
07: *
08: * For redistributing this software or a derivative work under a license other
09: * 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 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 org.databene.benerator.csv;
28:
29: import org.databene.benerator.sample.WeightedCSVSampleGenerator;
30: import org.databene.commons.Converter;
31: import org.databene.commons.converter.NoOpConverter;
32: import org.databene.region.Region;
33: import org.databene.region.RegionUtil;
34:
35: /**
36: * Generates data from a regionalized csv file.
37: * For different regions, different CSV versions may be provided by appending region suffixes,
38: * similar to the JDK ResourceBundle handling.<br/>
39: * <br/>
40: * Created: 07.06.2007 17:14:04
41: * @author Volker Bergmann
42: */
43: public class RegionalCSVGenerator<E> extends
44: WeightedCSVSampleGenerator<E> {
45:
46: private String baseName;
47: private Region region;
48: private String suffix;
49:
50: // constructors ----------------------------------------------------------------------------------------------------
51:
52: public RegionalCSVGenerator() {
53: this (null, null);
54: }
55:
56: public RegionalCSVGenerator(String baseName, String suffix) {
57: this (baseName, Region.getDefault(), suffix);
58: }
59:
60: public RegionalCSVGenerator(String baseName, Region region,
61: String suffix) {
62: this (baseName, region, suffix, NoOpConverter.getInstance());
63: }
64:
65: public RegionalCSVGenerator(String baseName, Region region,
66: String suffix, Converter<String, E> converter) {
67: super (url(baseName, region, suffix), converter);
68: this .baseName = baseName;
69: this .region = region;
70: this .suffix = suffix;
71: }
72:
73: // properties ------------------------------------------------------------------------------------------------------
74:
75: public Region getRegion() {
76: return region;
77: }
78:
79: public void setRegion(Region region) {
80: super .setUrl(url(baseName, region, suffix));
81: this .region = region;
82: }
83:
84: // java.lang.Object overrides --------------------------------------------------------------------------------------
85:
86: public String toString() {
87: return getClass().getSimpleName() + '[' + baseName + ','
88: + region + ',' + suffix + ']';
89: }
90:
91: // private helpers -------------------------------------------------------------------------------------------------
92:
93: private static String url(String baseName, Region region,
94: String suffix) {
95: return RegionUtil.availableRegionUrl(baseName, region, suffix); // TODO v0.5 consider nested sets
96: }
97:
98: }
|