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 InterfaceTDG
{
public static final String NODE_NAME = "Interface";
public static int insert(long version, String name, int grid_width, int grid_height, Integer view_width, Integer view_height, Long click_sound_id, float click_sound_volume, Long background_image_id, String background_color) throws XPathException{
return insert(DataRegistry.getMaxId(), version, name, grid_width, grid_height, view_width, view_height, click_sound_id, click_sound_volume, background_image_id, background_color);
}
public static int insert(long id, long version, String name, int grid_width, int grid_height, Integer view_width, Integer view_height, Long click_sound_id, float click_sound_volume, Long background_image_id, String background_color) throws XPathExpressionException{
Element element = DataRegistry.getHelper().findElementByIdTag(id);
if (element != null)
throw new XPathExpressionException("an interface with that id already exists: " + id);
element = DataRegistry.getHelper().appendElement("/korsakow/interfaces", NODE_NAME);
DataRegistry.getHelper().setLong(element, "id", id);
DataRegistry.getHelper().setLong(element, "version", version);
return update(id, version, name, grid_width, grid_height, view_width, view_height, click_sound_id, click_sound_volume, background_image_id, background_color);
}
public static int delete(long id, long version) throws XPathExpressionException {
NodeList list = DataRegistry.getHelper().removeNodes(XPathHelper.formatQuery("/korsakow/interfaces/Interface[id=? and version=?]", id, version));
return list.getLength();
}
public static int update(
long id, long version,
String name,
int grid_width, int grid_height,
Integer view_width, Integer view_height,
Long click_sound_id, float click_sound_volume,
Long background_image_id, String background_color
) throws XPathExpressionException{
Element element = DataRegistry.getHelper().findElementByIdTag(id);
// Element element = DataRegistry.getHelper().xpathAsElement(XPathHelper.formatQuery("/korsakow/interfaces/Interface[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().setInt(element, "gridWidth", grid_width);
DataRegistry.getHelper().setInt(element, "gridHeight", grid_height);
DataRegistry.getHelper().setInt(element, "viewWidth", view_width);
DataRegistry.getHelper().setInt(element, "viewHeight", view_height);
DataRegistry.getHelper().setLong(element, "clickSoundId", click_sound_id);
DataRegistry.getHelper().setFloat(element, "clickSoundVolume", click_sound_volume);
DataRegistry.getHelper().setLong(element, "backgroundImageId", background_image_id);
DataRegistry.getHelper().setString(element, "backgroundColor", background_color);
return 1;
}
public static Element createInterfaceTable() throws XPathExpressionException {
Element element = null;
if ((element = DataRegistry.getHelper().xpathAsElement("/korsakow/interfaces")) == null) {
element = DataRegistry.getHelper().appendElement("/korsakow", "interfaces");
}
return element;
}
public static void dropTable () throws XPathExpressionException{
DataRegistry.getHelper().removeNodes(XPathHelper.formatQuery("/korsakow/interfaces"));
}
}