package org.korsakow.services.tdg;
import javax.xml.xpath.XPathException;
import javax.xml.xpath.XPathExpressionException;
import org.korsakow.ide.DataRegistry;
import org.korsakow.ide.XPathHelper;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class WidgetTDG
{
public static final String NODE_NAME = "Widget";
public static int insert(long interface_id, long version, String name, String widgetId, String persistCondition, String persistAction, int x, int y, int width, int height) throws XPathException{
return insert(interface_id, DataRegistry.getMaxId(), version, name, widgetId, persistCondition, persistAction, x, y, width ,height);
}
public static int insert(long interface_id, long id, long version, String name, String widgetId, String persistCondition, String persistAction, int x, int y, int width, int height) throws XPathExpressionException{
createWidgetTable(interface_id);
Element element = DataRegistry.getHelper().appendElement(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=?]/widgets", interface_id), NODE_NAME);
DataRegistry.getHelper().setLong(element, "id", id);
DataRegistry.getHelper().setLong(element, "version", version);
return update(id, version, name, widgetId, persistCondition, persistAction, x, y, width, height);
}
public static int delete(long id, long version) throws XPathExpressionException {
NodeList list = DataRegistry.getHelper().removeNodes(XPathHelper.formatQuery("/korsakow/interfaces/Interface/widgets/Widget[id=? and version=?]", id, version));
return list.getLength();
}
public static int deleteByInterface(long interface_id) throws XPathExpressionException {
NodeList list = DataRegistry.getHelper().removeNodes(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=?]/widgets", interface_id));
return list.getLength();
}
public static int update(long id, long version, String name, String widgetId, String persistCondition, String persistAction, int x, int y, int width, int height) throws XPathExpressionException{
Element element = DataRegistry.getHelper().findElementByIdTag(id);
// Element element = DataRegistry.getHelper().xpathAsElement(XPathHelper.formatQuery("/korsakow/interfaces/Interface/widgets/Widget[id=? and version=?]", id, version));
if (element == null)
return 0;
DataRegistry.getHelper().setLong(element, "id", id);
DataRegistry.getHelper().setLong(element, "version", version+1);
DataRegistry.getHelper().setString(element, "name", name);
DataRegistry.getHelper().setString(element, "widgetType", widgetId);
DataRegistry.getHelper().setString(element, "persistCondition", persistCondition);
DataRegistry.getHelper().setString(element, "persistAction", persistAction);
DataRegistry.getHelper().setInt(element, "x", x);
DataRegistry.getHelper().setInt(element, "y", y);
DataRegistry.getHelper().setInt(element, "width", width);
DataRegistry.getHelper().setInt(element, "height", height);
return 1;
}
public static void createWidgetTable(long interface_id) throws XPathExpressionException {
if (DataRegistry.getHelper().xpathAsElement(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=?]/widgets", interface_id)) == null) {
DataRegistry.getHelper().appendElement(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=?]", interface_id), "widgets");
}
}
public static void dropTable (long interface_id) throws XPathExpressionException{
DataRegistry.getHelper().removeNodes(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=?]/widgets", interface_id));
}
}