KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > campware > cream > modules > actions > NewsletterSubscription


1 package org.campware.cream.modules.actions;
2
3 /* ====================================================================
4  * Copyright (C) 2003-2005 Media Development Loan Fund
5  *
6  * * contact: contact@campware.org - http://www.campware.org
7  * Campware encourages further development. Please let us know.
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * as published by the Free Software Foundation; either version 2
12  * of the License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22  *
23  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
24  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
27  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  * ====================================================================
36  *
37  * This software consists of voluntary contributions made by many
38  * individuals on behalf of the Apache Software Foundation. For more
39  * information on the Apache Software Foundation, please see
40  * <http://www.apache.org/>.
41  */

42
43 import java.util.Date JavaDoc;
44 import java.util.Enumeration JavaDoc;
45
46 import org.apache.velocity.context.Context;
47
48 import org.apache.turbine.Turbine;
49 import org.apache.turbine.util.RunData;
50 import org.apache.turbine.util.parser.ParameterParser;
51 import org.apache.torque.util.Criteria;
52 import org.apache.torque.util.Transaction;
53
54 import java.sql.Connection JavaDoc;
55
56 import org.campware.cream.om.NewsSubscription;
57 import org.campware.cream.om.NewsSubscriptionPeer;
58 import org.campware.cream.om.Project;
59 import org.campware.cream.om.ProjectPeer;
60 import org.campware.cream.om.Product;
61 import org.campware.cream.om.ProductPeer;
62
63 /**
64  * This class provides a simple set of methods to
65  * insert/update/delete records in a database.
66  */

67 public class NewsletterSubscription extends CreamPublicAction
68 {
69     protected void initScreen()
70     {
71         setModuleType(DOCUMENT);
72         setModuleName("NEWSLETTER_SUBSCRIPTION");
73     }
74     /**
75      * This simply takes an entry from the web form and
76      * inserts it directly into the database.
77      *
78      */

79     public void doSubscribe(RunData data, Context context)
80         throws Exception JavaDoc
81     {
82
83         String JavaDoc urlOk= data.getParameters().getString("urlok", "NONE");
84         String JavaDoc urlError= data.getParameters().getString("urlerror", "NONE");
85
86         try{
87
88             String JavaDoc subsEmail= data.getParameters().getString("email");
89             String JavaDoc subsNotes= data.getParameters().getString("notes");
90             int subsStatus= data.getParameters().getInt("status", 30);
91             String JavaDoc projCode= data.getParameters().getString("campaignid", "NONE");
92             int projId = 1000;
93
94             if (!projCode.equalsIgnoreCase("NONE")){
95                 Criteria projCriteria = new Criteria();
96                 projCriteria.add(ProjectPeer.PROJECT_CODE, projCode);
97                 Project projEntry = (Project) ProjectPeer.doSelect(projCriteria).get(0);
98                 projId= projEntry.getProjectId();
99             }
100             
101             ParameterParser pp= data.getParameters();
102             Enumeration JavaDoc paramKeys= pp.keys();
103             
104             while(paramKeys.hasMoreElements()) {
105                 String JavaDoc paramName = paramKeys.nextElement().toString();
106                 if(paramName.startsWith("productid")) {
107                     String JavaDoc suffix=paramName.substring(9, paramName.length());
108                     
109                     NewsSubscription entry = new NewsSubscription();
110                     int prodId=1000;
111                     String JavaDoc prodCode= pp.getString("productid" + suffix, "NONE");
112                     if (!prodCode.equalsIgnoreCase("NONE")){
113                         Criteria prodCriteria = new Criteria();
114                         prodCriteria.add(ProductPeer.PRODUCT_CODE, prodCode);
115                         Product prodEntry = (Product) ProductPeer.doSelect(prodCriteria).get(0);
116                         prodId= prodEntry.getProductId();
117                     }
118                     entry.setNewsSubsCode(getTempCode());
119
120                     entry.setIssuedDate(new Date JavaDoc());
121                     entry.setCreatedBy("system");
122                     entry.setCreated(new Date JavaDoc());
123                     entry.setModifiedBy("system");
124                     entry.setModified(new Date JavaDoc());
125
126                     entry.setEmail(subsEmail);
127                     entry.setStatus(subsStatus);
128                     entry.setNotes(subsNotes);
129                     entry.setProductId(prodId);
130                     entry.setProjectId(projId);
131
132                     Connection JavaDoc conn = Transaction.begin(NewsSubscriptionPeer.DATABASE_NAME);
133                     boolean success = false;
134                     try {
135                         entry.save(conn);
136                         entry.setNewsSubsCode(getRowCode("NS", entry.getNewsSubsId()));
137                         entry.save(conn);
138                         Transaction.commit(conn);
139                         success = true;
140
141                     } finally {
142                         if (!success) Transaction.safeRollback(conn);
143                     }
144
145                 }
146             }
147
148             if (!urlOk.equalsIgnoreCase("NONE")){
149                 data.setRedirectURI (urlOk);
150                 data.setStatusCode(302);
151             }else{
152               this.setTemplate( data, "NewsletterSubscribeOk.vm");
153             }
154
155         }catch (Exception JavaDoc e){
156             if (!urlError.equalsIgnoreCase("NONE")){
157                 data.setRedirectURI (urlError);
158                 data.setStatusCode(302);
159             }else{
160               this.setTemplate( data, "NewsletterSubscribeError.vm");
161             }
162         }
163         
164         
165     }
166
167     /**
168      * Delete a record from the database using
169      * the unique id gleaned from the web form.
170      */

171     public void doUnsubscribe(RunData data, Context context)
172         throws Exception JavaDoc
173     {
174
175         String JavaDoc urlOk= Turbine.getConfiguration().getString("news.unsubscribe.url.ok", "Default");
176         String JavaDoc urlError= Turbine.getConfiguration().getString("news.unsubscribe.url.error", "Default");
177
178         try{
179             Criteria criteria = new Criteria();
180             criteria.add(NewsSubscriptionPeer.NEWS_SUBS_CODE, data.getParameters().getString("subscriptionid"));
181             criteria.add(NewsSubscriptionPeer.EMAIL, data.getParameters().getString("email"));
182             NewsSubscription subsEntry = (NewsSubscription) NewsSubscriptionPeer.doSelect(criteria).get(0);
183
184             subsEntry.setStatus(50);
185             subsEntry.setClosedDate(new Date JavaDoc());
186             subsEntry.setModifiedBy("system");
187             subsEntry.setModified(new Date JavaDoc());
188
189             subsEntry.setModified(true);
190             subsEntry.setNew(false);
191             subsEntry.save();
192             
193             if (!urlOk.equalsIgnoreCase("Default")){
194                 data.setRedirectURI (urlOk);
195                 data.setStatusCode(302);
196             }else{
197               this.setTemplate( data, "NewsletterUnsubscribeOk.vm");
198             }
199         }catch (Exception JavaDoc e){
200             if (!urlError.equalsIgnoreCase("Default")){
201                 data.setRedirectURI (urlError);
202                 data.setStatusCode(302);
203             }else{
204               this.setTemplate( data, "NewsletterUnsubscribeError.vm");
205             }
206         }
207         
208     }
209
210 }
211
Popular Tags