001 /**
002 * www.jcoverage.com
003 * Copyright (C)2003 jcoverage ltd.
004 *
005 * This file is part of jcoverage.
006 *
007 * jcoverage is free software; you can redistribute it and/or modify
008 * it under the terms of the GNU General Public License as published
009 * by the Free Software Foundation; either version 2 of the License,
010 * or (at your option) any later version.
011 *
012 * jcoverage is distributed in the hope that it will be useful, but
013 * WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * General Public License for more details.
016 *
017 * You should have received a copy of the GNU General Public License
018 * along with jcoverage; if not, write to the Free Software
019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
020 * USA
021 *
022 */
023 package com.jcoverage.reporting;
024
025 import java.util.Collection;
026
027 /**
028 * A line of information in a page of a report.
029 */
030 public interface Line extends Closeable {
031
032 /**
033 * This method signifies more detail is available for this line in a
034 * separate page.
035 * @return a new page, ready for lines of more detailed information
036 * to be added.
037 */
038 Page openDetailPage();
039
040 /**
041 * Get the detail page if one exists. This method does not create a
042 * detail page, if you want to do this you should use {@link
043 * #openDetailPage()}.
044 */
045 Page getDetailPage();
046
047 void setOwner(Page page);
048 Page getOwner();
049 void setReport(Report report);
050
051 /**
052 * Fields can be set on a line.
053 * @param fieldtype the name of the field type. This must be a valid type
054 * with respect to this instance's {@link LineCategory}.
055 * @param value the value of the field. Again, this must be of
056 * the correct type as determined by the category.
057 */
058 void setField(Column col,Object value) throws IllegalArgumentException;
059
060 void setField(Column col,int value) throws IllegalArgumentException;
061
062 void setField(Column col,double value) throws IllegalArgumentException;
063
064 void setField(Column col,boolean value) throws IllegalArgumentException;
065
066 /**
067 * @param col the given column.
068 * @return the value of the given column, the type of which is
069 * determined by the {@link LineCategory}.
070 */
071 Object getField(Column col);
072
073 /**
074 * Instances of this class should record their {@linkplain
075 * LineCategory category} if they want to validate values of fields
076 * set with the {@link #setField(Column,Object) setField()} methods.
077 *
078 * <p>
079 *
080 * Reports that are not derived from {@link AbstractPage}, or
081 * override {@link AbstractPage#createLine(LineCategory)} should
082 * always call this method on newly created {@link Line} instances
083 * they create.
084 */
085 void setCategory(LineCategory category);
086
087
088 }