blob: f718123136655546413cccc7fb4b08d2b87e5e38 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package stats;
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* Write all logs into a java.io.PrintWriter, i.e. a StringBuffer.
* Log is gathered there.
*/
public class InternalLogWriter extends PrintWriter
implements share.LogWriter {
/** log active **/
boolean active;
/** write all output to a StringBuffer **/
static StringWriter writer = new StringWriter();
/**
* c'*tor
*/
public InternalLogWriter() {
super(new PrintWriter(writer));
active = true;
}
/**
* Initialization.
* @param entry The description entry.
* @param active Logging is active.
* @return True, if initialize worked.
*/
public boolean initialize(share.DescEntry entry, boolean active) {
this.active = active;
return true;
}
/**
* Method to print a line that is added to the StringBuffer.
* @param msg The message that is printed.
*/
public void println(String msg) {
if (active)
super.println(msg);
}
/**
* Method to print to the StringBuffer.
* @param msg The message that is printed.
*/
public void print(String msg) {
if (active)
super.print(msg);
}
/**
* Is used to sum up the information.
* The summary is also added to the StringBuffer.
* @param entry The description entry.
* @return True, if a summary could be created.
*/
public boolean summary(share.DescEntry entry) {
// linePrefix = "";
String header = "***** State for "+entry.longName+" ******";
println(header);
if (entry.hasErrorMsg) {
println(entry.ErrorMsg);
println("Whole "+entry.EntryType+": "+entry.State);
} else {
println("Whole "+entry.EntryType+": "+entry.State);
}
for (int i=0;i<header.length();i++) {
print("*");
}
println("");
return true;
}
/**
* Return all the written stuff.
* @return All that was written to the StringBuffer with the
* 'println()', 'print()' and 'summarize()' methods.
* The StringBuffer is emptied afterwards.
**/
public String getLog() {
String message = writer.getBuffer().toString();
writer = new StringWriter();
return message;
}
public Object getWatcher() {
return null;
}
public void setWatcher(Object watcher) {
}
}