class FlowInfo implements Serializable {

    @Override
    public String toString() {
        StringBuffer buf = new StringBuffer();
        buf.append("Flow (id = ").append(identifier).append(")").append(NEWLINE);
        buf.append("- overall status       = ").append(status).append(NEWLINE);
        buf.append("- application          = ").append(application).append(NEWLINE);
        buf.append("- create time          = ").append(dateString(creationTime)).append(NEWLINE);
        buf.append("- replayable           = ").append(replayable).append(NEWLINE);
        buf.append("- replay time          = ").append(dateString(replayTime)).append(NEWLINE);
        buf.append("- replay count         = ").append(replayCount).append(NEWLINE);
        buf.append("- ACK count (expected) = ").append(ackCountExpected).append(NEWLINE);
        buf.append("- ACK count (actual)   = ").append(ackCount).append(NEWLINE);
        buf.append("- NAK count            = ").append(nakCount).append(NEWLINE);
        buf.append("- text                 = ").append(textString(text)).append(NEWLINE);
        for (FlowPartInfo partInfo : getPartInfos()) {
            buf.append(partInfo.toString());
        }
        return buf.toString();
    }

    public  FlowInfo();

}