/** * End the datastore transaction. * * @param updates {@link ObjectData} instances to insert or update * @param deletes {@link ObjectData} instances to delete */ public synchronized void endTransaction(Collection updates, Collection deletes) { // track dirty types Set dirty = new HashSet(); try { // commit updates if (updates != null) { for (Iterator itr = updates.iterator(); itr.hasNext(); ) { ObjectData data = (ObjectData) itr.next(); ClassMetaData meta = getLeastDerived(data.getMetaData()); getMap(meta).put(data.getId(), data); dirty.add(meta); } } // commit deletes if (deletes != null) { for (Iterator itr = deletes.iterator(); itr.hasNext(); ) { ObjectData data = (ObjectData) itr.next(); ClassMetaData meta = getLeastDerived(data.getMetaData()); getMap(meta).remove(data.getId()); dirty.add(meta); } } // write changes to dirty extents back to file XMLFileHandler fh = _conf.getFileHandler(); for (Iterator itr = dirty.iterator(); itr.hasNext(); ) { ClassMetaData meta = (ClassMetaData) itr.next(); fh.store(meta, getMap(meta).values()); } } finally { // unlock store notify(); _locked = false; } }
public void testOpiWidget() throws EdmException { // init document Document doc = XMLFileHandler.createDomDocument(); String widgetType = "newWidget"; EdmWidget edmWidget = new EdmWidget(new EdmEntity(widgetType)); Element parent = doc.createElement("root"); doc.appendChild(parent); Context context = new Context(doc, parent, null, 0, 0); new OpiWidget(context, edmWidget); // Input tests here when there will be some implementation. // XMLFileHandler.writeXML(doc); }
@Test public void testOpiDouble() throws EdmException { // init document Document doc = XMLFileHandler.createDomDocument(); Element parent = doc.createElement("root"); doc.appendChild(parent); String name = "doubleElement"; String val = "12.3"; EdmDouble d = new EdmDouble(new EdmAttribute(val), true); Context context = new Context(doc, parent, null, 0, 0); OpiDouble o = new OpiDouble(context, name, d); assertTrue(o instanceof OpiAttribute); // testing Element x = (Element) doc.getElementsByTagName(name).item(0); assertEquals(val, x.getTextContent()); // XMLFileHandler.writeXML(doc); }
public void testXMLMapping() throws EdmException { System.setProperty("edm2xml.colorsFile", "src/test/resources/colors.list"); String[] args = {displayFile1}; EdmConverter.main(args); Document doc = XMLFileHandler.readXml(xmlFile1); if (doc != null) { Element e = (Element) doc.getElementsByTagName("display").item(0); assertEquals("org.csstudio.opibuilder.Display", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("614", "x", e); XMLFileHandler.isElementEqual("278", "y", e); XMLFileHandler.isElementEqual("280", "width", e); XMLFileHandler.isElementEqual("177", "height", e); XMLFileHandler.isFontElementEqual("helvetica-bold-r-14.0", "font", e); XMLFileHandler.isFontElementEqual("helvetica-bold-r-14.0", "font_ctl", e); XMLFileHandler.isFontElementEqual("helvetica-bold-r-14.0", "font_button", e); XMLFileHandler.isColorElementEqual(new EdmColor(14), "color_foreground", e); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", e); XMLFileHandler.isColorElementEqual(new EdmColor(14), "color_text", e); XMLFileHandler.isColorElementEqual("", 1, 2, 255, 0, 0, 0, "color_ctlFgColor1", e); XMLFileHandler.isColorElementEqual(new EdmColor(30), "color_ctlFgColor2", e); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_ctlBgColor1", e); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_ctlBgColor2", e); XMLFileHandler.isColorElementEqual(new EdmColor(1), "color_topshadowcolor", e); XMLFileHandler.isColorElementEqual(new EdmColor(11), "color_botshadowcolor", e); XMLFileHandler.isElementEqual("Motor control", "name", e); XMLFileHandler.isElementEqual("true", "grid_show", e); XMLFileHandler.isElementEqual("5", "grid_space", e); XMLFileHandler.isElementEqual("true", "scroll_disable", e); e = (Element) doc.getElementsByTagName("widget").item(0); assertEquals("org.csstudio.opibuilder.widgets.Rectangle", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Rectangle", "name", e); XMLFileHandler.isElementEqual("4", "x", e); XMLFileHandler.isElementEqual("45", "y", e); XMLFileHandler.isElementEqual("111", "width", e); XMLFileHandler.isElementEqual("42", "height", e); XMLFileHandler.isColorElementEqual(new EdmColor(7), "border_color", e); XMLFileHandler.isColorElementEqual(new EdmColor(0), "color_background", e); XMLFileHandler.isElementEqual("9", "border_style", e); XMLFileHandler.isElementEqual("2", "border_width", e); e = (Element) doc.getElementsByTagName("widget").item(1); assertEquals("org.csstudio.opibuilder.widgets.Rectangle", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Rectangle", "name", e); XMLFileHandler.isElementEqual("120", "x", e); XMLFileHandler.isElementEqual("45", "y", e); XMLFileHandler.isElementEqual("155", "width", e); XMLFileHandler.isElementEqual("42", "height", e); XMLFileHandler.isColorElementEqual(new EdmColor(7), "border_color", e); XMLFileHandler.isColorElementEqual(new EdmColor(0), "color_background", e); XMLFileHandler.isElementEqual("0", "border_style", e); e = (Element) doc.getElementsByTagName("widget").item(2); assertEquals("org.csstudio.opibuilder.widgets.Rectangle", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("4", "x", e); XMLFileHandler.isElementEqual("94", "y", e); XMLFileHandler.isElementEqual("271", "width", e); XMLFileHandler.isElementEqual("80", "height", e); XMLFileHandler.isColorElementEqual(new EdmColor(7), "border_color", e); XMLFileHandler.isColorElementEqual(new EdmColor(0), "color_background", e); XMLFileHandler.isElementEqual("0", "border_style", e); e = (Element) doc.getElementsByTagName("widget").item(3); assertEquals("org.csstudio.opibuilder.widgets.Label", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", e); XMLFileHandler.isElementEqual("123", "x", e); XMLFileHandler.isElementEqual("50", "y", e); XMLFileHandler.isElementEqual("42", "width", e); XMLFileHandler.isElementEqual("13", "height", e); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", e); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", e); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", e); XMLFileHandler.isElementEqual("At low", "text", e); XMLFileHandler.isElementEqual("true", "auto_size", e); XMLFileHandler.isElementEqual("1", "border_style", e); XMLFileHandler.isElementEqual("2", "border_width", e); XMLFileHandler.isElementEqual("true", "transparency", e); e = (Element) doc.getElementsByTagName("widget").item(4); assertEquals("org.csstudio.opibuilder.widgets.groupingContainer", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("8", "x", e); XMLFileHandler.isElementEqual("120", "y", e); XMLFileHandler.isElementEqual("52", "width", e); XMLFileHandler.isElementEqual("11", "height", e); e = (Element) doc.getElementsByTagName("widget").item(5); assertEquals("org.csstudio.opibuilder.widgets.Label", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", e); XMLFileHandler.isElementEqual("18", "x", e); XMLFileHandler.isElementEqual("0", "y", e); XMLFileHandler.isElementEqual("35", "width", e); XMLFileHandler.isElementEqual("13", "height", e); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", e); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", e); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", e); XMLFileHandler.isElementEqual("Hello\rMulti-line\rWorld", "text", e); XMLFileHandler.isElementEqual("true", "auto_size", e); XMLFileHandler.isElementEqual("0", "border_style", e); XMLFileHandler.isElementEqual("false", "transparency", e); } }
public void testXMLMapping2() throws EdmException { // test for TextUpdate widget mapping System.setProperty("edm2xml.colorsFile", "src/test/resources/colors.list"); String[] args = {displayFile2}; EdmConverter.main(args); Document doc = XMLFileHandler.readXml(xmlFile2); if (doc != null) { Element e = (Element) doc.getElementsByTagName("widget").item(0); assertEquals("org.csstudio.opibuilder.widgets.TextUpdate", e.getAttribute("typeId")); assertEquals("1.0", e.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Text Update", "name", e); XMLFileHandler.isElementEqual("490", "x", e); XMLFileHandler.isElementEqual("400", "y", e); XMLFileHandler.isElementEqual("110", "width", e); XMLFileHandler.isElementEqual("20", "height", e); XMLFileHandler.isElementEqual("$(S)_LLRF:ResCtrl$(N):ResErr_Avg", "pv_name", e); XMLFileHandler.isColorElementEqual(new EdmColor(112), "color_foreground", e); XMLFileHandler.isColorElementEqual(new EdmColor(5), "color_background", e); XMLFileHandler.isElementEqual("true", "color_fill", e); XMLFileHandler.isFontElementEqual("courier-medium-r-16.0", "font", e); XMLFileHandler.isElementEqual("right", "font_align", e); XMLFileHandler.isElementEqual("2", "border_width", e); XMLFileHandler.isElementEqual("true", "foregroundcolor_alarmsensitive", e); XMLFileHandler.isElementEqual("true", "border_alarmsensitive", e); } }
@Test public void testOpi_activeGroupClass() throws EdmException { // Prepare DOM model. System.setProperty("edm2xml.robustParsing", "false"); System.setProperty("edm2xml.colorsFile", EdmConverterTest.COLOR_LIST_FILE); Document doc = XMLFileHandler.createDomDocument(); Element root = doc.createElement("root"); doc.appendChild(root); String edlFile = EdmConverterTest.RESOURCES_LOCATION + "group_example_spec.edl"; EdmModel.getInstance(); EdmDisplay d = EdmModel.getDisplay(edlFile); assertTrue(d.getSubEntity(0) instanceof Edm_activeGroupClass); Edm_activeGroupClass g = (Edm_activeGroupClass) d.getSubEntity(0); Context context = new Context(doc, root, d, 0, 0); Opi_activeGroupClass o = new Opi_activeGroupClass(context, g); // XMLFileHandler.writeXML(doc); assertTrue(o instanceof OpiWidget); // Check the generated model hierarchy. assertEquals("subentity_count", 1, root.getChildNodes().getLength()); // Get objects in various places in the group hierarchy. Element subElement0 = (Element) root.getFirstChild(); assertEquals( "org.csstudio.opibuilder.widgets.groupingContainer", subElement0.getAttribute("typeId")); assertEquals("1.0", subElement0.getAttribute("version")); XMLFileHandler.isElementEqual("8", "x", subElement0); XMLFileHandler.isElementEqual("120", "y", subElement0); XMLFileHandler.isElementEqual("53", "width", subElement0); XMLFileHandler.isElementEqual("12", "height", subElement0); assertEquals(groupAttributesCount + 2, subElement0.getChildNodes().getLength()); { Element subElement00 = (Element) subElement0.getChildNodes().item(groupAttributesCount); assertEquals("org.csstudio.opibuilder.widgets.Label", subElement00.getAttribute("typeId")); assertEquals("1.0", subElement00.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", subElement00); XMLFileHandler.isElementEqual("18", "x", subElement00); XMLFileHandler.isElementEqual("0", "y", subElement00); XMLFileHandler.isElementEqual("35", "width", subElement00); XMLFileHandler.isElementEqual("13", "height", subElement00); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", subElement00); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", subElement00); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", subElement00); XMLFileHandler.isElementEqual("Homed", "text", subElement00); XMLFileHandler.isElementEqual("true", "auto_size", subElement00); XMLFileHandler.isElementEqual("0", "border_style", subElement00); XMLFileHandler.isElementEqual("false", "transparency", subElement00); Element subElement01 = (Element) subElement0.getChildNodes().item(groupAttributesCount + 1); assertEquals( "org.csstudio.opibuilder.widgets.groupingContainer", subElement01.getAttribute("typeId")); assertEquals("1.0", subElement01.getAttribute("version")); XMLFileHandler.isElementEqual("100", "x", subElement01); XMLFileHandler.isElementEqual("100", "y", subElement01); XMLFileHandler.isElementEqual("152", "width", subElement01); XMLFileHandler.isElementEqual("111", "height", subElement01); assertEquals(3 + 4, subElement01.getChildNodes().getLength()); { Element subElement010 = (Element) subElement01.getChildNodes().item(groupAttributesCount); assertEquals("org.csstudio.opibuilder.widgets.Label", subElement010.getAttribute("typeId")); assertEquals("1.0", subElement010.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", subElement010); XMLFileHandler.isElementEqual("-82", "x", subElement010); XMLFileHandler.isElementEqual("-100", "y", subElement010); XMLFileHandler.isElementEqual("35", "width", subElement010); XMLFileHandler.isElementEqual("13", "height", subElement010); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", subElement010); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", subElement010); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", subElement010); XMLFileHandler.isElementEqual("Homed", "text", subElement010); XMLFileHandler.isElementEqual("true", "auto_size", subElement010); XMLFileHandler.isElementEqual("0", "border_style", subElement010); XMLFileHandler.isElementEqual("false", "transparency", subElement010); Element subElement011 = (Element) subElement01.getChildNodes().item(groupAttributesCount + 1); assertEquals( "org.csstudio.opibuilder.widgets.groupingContainer", subElement011.getAttribute("typeId")); assertEquals("1.0", subElement011.getAttribute("version")); XMLFileHandler.isElementEqual("100", "x", subElement011); XMLFileHandler.isElementEqual("100", "y", subElement011); XMLFileHandler.isElementEqual("252", "width", subElement011); XMLFileHandler.isElementEqual("211", "height", subElement011); assertEquals(1 + 4, subElement011.getChildNodes().getLength()); { Element subElement0110 = (Element) subElement011.getChildNodes().item(groupAttributesCount); assertEquals( "org.csstudio.opibuilder.widgets.Label", subElement0110.getAttribute("typeId")); assertEquals("1.0", subElement0110.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", subElement0110); XMLFileHandler.isElementEqual("-182", "x", subElement0110); XMLFileHandler.isElementEqual("-200", "y", subElement0110); XMLFileHandler.isElementEqual("35", "width", subElement0110); XMLFileHandler.isElementEqual("13", "height", subElement0110); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", subElement0110); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", subElement0110); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", subElement0110); XMLFileHandler.isElementEqual("Homed", "text", subElement0110); XMLFileHandler.isElementEqual("true", "auto_size", subElement0110); XMLFileHandler.isElementEqual("0", "border_style", subElement0110); XMLFileHandler.isElementEqual("false", "transparency", subElement0110); } Element subElement012 = (Element) subElement01.getChildNodes().item(groupAttributesCount + 2); assertEquals( "org.csstudio.opibuilder.widgets.groupingContainer", subElement012.getAttribute("typeId")); assertEquals("1.0", subElement012.getAttribute("version")); XMLFileHandler.isElementEqual("200", "x", subElement012); XMLFileHandler.isElementEqual("200", "y", subElement012); XMLFileHandler.isElementEqual("352", "width", subElement012); XMLFileHandler.isElementEqual("311", "height", subElement012); assertEquals(1 + 4, subElement012.getChildNodes().getLength()); { Element subElement0120 = (Element) subElement012.getChildNodes().item(groupAttributesCount); assertEquals( "org.csstudio.opibuilder.widgets.Label", subElement0120.getAttribute("typeId")); assertEquals("1.0", subElement0120.getAttribute("version")); XMLFileHandler.isElementEqual("EDM Label", "name", subElement0120); XMLFileHandler.isElementEqual("-282", "x", subElement0120); XMLFileHandler.isElementEqual("-300", "y", subElement0120); XMLFileHandler.isElementEqual("35", "width", subElement0120); XMLFileHandler.isElementEqual("13", "height", subElement0120); XMLFileHandler.isFontElementEqual("helvetica-bold-r-12.0", "font", subElement0120); XMLFileHandler.isColorElementEqual(new EdmColor(10), "color_foreground", subElement0120); XMLFileHandler.isColorElementEqual(new EdmColor(3), "color_background", subElement0120); XMLFileHandler.isElementEqual("Homed", "text", subElement0120); XMLFileHandler.isElementEqual("true", "auto_size", subElement0120); XMLFileHandler.isElementEqual("0", "border_style", subElement0120); XMLFileHandler.isElementEqual("false", "transparency", subElement0120); } } } }