Home » displaytag-1.1.1-src » org » displaytag » model » [javadoc | source]

    1   /**
    2    * Licensed under the Artistic License; you may not use this file
    3    * except in compliance with the License.
    4    * You may obtain a copy of the License at
    5    *
    6    *      http://displaytag.sourceforge.net/license.html
    7    *
    8    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
    9    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   10    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   11    */
   12   package org.displaytag.model;
   13   
   14   import java.util.ArrayList;
   15   import java.util.List;
   16   import java.util.Map;
   17   
   18   import org.apache.commons.lang.StringUtils;
   19   import org.apache.commons.lang.builder.ToStringBuilder;
   20   import org.apache.commons.lang.builder.ToStringStyle;
   21   import org.displaytag.util.HtmlAttributeMap;
   22   import org.displaytag.util.MultipleHtmlAttribute;
   23   import org.displaytag.util.TagConstants;
   24   
   25   
   26   /**
   27    * Holds informations for a table row.
   28    * @author Fabrizio Giustina
   29    * @version $Revision: 1081 $ ($Author: fgiust $)
   30    */
   31   public class Row
   32   {
   33   
   34       /**
   35        * Object holding values for the current row.
   36        */
   37       private Object rowObject;
   38   
   39       /**
   40        * List of cell objects.
   41        */
   42       private List staticCells;
   43   
   44       /**
   45        * Row number.
   46        */
   47       private int rowNumber;
   48   
   49       /**
   50        * TableModel which the row belongs to.
   51        */
   52       private TableModel tableModel;
   53   
   54       /**
   55        * Constructor for Row.
   56        * @param object Object
   57        * @param number int
   58        */
   59       public Row(Object object, int number)
   60       {
   61           this.rowObject = object;
   62           this.rowNumber = number;
   63           this.staticCells = new ArrayList();
   64       }
   65   
   66       /**
   67        * Setter for the row number.
   68        * @param number row number
   69        */
   70       public void setRowNumber(int number)
   71       {
   72           this.rowNumber = number;
   73       }
   74   
   75       /**
   76        * Getter for the row number.
   77        * @return row number
   78        */
   79       public int getRowNumber()
   80       {
   81           return this.rowNumber;
   82       }
   83   
   84       /**
   85        * Adds a cell to the row.
   86        * @param cell Cell
   87        */
   88       public void addCell(Cell cell)
   89       {
   90           this.staticCells.add(cell);
   91       }
   92   
   93       /**
   94        * getter for the list of Cell object.
   95        * @return List containing Cell objects
   96        */
   97       public List getCellList()
   98       {
   99           return this.staticCells;
  100       }
  101   
  102       /**
  103        * getter for the object holding values for the current row.
  104        * @return Object object holding values for the current row
  105        */
  106       public Object getObject()
  107       {
  108           return this.rowObject;
  109       }
  110   
  111       /**
  112        * Iterates on columns.
  113        * @param columns List
  114        * @return ColumnIterator
  115        */
  116       public ColumnIterator getColumnIterator(List columns)
  117       {
  118           return new ColumnIterator(columns, this);
  119       }
  120   
  121       /**
  122        * Setter for the table model the row belongs to.
  123        * @param table TableModel
  124        */
  125       protected void setParentTable(TableModel table)
  126       {
  127           this.tableModel = table;
  128       }
  129   
  130       /**
  131        * Getter for the table model the row belongs to.
  132        * @return TableModel
  133        */
  134       protected TableModel getParentTable()
  135       {
  136           return this.tableModel;
  137       }
  138   
  139       /**
  140        * Writes the open <tr> tag.
  141        * @return String <tr> tag with the appropriate css class attribute
  142        */
  143       public String getOpenTag()
  144       {
  145           Map rowAttributes = new HtmlAttributeMap();
  146   
  147           MultipleHtmlAttribute cssAttribute = new MultipleHtmlAttribute(this.tableModel.getProperties().getCssRow(
  148               this.rowNumber));
  149   
  150           if (this.tableModel.getTableDecorator() != null)
  151           {
  152               try
  153               {
  154                   String addStyle = this.tableModel.getTableDecorator().addRowClass();
  155   
  156                   if (StringUtils.isNotBlank(addStyle))
  157                   {
  158                       cssAttribute.addAttributeValue(addStyle);
  159                   }
  160   
  161                   String id = this.tableModel.getTableDecorator().addRowId();
  162                   if (StringUtils.isNotBlank(id))
  163                   {
  164                       rowAttributes.put(TagConstants.ATTRIBUTE_ID, id);
  165                   }
  166               }
  167               catch (NoSuchMethodError e)
  168               {
  169                   // this catch is here to allow decorators compiled with displaytag 1.0 work with 1.1
  170                   // since the addRowClass() and addRowId() are new in displaytag 1.1 earlier decorators could throw
  171                   // a NoSuchMethodError... be nice with them till a next major release
  172               }
  173           }
  174   
  175           if (!cssAttribute.isEmpty())
  176           {
  177               rowAttributes.put(TagConstants.ATTRIBUTE_CLASS, cssAttribute);
  178           }
  179   
  180           StringBuffer tag = new StringBuffer();
  181           tag.append(TagConstants.TAG_OPEN);
  182           tag.append(TagConstants.TAGNAME_ROW);
  183   
  184           tag.append(rowAttributes.toString());
  185   
  186           tag.append(TagConstants.TAG_CLOSE);
  187   
  188           return tag.toString();
  189       }
  190   
  191       /**
  192        * writes the </tr> tag.
  193        * @return String </tr> tag
  194        */
  195       public String getCloseTag()
  196       {
  197           return TagConstants.TAG_TR_CLOSE;
  198       }
  199   
  200       /**
  201        * @see java.lang.Object#toString()
  202        */
  203       public String toString()
  204       {
  205           return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) //
  206               .append("rowNumber", this.rowNumber) //$NON-NLS-1$
  207               .append("rowObject", this.rowObject) //$NON-NLS-1$
  208               .toString();
  209       }
  210   }

Home » displaytag-1.1.1-src » org » displaytag » model » [javadoc | source]