package com.brightcove.opensource.workflowengine.actors;
import java.util.HashMap;
import java.util.Map;
import com.brightcove.opensource.workflowengine.Actor;
import com.brightcove.opensource.workflowengine.Workflow;
import com.brightcove.opensource.workflowengine.record.Property;
import com.brightcove.opensource.workflowengine.record.Record;
/**
* <p>
* Utility actor that prints each record that passes through it to the
* workflow logging utility.
* </p>
*
* @author <a href="https://github.com/three4clavin">Sander Gates</a>
*
*/
public class PrintAdapter extends Actor {
Map<String, Boolean> printableFields;
/**
* <p>
* Default constructor - workflow this actor is part of must be
* provided
* </p>
*
* @param workflow Workflow this actor will be part of
*/
public PrintAdapter(Workflow workflow){
super(workflow);
printableFields = null;
}
/* (non-Javadoc)
* @see com.brightcove.opensource.workflowengine.Actor#run()
*/
public void run(){
if(! hasStarted()){
String fieldsProp = getFirstPropertyValue("fields");
if(fieldsProp != null){
printableFields = new HashMap<String, Boolean>();
for(String fieldName : fieldsProp.split(",")){
printableFields.put(fieldName, true);
}
log("Printable fields: '" + printableFields.keySet() + "'.");
}
}
super.run();
}
/* (non-Javadoc)
* @see com.brightcove.opensource.workflowengine.Actor#handleRecord(com.brightcove.opensource.workflowengine.Record)
*/
public void handleRecord(Record record){
log("[PrintAdapter] Record:");
if(record == null){
log(" null");
}
else{
for(Property<?> property : record.getAllProperties()){
if(property == null){
log(" [null]");
}
else{
if((printableFields == null) || printableFields.containsKey(property.getName())){
log(" [" + property.getName() + "=" + property.getValue() + "]");
}
}
}
}
super.handleRecord(record);
}
}