/**
* Licensed under the Artistic License; you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://displaytag.sourceforge.net/license.html
*
* THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.displaytag.sample.decorators;
import java.text.DecimalFormat;
import org.apache.commons.lang.time.FastDateFormat;
import org.displaytag.decorator.TableDecorator;
import org.displaytag.sample.ListObject;
/**
* This class is a decorator of the TestObjects that we keep in our List. This class provides a number of methods for
* formatting data, creating dynamic links, and exercising some aspects of the display:table API functionality.
* @author epesh
* @author Fabrizio Giustina
* @version $Revision$ ($Author$)
*/
public class Wrapper extends TableDecorator
{
/**
* FastDateFormat used to format dates in getDate().
*/
private FastDateFormat dateFormat;
/**
* DecimalFormat used to format money in getMoney().
*/
private DecimalFormat moneyFormat;
/**
* Creates a new Wrapper decorator who's job is to reformat some of the data located in our TestObject's.
*/
public Wrapper()
{
super();
// Formats for displaying dates and money.
this.dateFormat = FastDateFormat.getInstance("MM/dd/yy"); //$NON-NLS-1$
this.moneyFormat = new DecimalFormat("$ #,###,###.00"); //$NON-NLS-1$
}
/**
* Test method which always returns a null value.
* @return <code>null</code>
*/
public String getNullValue()
{
return null;
}
/**
* Returns the date as a String in MM/dd/yy format.
* @return formatted date
*/
public String getDate()
{
return this.dateFormat.format(((ListObject) this.getCurrentRowObject()).getDate());
}
/**
* Returns the money as a String in $ #,###,###.00 format.
* @return String
*/
public String getMoney()
{
return this.moneyFormat.format(((ListObject) this.getCurrentRowObject()).getMoney());
}
/**
* Returns the TestObject's ID as a hyperlink that the person can click on and "drill down" for more details.
* @return String
*/
public String getLink1()
{
ListObject object = (ListObject) getCurrentRowObject();
int index = getListIndex();
return "<a href=\"details.jsp?index=" //$NON-NLS-1$
+ index
+ "\">" //$NON-NLS-1$
+ object.getId()
+ "</a>"; //$NON-NLS-1$
}
/**
* Returns an "action bar" of sorts that allow the user to perform various actions on the TestObject based on it's
* id.
* @return String
*/
public String getLink2()
{
ListObject object = (ListObject) getCurrentRowObject();
int id = object.getId();
return "<a href=\"details.jsp?id=" //$NON-NLS-1$
+ id
+ "&action=view\">View</a> | " //$NON-NLS-1$
+ "<a href=\"details.jsp?id=" //$NON-NLS-1$
+ id
+ "&action=edit\">Edit</a> | " //$NON-NLS-1$
+ "<a href=\"details.jsp?id=" //$NON-NLS-1$
+ id
+ "&action=delete\">Delete</a>"; //$NON-NLS-1$
}
}