Example #1
0
  /**
   * 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);
  }
Example #3
0
  @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);
  }
Example #4
0
  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);
    }
  }
Example #5
0
  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);
        }
      }
    }
  }