package org.korsakow.domain.interchange.mapper.input;
import java.util.ArrayList;
import java.util.Collection;
import org.korsakow.domain.Widget;
import org.korsakow.domain.WidgetFactory;
import org.korsakow.domain.interchange.ddg.AbstractResourceDDG;
import org.korsakow.domain.interchange.ddg.KeywordDDG;
import org.korsakow.domain.interchange.ddg.WidgetDDG;
import org.korsakow.domain.interf.IWidget;
import org.korsakow.ide.resources.widget.WidgetPersistAction;
import org.korsakow.ide.util.DomUtil;
import org.w3c.dom.Element;
public class InterchangeWidgetInputMapper extends AbstractInputMapper
{
public IWidget input(Element element)
{
Widget widget = WidgetFactory.createNew(DomUtil.getString(element, WidgetDDG.TYPE)); // why createNew and not createClean? because its a dependent mapping?
widget.setName(DomUtil.getString(element, AbstractResourceDDG.NAME));
Element persistElement = DomUtil.findChildByTagName(element, WidgetDDG.PERSIST);
if (persistElement != null) {
widget.setPersistAction(WidgetPersistAction.forId(DomUtil.getString(persistElement, WidgetDDG.PERSIST_CONDITION)));
widget.setPersistAction(WidgetPersistAction.forId(DomUtil.getString(persistElement, WidgetDDG.PERSIST_ACTION)));
}
widget.setX(DomUtil.getInt(element, WidgetDDG.X));
widget.setY(DomUtil.getInt(element, WidgetDDG.Y));
widget.setWidth(DomUtil.getInt(element, WidgetDDG.WIDTH));
widget.setHeight(DomUtil.getInt(element, WidgetDDG.HEIGHT));
widget.setKeywords(inputKeywords(DomUtil.findChildByTagName(element, KeywordDDG.DOM_LIST_NAME)));
inputDynamicProperties(element, widget);
return widget;
}
public Collection<IWidget> inputList(Element element)
{
Collection<IWidget> widgets = new ArrayList<IWidget>();
Collection<Element> widgetElements = DomUtil.findChildrenByTagName(element, WidgetDDG.DOM_NAME);
for (Element widgetElement : widgetElements)
widgets.add(input(widgetElement));
return widgets;
}
}