Package reportgen.formatter

Source Code of reportgen.formatter.ExtendedDocBuilder

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package reportgen.formatter;

import java.io.PrintStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import reportgen.utils.ReportException;
import reportgen.formatter.extended.TableProcessor;
import reportgen.math.ResultColumn;
import reportgen.prototype.queryresults.QueryResults;
import reportgen.prototype.queryresults.ResultsRow;
import reportgen.ren.report.ReportQuery;
import reportgen.ren.report.extendedformat.table.TableFormat;
import reportgen.ren.report.extendedformat.TableFormatList;
import reportgen.ren.report.items.ResultColumnList;

/**
*
* @author axe
*/
public class ExtendedDocBuilder extends DocBuilder{

    public ExtendedDocBuilder(QueryResults results, ReportQuery query, String title) {
        super(results, query, title);
    }

    @Override
    public void isAvailiable() throws ReportException {
        getAvailiableFormats().size();
    }


    /**
     * Создает документ на основе указанных режимов отображения
     * и данных указанных в контрукторе
     * @param modes
     * @return
     * @throws reportgen.exception.ReportException
     */
    @Override
    public void toHTML(PrintStream stream) throws ReportException {
        List<TableProcessor> list = getAvailiableFormats();


        List<Map> models = new LinkedList<Map>();
        for(int i=0; i<results.getRowCount(); i++) {
            ResultsRow row = results.getRow(i);

            Map<ResultColumn, Object> model = new HashMap<ResultColumn, Object>();
            ResultColumnList cols = query.getColumns();
            for(int j=0; j< cols.size(); j++) {
                model.put(cols.get(j).getProperties(), row.getValue(j));
            }
            models.add(model);
        }

        for(TableProcessor format: list) {
            format.addRows(models);
        }

        stream.println(getHeader(title));
        for(TableProcessor format: list) {
            format.toHTML(stream);
        }
        stream.println(getTail());
    }

    private List<TableProcessor> getAvailiableFormats() throws ReportException {
        TableFormatList formats = query.getTableFormats();
        List<TableProcessor> list = new LinkedList<TableProcessor>();
        for (int i = 0; i < formats.size(); i++) {
            TableFormat format = formats.get(i);
            if (format.isEnabled()) {
                list.add(new TableProcessor(format));
            }
        }
        if (list.size() == 0) {
            throw new ReportException("Отчет не содержит таблиц расширенного формата");
        }
        return list;
    }
}
TOP

Related Classes of reportgen.formatter.ExtendedDocBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.