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.composite;
28
29 import com.rapiddweller.benerator.Generator;
30 import com.rapiddweller.common.Mutator;
31 import com.rapiddweller.common.UpdateFailedException;
32 import com.rapiddweller.model.data.Entity;
33
34 /**
35 * Builds a plain (atomic) component that is supposed to have a name.<br/><br/>
36 * Created at 09.05.2008 07:20:43
37 *
38 * @author Volker Bergmann
39 * @since 0.5.4
40 */
41 public class PlainEntityComponentBuilder extends AbstractComponentBuilder<Entity> {
42
43 /**
44 * Instantiates a new Plain entity component builder.
45 *
46 * @param name the name
47 * @param source the source
48 * @param scope the scope
49 */
50 public PlainEntityComponentBuilder(String name, Generator<?> source, String scope) {
51 super(source, new Mutator_(name), scope);
52 }
53
54 /**
55 * Gets name.
56 *
57 * @return the name
58 */
59 public String getName() {
60 return ((Mutator_) mutator).name;
61 }
62
63 @Override
64 public String toString() {
65 return getClass().getSimpleName() + '{' + getName() + ", " + source + '}';
66 }
67
68 private static class Mutator_ implements Mutator {
69
70 /**
71 * The Name.
72 */
73 final String name;
74
75 /**
76 * Instantiates a new Mutator.
77 *
78 * @param name the name
79 */
80 public Mutator_(String name) {
81 this.name = name;
82 }
83
84 @Override
85 public void setValue(Object target, Object value) throws UpdateFailedException {
86 ((Entity) target).setComponent(name, value);
87 }
88
89 @Override
90 public String toString() {
91 return name;
92 }
93 }
94
95 }