/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.ld.businessobject.lookup; import java.util.List; import org.apache.commons.lang.StringUtils; import org.displaytag.decorator.TableDecorator; import org.displaytag.properties.MediaTypeEnum; import org.kuali.rice.kns.web.ui.Column; import org.kuali.rice.kns.web.ui.ResultRow; /** * Decorator class for the Long Row Table. */ public class LongRowTableDecorator extends TableDecorator { private static final int numOfColumnInEachRow = 12; private static final int numOfColumnInFirstRow = 14; /** * @see org.displaytag.decorator.TableDecorator#finishRow() * * KRAD Conversion: Performs customization of the row. * * No uses data dictionary. */ @Override public String finishRow() { MediaTypeEnum mediaType = (MediaTypeEnum) getPageContext().getAttribute("mediaType"); ResultRow row = (ResultRow) getCurrentRowObject(); if (MediaTypeEnum.HTML.equals(mediaType)) { StringBuffer rowBuffer = new StringBuffer(); List columns = row.getColumns(); int columnCount = columns.size(); int numOfRows = (int) Math.ceil(1.0 * (columnCount - numOfColumnInFirstRow) / numOfColumnInEachRow); rowBuffer.append("<tr>").append("<td colspan='" + numOfColumnInFirstRow + "'><br/><center>"); rowBuffer.append("<table class='datatable-80' cellspacing='0' cellpadding='0' >"); for (int rowIndex = 0; rowIndex < numOfRows; rowIndex++) { rowBuffer.append("<tr>"); for (int columnIndex = 0; columnIndex < numOfColumnInEachRow; columnIndex++) { int currentPosition = rowIndex * numOfColumnInEachRow + columnIndex + numOfColumnInFirstRow; String title = currentPosition < columnCount ? ((Column) columns.get(currentPosition)).getColumnTitle() : null; rowBuffer.append("<th>"); rowBuffer.append(!StringUtils.isBlank(title) ? title : " "); rowBuffer.append("</th>"); } rowBuffer.append("</tr>"); rowBuffer.append("<tr>"); for (int columnIndex = 0; columnIndex < numOfColumnInEachRow; columnIndex++) { int currentPosition = rowIndex * numOfColumnInEachRow + columnIndex + numOfColumnInFirstRow; String value = currentPosition < columnCount ? ((Column) columns.get(currentPosition)).getPropertyValue() : null; rowBuffer.append("<td class='infocell'>"); rowBuffer.append(!StringUtils.isBlank(value) ? value : " "); rowBuffer.append("</td>"); } rowBuffer.append("</tr>"); } rowBuffer.append("</table></center><br/><br/></td></tr>"); return rowBuffer.toString(); } return super.finishRow(); } }