/*
* LogColumn.java
*
* Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard
*
* This file is part of BEAST.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership and licensing.
*
* BEAST 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
* of the License, or (at your option) any later version.
*
* BEAST 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 BEAST; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package dr.inference.loggers;
import java.io.Serializable;
/**
* An interface for a column in a log.
*
* @author Andrew Rambaut
* @author Alexei Drummond
* @version $Id: LogColumn.java,v 1.5 2005/05/24 20:25:59 rambaut Exp $
*/
public interface LogColumn extends Serializable {
/**
* Set the label (heading) for this column
*
* @param label the column label
*/
void setLabel(String label);
/**
* @return the label (heading) for this column
*/
String getLabel();
/**
* Set the minimum width in characters for this column
*
* @param minimumWidth the minimum width in characters
*/
void setMinimumWidth(int minimumWidth);
/**
* @return the minimum width in characters for this column
*/
int getMinimumWidth();
/**
* Returns a string containing the current value for this column with
* appropriate formatting.
*
* @return the formatted string.
*/
String getFormatted();
public abstract class Abstract implements LogColumn {
private String label;
private int minimumWidth;
public Abstract(String label) {
setLabel(label);
minimumWidth = -1;
}
public void setLabel(String label) {
if (label == null) throw new IllegalArgumentException("column label is null");
this.label = label;
}
public String getLabel() {
StringBuffer buffer = new StringBuffer(label);
if (minimumWidth > 0) {
while (buffer.length() < minimumWidth) {
buffer.append(' ');
}
}
return buffer.toString();
}
public void setMinimumWidth(int minimumWidth) {
this.minimumWidth = minimumWidth;
}
public int getMinimumWidth() {
return minimumWidth;
}
public final String getFormatted() {
StringBuffer buffer = new StringBuffer(getFormattedValue());
if (minimumWidth > 0) {
while (buffer.length() < minimumWidth) {
buffer.append(' ');
}
}
return buffer.toString();
}
protected abstract String getFormattedValue();
}
public class Default extends Abstract {
private Object object;
public Default(String label, Object object) {
super(label);
this.object = object;
}
protected String getFormattedValue() {
return object.toString();
}
}
}