head	1.6;
access;
symbols;
locks; strict;
comment	@# @;


1.6
date	2001.08.28.00.56.12;	author leonardr;	state Exp;
branches;
next	1.5;

1.5
date	2001.08.11.09.08.01;	author dlr;	state Exp;
branches;
next	1.4;

1.4
date	2001.07.24.00.02.27;	author leonardr;	state Exp;
branches;
next	1.3;

1.3
date	2001.07.18.10.05.12;	author dlr;	state Exp;
branches;
next	1.2;

1.2
date	2001.07.17.17.55.44;	author leonardr;	state Exp;
branches;
next	1.1;

1.1
date	2001.06.29.00.57.48;	author leonardr;	state Exp;
branches;
next	;


desc
@@


1.6
log
@Moved code out of BaseHelmServlet and into other classes which suit it better.
@
text
@/* ================================================================
 * Copyright (c) 2001 CollabNet.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by CollabNet (http://www.collab.net/)."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" name
 * nor may "Tigris" appear in their names without prior written
 * permission of CollabNet.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of CollabNet.
 */

package org.tigris.helm.domain;

import java.sql.*;
import java.util.*;

import org.apache.velocity.context.Context;

import org.apache.turbine.util.Log;
import org.apache.commons.util.exception.NestableException;

import org.tigris.helm.security.RedirectException;

import org.tigris.helm.security.*;

import org.tigris.helm.om.*;
import org.tigris.helm.tool.ContextAPI;

/**
 * Add projects to a category.
 *
 * @@author <a href="mailto:leonardr@@collab.net">Leonard Richardson</a>
 * @@version $Id: CategoryElementAdd.java,v 1.5 2001/08/11 09:08:01 dlr Exp $
 */
public class CategoryElementAdd extends HelmServlet 
{
    /**
     * Whether or not to log debugging information.
     */
    private static boolean DEBUG = true;

    /**
     * Action indicationg that projects should be added.
     */
    private static String ADD_ELEMENTS_ACTION="Add to Category";

    /**
     * Prefix indicating that a project should be added.
     */
    private static String ADD_ELEMENT_FIELD_PREFIX="Add ";

    /**
     * Servlet to redirect to following success.
     */
    private static String SUCCESS_REDIRECT_TARGET = 
        "CategoryEdit?categoryID=";

    /**
     * Add some projects to the category.
     */
    protected String processRequest(Context context)
	throws NestableException, RedirectException
    {
	String templateName = super.processRequest(context);
        try 
        {
            String action = getAction(context);

            if (ADD_ELEMENTS_ACTION.equals(action))
            {
                Domain currentDomain = getCurrentDomain(context);
                AccessControlList acl = getLoginUser(context).getACL();
                Category category = getCurrentCategory(context);
                
                //Add elements to the project group.
                List projects = ContextAPI.searchParamsForPrefix
                    (context, ADD_ELEMENT_FIELD_PREFIX);
                for (Iterator i = projects.iterator(); i.hasNext();)
                {
                    Project project = 
                        ProjectPeer.getInstance((String)i.next());
                    category.associate(acl, project);
                }
                String msg = String.valueOf(projects.size())
                    + " project" + (projects.size() == 1?"":"s")
                    + " added.";
                ContextAPI.addMessage(context, msg);

                redirectToURL
                    (context, currentDomain.getDomainHomeServletURL
                     (SUCCESS_REDIRECT_TARGET+category.getID()));
            }
        } 
        catch (RedirectException e) 
        {
            throw e;
        } 
        catch (Exception e) 
        {
            String msg = "Couldn't add element to category: " +
                e.getMessage();
            Log.error(msg, e);
            throw new NestableException(e);
        }

        return templateName;  
    }
}
@


1.5
log
@Upgrading to Turbine 3.0-dev, Fulcrum 1.0, and Torque 1.0.
@
text
@d68 1
a68 1
 * @@version $Id: CategoryElementAdd.java,v 1.4 2001/07/24 00:02:27 leonardr Exp $
d111 1
a111 1
                List projects = searchParamsForPrefix
@


1.4
log
@The final pieces of the error handling revolution.
@
text
@d55 1
a55 1
import org.apache.turbine.util.TurbineException;
d68 1
a68 1
 * @@version $Id: CategoryElementAdd.java,v 1.3 2001/07/18 10:05:12 dlr Exp $
d97 1
a97 1
	throws TurbineException, RedirectException
d138 1
a138 1
            throw new TurbineException(e);
@


1.3
log
@Ported Joist Redirect*Exception to Helm.
@
text
@d68 1
a68 1
 * @@version $Id: CategoryElementAdd.java,v 1.2 2001/07/17 17:55:44 leonardr Exp $
d122 1
a122 1
                appendToMessage(context, msg);
@


1.2
log
@Porting of domain package to new error handling API.
@
text
@d57 1
a57 1
import org.joist.security.RedirectException;
d68 1
a68 1
 * @@version $Id: CategoryElementAdd.java,v 1.1 2001/06/29 00:57:48 leonardr Exp $
@


1.1
log
@Implemented basic project group and category nesting.
@
text
@d62 1
d68 1
a68 1
 * @@version $Id: ProjectGroupElementAdd.java,v 1.2 2001/05/23 01:50:10 dlr Exp $
a102 2
            List missingFields = new ArrayList();
            List validationErrors = new ArrayList();
@

