if (loopIsManagedWithBookmark) {
// Test if rtfParent is row => to indicate that
// row must not generate #foreach
if (getType(parentElement) == RTF_ELEMENT_ROW) {
RTFRow row = (RTFRow) parentElement;
if (rowMustNotGenerateForeachList == null) {
rowMustNotGenerateForeachList = new ArrayList();
}
rowMustNotGenerateForeachList.add(row);
}
} else {
// Test if rtfParent is row
if (getType(parentElement) == RTF_ELEMENT_ROW) {
RTFRow row = (RTFRow) parentElement;
if (row.getFirstRTFString() == null) {
if (rowMustNotGenerateForeachList == null
|| !rowMustNotGenerateForeachList
.contains(row)) {
row.addFirstRTFString(getForeach(
fieldName,
fieldNameWithListInfo));
row
.addLastRTFString(getMacroEndForEach()); // #end
}
}
}
}
// Add item_ after $
String fieldContent = field
.getRTFContentOfSimpleElement();
if (fieldName.startsWith("$"))
fieldName = fieldName.substring(1);
newFieldName = getObjectValueList(fieldName,
fieldNameWithListInfo, true);
if (newFieldName.startsWith("$"))
newFieldName = newFieldName.substring(1);
fieldContent = StringUtils.sub(fieldContent,
fieldName, newFieldName);
field.replaceElement(fieldContent);
}
} else {
if (fieldType == RTFField.FIELDTYPE_REF) {
String condition = field.getCondition();
if (condition != null) {
// Condition is defined
// Field is REF (IF condition)
// Get Bookmark with name field
RTFBookmark ifBookmark = (RTFBookmark) bookmarkIfMap
.get(fieldName);
if (ifBookmark != null) {
// Bookmark IF exists. Replace this RTF code
// with the condition
// comming from field
condition = getMacroIf(condition);
ifBookmark.replaceElement(condition);
// Remove content of the field
field.replaceElement("");
// Replace BKMEND by ""
RTFBookmark ifBookmarkBKMEND = (RTFBookmark) bookmarkBkmIfMap
.get(fieldName);
ifBookmarkBKMEND.replaceElement("");
}
}
}
}
}
break;
case RTF_ELEMENT_ROW:
RTFRow row = (RTFRow) element;
transform(row, row.getElementList(), contextFieldsMap);
row.flush();
break;
case RTF_ELEMENT_PAGE:
lastPage = (RTFPage) element;
break;