package org.korsakow.domain.interchange.mapper.input;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.korsakow.domain.Keyword;
import org.korsakow.domain.KeywordFactory;
import org.korsakow.domain.interchange.ddg.DynamicPropertiesDDG;
import org.korsakow.domain.interchange.ddg.KeywordDDG;
import org.korsakow.domain.interf.IDynamicProperties;
import org.korsakow.domain.interf.IKeyword;
import org.korsakow.ide.DomHelper;
import org.korsakow.ide.util.DomUtil;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class AbstractInputMapper
{
public AbstractInputMapper()
{
}
public List<IKeyword> inputKeywords(Element element)
{
List<IKeyword> keywords = new ArrayList<IKeyword>();
Collection<Element> keywordElements = DomUtil.findChildrenByTagName(element, KeywordDDG.DOM_NAME);
for (Element keywordElement : keywordElements) {
Keyword keyword = KeywordFactory.createClean(keywordElement.getTextContent());
keywords.add(keyword);
}
return keywords;
}
public void inputDynamicProperties(Element element, IDynamicProperties props)
{
Collection<String> dynamicPropertyIds = props.getDynamicPropertyIds();
// you might think this block is how it would be done, but its not.
// for (String id : dynamicPropertyIds)
// {
// String value = DomUtil.getString(element, id);
// props.setDynamicProperty(id, value);
// }
NodeList childElements = DomUtil.getChildElements(element);
int childLength = childElements.getLength();
for (int i = 0; i < childLength; ++i) {
Element childElement = (Element)childElements.item(i);
String childId = childElement.getTagName();
if (childElement.hasAttribute(DynamicPropertiesDDG.DYNAMIC_ATTRIBUTE) &&
childElement.getAttribute(DynamicPropertiesDDG.DYNAMIC_ATTRIBUTE).equals(DynamicPropertiesDDG.DYNAMIC_ATTRIBUTE_TRUE))
{
// if (dynamicPropertyIds.contains(childId))
// {
String value = childElement.getTextContent();
props.setDynamicProperty(childId, value);
// }
}
}
}
}