package org.atdl4j.data.fix;
/*import java.util.HashMap;
import java.util.List;
import java.util.Map;*/
import org.atdl4j.data.Atdl4jConstants;
// TODO: Change to handle generic repeating groups
public class StringFIXMessageBuilder
implements FIXMessageBuilder
{
private static char delimiter = '\001';
private StringBuffer sb;
private StringBuffer repeating;
// private Map<Integer,List<List<StringBuffer>>> repeating;
private int repeatingCount;
public void onStart()
{
sb = new StringBuffer();
repeating = new StringBuffer();
// repeating = new HashMap<Integer,List<StringBuffer>>();
repeatingCount = 0;
}
public void onField(int field, String value)
{
if ( field == Atdl4jConstants.TAG_STRATEGY_PARAMETER_NAME || field == Atdl4jConstants.TAG_STRATEGY_PARAMETER_TYPE
|| field == Atdl4jConstants.TAG_STRATEGY_PARAMETER_VALUE )
{
// if (repeating.get(Atdl4jConstants.TAG_NO_STRATEGY_PARAMETERS) ==
// null)
repeating.append( field ).append( '=' ).append( value ).append( delimiter );
if ( field == Atdl4jConstants.TAG_STRATEGY_PARAMETER_NAME )
{
repeatingCount++;
}
}
else
{
sb.append( field ).append( '=' ).append( value ).append( delimiter );
}
}
public void onEnd()
{
// -- Avoid 957=0 --
if ( repeatingCount > 0 )
{
// append repeating group count
sb.append( Atdl4jConstants.TAG_NO_STRATEGY_PARAMETERS ).append( '=' ).append( repeatingCount ).append( delimiter );
// append repeating group content
sb.append( repeating );
}
}
public String getMessage()
{
return sb.toString();
}
}