/* * NoticeTransformer.java * * Version: $Revision: 3705 $ * * Date: $Date: 2009-04-11 17:02:24 +0000 (Sat, 11 Apr 2009) $ * * Copyright (c) 2002, Hewlett-Packard Company and Massachusetts * Institute of Technology. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - 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. * * - Neither the name of the Hewlett-Packard Company nor the name of the * Massachusetts Institute of Technology nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS 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 THE COPYRIGHT * HOLDERS OR 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. */ package org.dspace.app.xmlui.aspect.general; import java.sql.SQLException; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.wing.Message; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.Body; import org.dspace.app.xmlui.wing.element.Division; import org.dspace.authorize.AuthorizeException; /** * This class will add a simple notification div the DRI document. Typicaly * this transformer is used after an action has been preformed to let the * user know if an operation succeded or failed. * * The possible paramaters are: * * outcome: The outcome determines whether the notice is positive or negative. * Possible values are: "success", "failure", or "netural". If no values are * supplied then netural is assumed. * * header: An i18n dictionary key referencing the text that should be used * as a header for this notice. * * message: An i18n dictionary key refrencing the text that should be used as * the content for this notice. * * characters: Plain text string that should be used as the content for this * notice. Normaly all messages should be i18n dictionary keys however this * parameter is usefull for error messages that are not nessasarly translated. * * All parameters are optional but you must supply at least the message or the * characters * * * * Examlpe: * <map:transformer type="notice"> * <map:parameter name="outcome" value="success"/> * <map:parameter name="message" value="xmlui.<aspect>.<class>.<type>"/> * </map:transformer> * * @author Scott Phillips * @author Alexey Maslov */ public class NoticeTransformer extends AbstractDSpaceTransformer { /** Language Strings */ private static final Message T_head = message("xmlui.general.notice.default_head"); /** * Add the notice div to the body. */ public void addBody(Body body) throws WingException, SQLException, AuthorizeException { String outcome = parameters.getParameter("outcome",null); String header = parameters.getParameter("header",null); String message = parameters.getParameter("message",null); String characters = parameters.getParameter("characters",null); if ((message == null || message.length() <= 0) && (characters == null || characters.length() <= 0)) throw new WingException("No message found."); String rend = "notice"; if ("netural".equals(outcome)) rend += " netural"; else if ("success".equals(outcome)) rend += " success"; else if ("failure".equals(outcome)) rend += " failure"; Division div = body.addDivision("general-message",rend); if ((header != null) && (!"".equals(header))) div.setHead(message(header)); else div.setHead(T_head); if (message != null && message.length() > 0) div.addPara(message(message)); if (characters != null && characters.length() > 0) div.addPara(characters); } }