1 package org.apache.jetspeed.om.dbpsml;
2
3
4 import java.util.List;
5 import java.sql.Connection;
6
7
8
9 import org.apache.torque.util.Criteria;
10 import org.apache.torque.util.BasePeer;
11
12 import org.apache.jetspeed.om.security.Group;
13 import org.apache.jetspeed.om.profile.Profile;
14 import org.apache.jetspeed.om.profile.ProfileLocator;
15 import org.apache.jetspeed.services.psmlmanager.db.DBOperations;
16 import org.apache.jetspeed.services.psmlmanager.db.DBUtils;
17 import org.apache.jetspeed.services.psmlmanager.db.DatabasePsmlManager;
18 import org.apache.jetspeed.services.PsmlManager;
19 import org.apache.jetspeed.services.Profiler;
20
21 /***
22 * The skeleton for this class was autogenerated by Torque on:
23 *
24 * [Mon Sep 10 13:30:53 PDT 2001]
25 *
26 * You should add additional methods to this class to meet the
27 * application requirements. This class will only be generated as
28 * long as it does not already exist in the output directory.
29 *
30 * @author <a href="mailto:adambalk@cisco.com">Atul Dambalkar</a>
31 * @version $Id: JetspeedGroupProfilePeer.java,v 1.13 2003/08/13 04:18:17 taylor Exp $
32 */
33 public class JetspeedGroupProfilePeer
34 extends org.apache.jetspeed.om.dbpsml.BaseJetspeedGroupProfilePeer
35 implements DBOperations
36 {
37
38 /***
39 * Default constructor.
40 */
41 public JetspeedGroupProfilePeer() {}
42
43
44 /***
45 * Insert a group profile record in the database table.
46 *
47 * @param profile Profile object that will be inserted in the database
48 * @param connection A database connection to use
49 */
50 public void insert(Profile profile, Connection connection) throws Exception
51 {
52 doInsertOrUpdate(profile, INSERT, connection);
53 }
54
55 /***
56 * Update group profile record from the database table.
57 *
58 * @param profile Profile object that will be deleted from the database
59 * @param connection A database connection to use
60 */
61 public void update(Profile profile, Connection connection) throws Exception
62 {
63 doInsertOrUpdate(profile, UPDATE, connection);
64 }
65
66
67 private void doInsertOrUpdate(Profile profile, int operation, Connection connection)
68 throws Exception
69 {
70 JetspeedGroupProfile groupProfile = new JetspeedGroupProfile();
71 DatabasePsmlManager service = (DatabasePsmlManager)PsmlManager.getService();
72
73 groupProfile.setGroupName(profile.getGroup().getName());
74 groupProfile.setMediaType(profile.getMediaType());
75
76 String language = profile.getLanguage();
77 if(language != null && (!language.equals("-1")))
78 {
79 groupProfile.setLanguage(language);
80 }
81 else
82 {
83 groupProfile.setLanguage(null);
84 }
85
86 String country = profile.getCountry();
87 if(country != null && (!country.equals("-1")))
88 {
89 groupProfile.setCountry(country);
90 }
91 else
92 {
93 groupProfile.setCountry(null);
94 }
95 String name = profile.getName();
96 if (name == null || name.equals(""))
97 {
98 profile.setName(Profiler.FULL_DEFAULT_PROFILE);
99 }
100 else if (!name.endsWith(Profiler.DEFAULT_EXTENSION))
101 {
102 profile.setName(name + Profiler.DEFAULT_EXTENSION);
103 }
104 groupProfile.setPage(profile.getName());
105 groupProfile.setProfile(DBUtils.portletsToBytes(
106 profile.getDocument().getPortlets(), service.getMapping()));
107
108 if (operation == INSERT)
109 {
110 super.doInsert(groupProfile, connection);
111 }
112 else if (operation == UPDATE)
113 {
114 Criteria values = buildCriteria(groupProfile);
115 Criteria select = buildCriteria(groupProfile);
116 select.remove(PROFILE);
117 BasePeer.doUpdate( select, values, connection );
118 }
119 }
120
121
122 /***
123 * Delete group profile record from the database table.
124 *
125 * @param profile Profile object that will be deleted from the database
126 * @param connection A database connection to use
127 */
128 public void delete(ProfileLocator locator, Connection connection) throws Exception
129 {
130 super.doDelete(buildCriteria(locator), connection);
131 }
132
133 /***
134 * Select group profile record from the database table for the given
135 * locator object.
136 *
137 * @param locator ProfileLocator object that will be used to select required
138 * profile from the database
139 * @param connection A database connection to use
140 * @return List of records that statisfy the given locator criteria.
141 */
142 public List select(ProfileLocator locator, Connection connection) throws Exception
143 {
144 return super.doSelect(buildCriteria(locator), connection);
145 }
146
147 /***
148 * Select group profile record from the database table for the given
149 * locator object and return list ordered by primary key..
150 *
151 * @param locator ProfileLocator object that will be used to select required
152 * profile from the database
153 * @param connection A database connection to use
154 * @return List of records that statisfy the given locator criteria.
155 */
156 public List selectOrdered(ProfileLocator locator, Connection connection) throws Exception
157 {
158 Criteria criteria = buildCriteria(locator);
159
160 criteria.addAscendingOrderByColumn(GROUP_NAME);
161 criteria.addAscendingOrderByColumn(MEDIA_TYPE);
162 criteria.addAscendingOrderByColumn(LANGUAGE);
163 criteria.addAscendingOrderByColumn(COUNTRY);
164 criteria.addAscendingOrderByColumn(PAGE);
165
166 return super.doSelect(criteria, connection);
167 }
168
169 /***
170 * Delete all records from the database table for a group.
171 *
172 * @param group Group object for which all the records will be deleted from the database
173 * @param connection A database connection to use
174 */
175 public void delete(Group group, Connection connection) throws Exception
176 {
177 Criteria criteria = new Criteria();
178
179 criteria.add(GROUP_NAME, group.getName());
180
181 super.doDelete(criteria, connection);
182 }
183
184
185
186
187
188
189 protected Criteria buildCriteria(ProfileLocator locator)
190 {
191 Criteria criteria = new Criteria();
192
193 String mediaType = locator.getMediaType();
194 String language = locator.getLanguage();
195 String country = locator.getCountry();
196 String pageName = locator.getName();
197 String groupName = null;
198
199 Group group = locator.getGroup();
200 if (group != null) {
201 groupName = group.getName();
202 }
203
204 if (groupName != null && groupName.length() > 0)
205 {
206 criteria.add(GROUP_NAME, groupName);
207 }
208
209 if (pageName != null && pageName.length() > 0)
210 {
211 criteria.add(PAGE, pageName);
212 }
213
214 if (mediaType != null && mediaType.length() > 0)
215 {
216 criteria.add(MEDIA_TYPE, locator.getMediaType());
217 }
218
219 if (language != null && language.length() > 0 && (!language.equals("-1")))
220 {
221 criteria.add(LANGUAGE, language);
222 }
223 else if(language != null && language.equals("-1"))
224 {
225 criteria.add(LANGUAGE, null);
226 }
227
228 if (country != null && country.length() > 0 && (!country.equals("-1")))
229 {
230 criteria.add(COUNTRY, country);
231 }
232 else if(country != null && country.equals("-1"))
233 {
234 criteria.add(COUNTRY, null);
235 }
236
237 return criteria;
238 }
239
240 }
241