/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program 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 General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.enterprise.gui.legacy.taglib.display;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.enterprise.gui.legacy.util.TaglibUtils;
/**
* Re-evaluate the value to be display by the column
*/
public class PathDecorator extends BaseDecorator {
private static Log log = LogFactory.getLog(PathDecorator.class.getName());
private boolean strict = false;
private int postChars;
private int preChars;
private String styleClass = null;
/**
* If string column value exists, use that. Otherwise, return 2nd choice.
*
* @see org.apache.taglibs.display.ColumnDecorator#decorate(java.lang.Object)
*/
public String decorate(Object columnValue) {
String realPath = columnValue.toString();
String shortPath = TaglibUtils.shortenPath(columnValue.toString(), preChars, postChars, strict);
if (realPath.equals(shortPath)) {
return realPath;
}
if (styleClass == null) {
return shortPath;
}
return "<a href=\"#\" class=\"" + styleClass + "\">" + shortPath + "<span>" + realPath + "</span></a>";
}
public int doStartTag() throws JspTagException {
ColumnTag ancestorTag = (ColumnTag) TagSupport.findAncestorWithClass(this, ColumnTag.class);
if (ancestorTag == null) {
throw new JspTagException("A valueDecorator must be used within a ColumnTag.");
}
ancestorTag.setDecorator(this);
return EVAL_BODY_INCLUDE;
}
public void release() {
styleClass = null;
super.release();
}
public int getPostChars() {
return postChars;
}
public void setPostChars(int postChars) {
this.postChars = postChars;
}
public int getPreChars() {
return preChars;
}
public void setPreChars(int preChars) {
this.preChars = preChars;
}
public boolean isStrict() {
return strict;
}
public void setStrict(boolean strict) {
this.strict = strict;
}
public String getStyleClass() {
return styleClass;
}
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
}