* @param recordPart the message part for the record node
* @throws IOException
*/
private void formatRecord(TransferObject recordTO, CompositeMessagePart recordPart) throws IOException, IntegrationException
{
FixedMessagePartMapping recordMapping = (FixedMessagePartMapping)recordPart.getMapping();
recordMapping.fillRecordTemplate(m_achTemplate);
int nOffset = 0;
for (int i = 0; i < recordPart.getPartCount(); i++)
{
PrimitiveMessagePart fieldPart = (PrimitiveMessagePart)recordPart.getPart(i);
FixedMessagePartMapping fieldMapping = (FixedMessagePartMapping)fieldPart.getMapping();
Object fieldValue = recordTO.findValue(fieldPart.getName());
if (fieldValue != null)
{
String sFieldValue = formatField(fieldMapping, fieldValue, fieldPart);
int nFieldOffset = nOffset;
if (fieldMapping.isLeftAligned())
{
nFieldOffset += fieldMapping.getPrefix().length();
}
else
{
nFieldOffset += fieldMapping.getWidth() - fieldMapping.getSuffix().length() - sFieldValue.length();
}
sFieldValue.getChars(0, sFieldValue.length(), m_achTemplate, nFieldOffset);
}
else
{
if (fieldPart.isRequired())
{
throw new IntegrationException("err.integration.minPartCount",
new Object[]{fieldPart.getFullPath()});
}
}
nOffset += fieldMapping.getWidth();
}
m_writer.write(m_achTemplate, 0, recordMapping.getWidth());
}