KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectstyle > cayenne > conf > RuntimeSaveDelegate


1 /* ====================================================================
2  *
3  * The ObjectStyle Group Software License, version 1.1
4  * ObjectStyle Group - http://objectstyle.org/
5  *
6  * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
7  * of the software. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution, if any,
22  * must include the following acknowlegement:
23  * "This product includes software developed by independent contributors
24  * and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
25  * Alternately, this acknowlegement may appear in the software itself,
26  * if and wherever such third-party acknowlegements normally appear.
27  *
28  * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
29  * or promote products derived from this software without prior written
30  * permission. For written permission, email
31  * "andrus at objectstyle dot org".
32  *
33  * 5. Products derived from this software may not be called "ObjectStyle"
34  * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
35  * names without prior written permission.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals and hosted on ObjectStyle Group web site. For more
53  * information on the ObjectStyle Group, please see
54  * <http://objectstyle.org/>.
55  */

56 package org.objectstyle.cayenne.conf;
57
58 import java.util.ArrayList JavaDoc;
59 import java.util.Collection JavaDoc;
60 import java.util.Iterator JavaDoc;
61 import java.util.List JavaDoc;
62
63 import org.apache.commons.collections.Transformer;
64 import org.apache.commons.collections.iterators.TransformIterator;
65 import org.objectstyle.cayenne.access.DataDomain;
66 import org.objectstyle.cayenne.access.DataNode;
67 import org.objectstyle.cayenne.dba.DbAdapter;
68 import org.objectstyle.cayenne.map.DataMap;
69
70 /**
71  * Save delegate used for saving Cayenne access stack.
72  *
73  * @author Andrei Adamchik
74  */

75 public class RuntimeSaveDelegate implements ConfigSaverDelegate {
76     protected Configuration config;
77
78     public RuntimeSaveDelegate(Configuration config) {
79         this.config = config;
80     }
81
82     /**
83      * Constructor for RuntimeSaveDelegate.
84      */

85     public RuntimeSaveDelegate() {
86         super();
87     }
88
89     protected DataDomain findDomain(String JavaDoc domainName) {
90         DataDomain domain = config.getDomain(domainName);
91         if (domain == null) {
92             throw new IllegalArgumentException JavaDoc("Can't find DataDomain: " + domainName);
93         }
94
95         return domain;
96     }
97
98     protected DataNode findNode(String JavaDoc domainName, String JavaDoc nodeName) {
99         DataDomain domain = findDomain(domainName);
100         DataNode node = domain.getNode(nodeName);
101         if (node == null) {
102             throw new IllegalArgumentException JavaDoc(
103                 "Can't find DataNode: " + domainName + "." + nodeName);
104         }
105
106         return node;
107     }
108     
109     /**
110      * @since 1.1
111      */

112     public String JavaDoc projectVersion() {
113         return config.getProjectVersion();
114     }
115
116     public Iterator JavaDoc domainNames() {
117         Transformer tr = new Transformer() {
118             public Object JavaDoc transform(Object JavaDoc input) {
119                 return ((DataDomain) input).getName();
120             }
121         };
122         return new TransformIterator(config.getDomains().iterator(), tr);
123     }
124     
125     /**
126      * @since 1.1
127      */

128     public Iterator JavaDoc viewNames() {
129         return config.getDataViewLocations().keySet().iterator();
130     }
131
132     /**
133      * @since 1.1
134      */

135     public String JavaDoc viewLocation(String JavaDoc dataViewName) {
136         return (String JavaDoc) config.getDataViewLocations().get(dataViewName);
137     }
138
139     public Iterator JavaDoc propertyNames(String JavaDoc domainName) {
140         return findDomain(domainName).getProperties().keySet().iterator();
141     }
142
143     public String JavaDoc propertyValue(String JavaDoc domainName, String JavaDoc propertyName) {
144         return (String JavaDoc) findDomain(domainName).getProperties().get(propertyName);
145     }
146
147     public String JavaDoc mapLocation(String JavaDoc domainName, String JavaDoc mapName) {
148         return findDomain(domainName).getMap(mapName).getLocation();
149     }
150
151     public Iterator JavaDoc mapNames(String JavaDoc domainName) {
152         Transformer tr = new Transformer() {
153             public Object JavaDoc transform(Object JavaDoc input) {
154                 return ((DataMap) input).getName();
155             }
156         };
157
158         List JavaDoc maps = new ArrayList JavaDoc(findDomain(domainName).getDataMaps());
159         return new TransformIterator(maps.iterator(), tr);
160     }
161
162     public String JavaDoc nodeAdapterName(String JavaDoc domainName, String JavaDoc nodeName) {
163         DbAdapter adapter = findNode(domainName, nodeName).getAdapter();
164         return (adapter != null) ? adapter.getClass().getName() : null;
165     }
166
167     public String JavaDoc nodeDataSourceName(String JavaDoc domainName, String JavaDoc nodeName) {
168         return findNode(domainName, nodeName).getDataSourceLocation();
169     }
170
171     public String JavaDoc nodeFactoryName(String JavaDoc domainName, String JavaDoc nodeName) {
172         return findNode(domainName, nodeName).getDataSourceFactory();
173     }
174
175     public Iterator JavaDoc nodeNames(String JavaDoc domainName) {
176         Transformer tr = new Transformer() {
177             public Object JavaDoc transform(Object JavaDoc input) {
178                 return ((DataNode) input).getName();
179             }
180         };
181
182         Collection JavaDoc nodes = findDomain(domainName).getDataNodes();
183         return new TransformIterator(nodes.iterator(), tr);
184     }
185
186     public Iterator JavaDoc linkedMapNames(String JavaDoc domainName, String JavaDoc nodeName) {
187         Transformer tr = new Transformer() {
188             public Object JavaDoc transform(Object JavaDoc input) {
189                 return ((DataMap) input).getName();
190             }
191         };
192
193         Collection JavaDoc maps = findNode(domainName, nodeName).getDataMaps();
194         return new TransformIterator(maps.iterator(), tr);
195     }
196 }
197
Popular Tags