/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.squaleweb.tagslib;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.ResponseUtils;
import org.squale.squaleweb.resources.WebMessages;
/**
* pour tout ce qui concerne les infos sur les diff�rent(e)s facteurs/crit�res/pratiques
*/
public class InformationTag
extends TagSupport
{
/** le nom permettant de d�finir la variable utilis�e dans le tag */
private String name;
/** le nom de la pratique */
private String practiceName;
/**
* l'id de l'�l�ment qualim�trique
*/
private String ruleId;
/**
* @see javax.servlet.jsp.tagext.TagSupport#doEndTag() {@inheritDoc} M�thode de lancement du tag
*/
public int doStartTag()
throws JspException
{
// Publie
ResponseUtils.write( pageContext, makeResult( (String) RequestUtils.lookup( pageContext, name, practiceName,
null ),
(String) RequestUtils.lookup( pageContext, name, ruleId, null ),
(HttpServletRequest) pageContext.getRequest() ) );
return SKIP_BODY;
}
/**
* @return le code pour l'image permettant d'afficher les informations sur le facteur/crit�re/pratique
* @param practiceKey le nom (sous forme de cl�) de la pratique
* @param pRequest la requete http
* @param ruleIdValue l'id de la r�gle
*/
private String makeResult( String practiceKey, String ruleIdValue, HttpServletRequest pRequest )
{
String realName = WebMessages.getString( pRequest, practiceKey );
// determine si un identifiant a �t� indiqu�
// si oui on le prend sinon on utilise le nom comme rep�re
String pictureHelp =
( WebMessages.getString( pRequest, "project.results.factors.information" ) + ": " + realName ).replaceAll(
"\"",
"" );
// il ne faut pas passer le nom r�el mais le nom sous forme de cl� (rule.xxx ....)
String result =
"<a href=\"javascript:display_popup('information.do?action=retrieveInformation&elementName=" + practiceKey
+ "&ruleId=" + ruleIdValue + "','popup_1');\" class=\"nobottom\"> " + "<img src=\""
+ "images/pictos/icon_catalog.gif\" title=\""
// pour �chapper les quotes, il est necessaire de les remplacer par " \' "
+ pictureHelp.replaceAll( "'", "\\\\'" ) + "\" border=\"0\" /> </a>";
return result;
}
/**
* @see javax.servlet.jsp.tagext.TagSupport#doEndTag() {@inheritDoc} M�thode de lancement du tag
*/
public int doEndTag()
throws JspException
{
return EVAL_PAGE;
}
/**
* @return le nom utilis� dans le tag
*/
public String getName()
{
return name;
}
/**
* @param newUsedName le nouveau nom
*/
public void setName( String newUsedName )
{
name = newUsedName;
}
/**
* @return l'id de l'�l�ment qualim�trique
*/
public String getRuleId()
{
return ruleId;
}
/**
* @param newId le nouvel id du composant
*/
public void setRuleId( String newId )
{
ruleId = newId;
}
/**
* @return le nom de la pratique
*/
public String getPracticeName()
{
return practiceName;
}
/**
* @param newPracticeName le nouveau nom
*/
public void setPracticeName( String newPracticeName )
{
practiceName = newPracticeName;
}
}