Map<String, Set<String>> mergedTextContents = new HashMap<String, Set<String>>();
for (Iterator<KeyValue<String, HeadElement>> it = headElements.iterator(); it.hasNext(); )
{
KeyValue<String, HeadElement> kvPair = it.next();
HeadElement element = kvPair.getValue();
if (element.hasAttribute(HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE))
{
String mergeHint = element.getAttribute(HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE);
String textContent = element.getTextContent();
if (textContent != null)
{
textContent = textContent.trim();
}
if (firstElementByMergeHint.containsKey(mergeHint))
{
if (textContent != null && !"".equals(textContent))
{
Set<String> textContentSet = mergedTextContents.get(mergeHint);
textContentSet.add(textContent);
}
it.remove();
}
else
{
firstElementByMergeHint.put(mergeHint, element);
Set<String> textContentSet = new TreeSet<String>();
mergedTextContents.put(mergeHint, textContentSet);
if (textContent != null && !"".equals(textContent))
{
textContentSet.add(textContent);
}
}
}
}
for (Map.Entry<String, HeadElement> entry : firstElementByMergeHint.entrySet())
{
String mergeHint = entry.getKey();
HeadElement firstElement = entry.getValue();
Set<String> textContentSet = mergedTextContents.get(mergeHint);
StringBuilder sb = new StringBuilder(80);
boolean firstDone = false;
for (String textContent : textContentSet)
{
if (firstDone)
sb.append("\r\n");
else
firstDone = true;
sb.append(textContent);
}
firstElement.setTextContent(sb.toString());
}
}