📄 multireport.java
字号:
package de.spieleck.app.jacson.report;
import de.spieleck.app.jacson.JacsonConfigException;
import de.spieleck.app.jacson.JacsonPrintReport;
import de.spieleck.app.jacson.JacsonReport;
import de.spieleck.app.jacson.JacsonState;
import de.spieleck.app.jacson.JacsonStately;
import de.spieleck.config.ConfigNode;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* An report which dispatches a message to all contained
* (possible multiple) reports.
* <BR />
* This class might not be directly usable in applications, but
* is an important helper class anyway.
*
* @author fsn
* @author Patrick Carl
*/
public class MultiReport
implements JacsonPrintReport
{
protected List reports;
private JacsonState state;
public MultiReport()
{
clear();
}
public void clear()
{
reports = new LinkedList();
}
/** Add another (completely initialized) report to the list */
public void addReport(JacsonReport report)
{
reports.add(report);
// register state
report.registerState(getRegState());
}
/** Count the registered Reports */
public int countReports()
{
return reports.size();
}
// Implement JacsonReport ----------------------------------------------
public void init(ConfigNode config)
throws JacsonConfigException
{
}
public void registerState(JacsonState state)
{
this.state = state;
// hand over registerred state to sub reports
Iterator it = reports.iterator();
while(it.hasNext()){
((JacsonStately) it.next()).registerState(state);
}
}
public JacsonState getRegState()
{
return state;
}
public void finish(boolean close)
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
JacsonReport rep = (JacsonReport) it.next();
rep.finish(close);
}
}
public void finish()
{
finish(true);
}
public void begin(String id)
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
JacsonReport rep = (JacsonReport) it.next();
rep.begin(id);
}
}
public void report(String localName, String value)
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
JacsonReport rep = (JacsonReport) it.next();
rep.report(localName, value);
}
}
public void end()
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
JacsonReport rep = (JacsonReport) it.next();
rep.end();
}
}
// Implement JacsonPrintReport -------------------------------------------
/**
* XXX Sometimes (most of the time) mangling different reports
* into one file makes no sense and might cause unpredictable
* behaviour.
*/
public void setPrintWriter(PrintWriter pw)
throws JacsonConfigException
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
Object o = it.next();
if ( o instanceof JacsonPrintReport )
{
((JacsonPrintReport)o).setPrintWriter(pw);
}
}
}
public void setOutputStream(OutputStream os)
throws JacsonConfigException
{
Iterator it = reports.iterator();
while ( it.hasNext())
{
Object o = it.next();
if ( o instanceof JacsonPrintReport )
{
((JacsonPrintReport)o).setOutputStream(os);
}
}
}
}
//
// Jacson - Text Filtering with Java.
// Copyright (C) 2002 Frank S. Nestel (nestefan -at- users.sourceforge.net)
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library 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
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -