Пример #1
0
    def save_and_load(self, filename):
        factory = self.element_factory

        f = open(filename, 'r')
        storage.load(f, factory=self.element_factory)
        f.close()

        self.backup_service.backup()

        elements = list(map(factory.lookup, list(factory.keys())))

        orig = StringIO()
        storage.save(XMLWriter(orig), factory=self.element_factory)

        self.backup_service.restore()

        restored = list(map(factory.lookup, list(factory.keys())))

        assert len(elements) == len(restored)
        assert elements != restored

        copy = StringIO()
        storage.save(XMLWriter(copy), factory=self.element_factory)

        orig = orig.getvalue()
        copy = copy.getvalue()
        assert len(orig) == len(copy)
Пример #2
0
def test_elements_ns_1():
    w = Writer()
    xml_w = XMLWriter(w)
    xml_w.startDocument()
    xml_w.startPrefixMapping("g", "http://gaphor.devjavu.com/schema")
    xml_w.startElementNS(("http://gaphor.devjavu.com/schema", "foo"), "qn", {})
    xml_w.endElementNS(("http://gaphor.devjavu.com/schema", "foo"), "qn")

    xml = (
        """<?xml version="1.0" encoding="%s"?>\n<g:foo xmlns:g="http://gaphor.devjavu.com/schema"/>"""
        % sys.getdefaultencoding())
    assert w.s == xml, w.s
Пример #3
0
    def test_elements_ns_1(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startPrefixMapping('g', 'http://gaphor.devjavu.com/schema')
        xml_w.startElementNS(('http://gaphor.devjavu.com/schema', 'foo'), 'qn',
                             {})
        xml_w.endElementNS(('http://gaphor.devjavu.com/schema', 'foo'), 'qn')

        xml = """<?xml version="1.0" encoding="%s"?>\n<g:foo xmlns:g="http://gaphor.devjavu.com/schema"/>""" % sys.getdefaultencoding(
        )
        assert w.s == xml, w.s
Пример #4
0
    def test_elements_test(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startElement('foo', {})
        xml_w.startElement('bar', {})
        xml_w.characters('hello')
        xml_w.endElement('bar')
        xml_w.endElement('foo')

        xml = """<?xml version="1.0" encoding="%s"?>\n<foo>\n<bar>hello</bar>\n</foo>""" % sys.getdefaultencoding(
        )
        assert w.s == xml, w.s
Пример #5
0
    def test_elements_ns_1(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startPrefixMapping('g', 'http://gaphor.devjavu.com/schema')
        xml_w.startElementNS(('http://gaphor.devjavu.com/schema', 'foo'), 'qn', {})
        xml_w.endElementNS(('http://gaphor.devjavu.com/schema', 'foo'), 'qn')

        xml = """<?xml version="1.0" encoding="%s"?>\n<g:foo xmlns:g="http://gaphor.devjavu.com/schema"/>""" % sys.getdefaultencoding()
        assert w.s == xml, w.s
Пример #6
0
def test_elements_test():
    w = Writer()
    xml_w = XMLWriter(w)
    xml_w.startDocument()
    xml_w.startElement("foo", {})
    xml_w.startElement("bar", {})
    xml_w.characters("hello")
    xml_w.endElement("bar")
    xml_w.endElement("foo")

    xml = (
        """<?xml version="1.0" encoding="%s"?>\n<foo>\n<bar>hello</bar>\n</foo>"""
        % sys.getdefaultencoding())
    assert w.s == xml, w.s
Пример #7
0
    def test_elements_test(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startElement('foo', {})
        xml_w.startElement('bar', {})
        xml_w.characters('hello')
        xml_w.endElement('bar')
        xml_w.endElement('foo')

        xml = """<?xml version="1.0" encoding="%s"?>\n<foo>\n<bar>hello</bar>\n</foo>""" % sys.getdefaultencoding()
        assert w.s == xml, w.s
Пример #8
0
    def test_load_save(self):
        """Test loading and saving models"""

        dist = pkg_resources.get_distribution('gaphor')
        path = os.path.join(dist.location, 'test-diagrams/simple-items.gaphor')

        with open(path, 'r') as ifile:
            storage.load(ifile, factory=self.element_factory)

        pf = PseudoFile()

        storage.save(XMLWriter(pf), factory=self.element_factory)

        with open(path, 'r') as ifile:
            orig = ifile.read()

        copy = pf.data

        with open('tmp.gaphor', 'w') as ofile:
            ofile.write(copy)

        expr = re.compile('gaphor-version="[^"]*"')
        orig = expr.sub('%VER%', orig)
        copy = expr.sub('%VER%', copy)

        self.assertEquals(copy, orig, 'Saved model does not match copy')
Пример #9
0
    def test_load_save(self):

        """Test loading and saving models"""

        dist = importlib_metadata.distribution("gaphor")
        path = dist.locate_file("test-diagrams/simple-items.gaphor")

        with open(path, "r") as ifile:
            storage.load(ifile, factory=self.element_factory)

        pf = PseudoFile()

        storage.save(XMLWriter(pf), factory=self.element_factory)

        with open(path, "r") as ifile:

            orig = ifile.read()

        copy = pf.data

        with open("tmp.gaphor", "w") as ofile:

            ofile.write(copy)

        expr = re.compile('gaphor-version="[^"]*"')
        orig = expr.sub("%VER%", orig)
        copy = expr.sub("%VER%", copy)

        self.maxDiff = None
        assert copy == orig, "Saved model does not match copy"
Пример #10
0
    def test_load_save(self):
        """Test loading and saving models"""

        dist = pkg_resources.get_distribution("gaphor")
        path = os.path.join(dist.location, "test-diagrams/simple-items.gaphor")

        with io.open(path, "r") as ifile:
            storage.load(ifile, factory=self.element_factory)

        pf = PseudoFile()

        storage.save(XMLWriter(pf), factory=self.element_factory)

        with io.open(path, "r") as ifile:

            orig = ifile.read()

        copy = pf.data

        with io.open("tmp.gaphor", "w") as ofile:

            ofile.write(copy)

        expr = re.compile('gaphor-version="[^"]*"')
        orig = expr.sub("%VER%", orig)
        copy = expr.sub("%VER%", copy)

        self.maxDiff = None
        self.assertEqual(copy, orig, "Saved model does not match copy")
Пример #11
0
    def test_elements_ns_1(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startPrefixMapping("g", "http://gaphor.devjavu.com/schema")
        xml_w.startElementNS(("http://gaphor.devjavu.com/schema", "foo"), "qn", {})
        xml_w.endElementNS(("http://gaphor.devjavu.com/schema", "foo"), "qn")

        xml = (
            """<?xml version="1.0" encoding="%s"?>\n<g:foo xmlns:g="http://gaphor.devjavu.com/schema"/>"""
            % sys.getdefaultencoding()
        )
        assert w.s == xml, w.s
Пример #12
0
    def test_elements_1(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startElement('foo', {})
        xml_w.endElement('foo')

        xml = """<?xml version="1.0" encoding="%s"?>\n<foo/>""" % sys.getdefaultencoding(
        )
        assert w.s == xml, w.s + ' != ' + xml
Пример #13
0
    def test_elements_1(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startElement('foo', {})
        xml_w.endElement('foo')

        xml = """<?xml version="1.0" encoding="%s"?>\n<foo/>""" % sys.getdefaultencoding()
        assert w.s == xml, w.s + ' != ' + xml
Пример #14
0
    def save():
        """
        Save diagram into string.
        """

        f = StringIO()
        storage.save(XMLWriter(f), element_factory)
        data = f.getvalue()
        f.close()

        return data
Пример #15
0
    def export(self, filename):
        out = open(filename, "w")

        xmi = XMLWriter(out)

        attributes = dict()
        attributes["xmi.version"] = self.XMI_VERSION
        attributes["xmlns:xmi"] = self.XMI_NAMESPACE
        attributes["xmlns:UML"] = self.UML_NAMESPACE

        xmi.startElement("XMI", attrs=attributes)

        for package in self.element_factory.select(self.select_package):
            self.handle(xmi, package)

        for generalization in self.element_factory.select(
                self.select_generalization):
            self.handle(xmi, generalization)

        for realization in self.element_factory.select(
                self.select_realization):
            self.handle(xmi, realization)

        xmi.endElement("XMI")

        logger.debug(self.handled_ids)
Пример #16
0
    def test_connection(self):
        """
        Test connection loading of an association and two classes.
        (Should count for all line-like objects alike if this works).
        """
        c1 = self.create(items.ClassItem, UML.Class)
        c2 = self.create(items.ClassItem, UML.Class)
        c2.matrix.translate(200, 200)
        self.diagram.canvas.update_matrix(c2)
        assert tuple(self.diagram.canvas.get_matrix_i2c(c2)) == (1, 0, 0, 1,
                                                                 200, 200)

        a = self.create(items.AssociationItem)

        self.connect(a, a.head, c1)
        head_pos = a.head.pos

        self.connect(a, a.tail, c2)
        tail_pos = a.tail.pos

        self.diagram.canvas.update_now()

        assert a.head.pos.y == 0, a.head.pos
        assert a.tail.pos.x == 10, a.tail.pos
        # assert a.tail.y == 200, a.tail.pos
        assert a.subject

        fd = StringIO()
        storage.save(XMLWriter(fd), factory=self.element_factory)
        data = fd.getvalue()
        fd.close()

        old_a_subject_id = a.subject.id

        self.element_factory.flush()
        assert not list(self.element_factory.select())
        fd = StringIO(data)
        storage.load(fd, factory=self.element_factory)
        fd.close()

        diagrams = list(self.kindof(UML.Diagram))
        self.assertEqual(1, len(diagrams))
        d = diagrams[0]
        a = d.canvas.select(lambda e: isinstance(e, items.AssociationItem))[0]
        self.assertTrue(a.subject is not None)
        self.assertEqual(old_a_subject_id, a.subject.id)
        cinfo_head = a.canvas.get_connection(a.head)
        self.assertTrue(cinfo_head.connected is not None)
        cinfo_tail = a.canvas.get_connection(a.tail)
        self.assertTrue(cinfo_tail.connected is not None)
        self.assertTrue(not cinfo_head.connected is cinfo_tail.connected)
Пример #17
0
    def test_save_item(self):
        """Save a diagranm item too.
        """
        diagram = self.element_factory.create(UML.Diagram)
        diagram.create(CommentItem, subject=self.element_factory.create(UML.Comment))

        out = PseudoFile()
        storage.save(XMLWriter(out), factory=self.element_factory)
        out.close()

        assert "<Diagram " in out.data
        assert "<Comment " in out.data
        assert "<canvas>" in out.data
        assert ' type="CommentItem"' in out.data, out.data
Пример #18
0
    def save(self):
        """
        Save diagram into string.
        """
        from gaphor.storage import storage
        from gaphor.misc.xmlwriter import XMLWriter
        f = StringIO()
        storage.save(XMLWriter(f), factory=self.element_factory)
        data = f.getvalue()
        f.close()

        self.element_factory.flush()
        assert not list(self.element_factory.select())
        assert not list(self.element_factory.lselect())
        return data
Пример #19
0
    def export(self, filename):
        out = open(filename, "w")

        xmi = XMLWriter(out)

        attributes = dict()
        attributes["xmi.version"] = self.XMI_VERSION
        attributes["xmlns:xmi"] = self.XMI_NAMESPACE
        attributes["xmlns:UML"] = self.UML_NAMESPACE

        xmi.startElement("XMI", attrs=attributes)

        for package in self.element_factory.select(self.select_package):
            self.handle(xmi, package)

        for generalization in self.element_factory.select(self.select_generalization):
            self.handle(xmi, generalization)

        for realization in self.element_factory.select(self.select_realization):
            self.handle(xmi, realization)

        xmi.endElement("XMI")

        logger.debug(self.handled_ids)
Пример #20
0
    def test_save_uml(self):
        """Saving gaphor.UML model elements.
        """
        self.element_factory.create(UML.Package)
        self.element_factory.create(UML.Diagram)
        self.element_factory.create(UML.Comment)
        self.element_factory.create(UML.Class)

        out = PseudoFile()
        storage.save(XMLWriter(out), factory=self.element_factory)
        out.close()

        assert "<Package " in out.data
        assert "<Diagram " in out.data
        assert "<Comment " in out.data
        assert "<Class " in out.data
Пример #21
0
    def test_elements_2(self):
        w = Writer()
        xml_w = XMLWriter(w)
        xml_w.startDocument()
        xml_w.startElement("foo", {})
        xml_w.startElement("bar", {})
        xml_w.endElement("bar")
        xml_w.endElement("foo")

        xml = (
            """<?xml version="1.0" encoding="%s"?>\n<foo>\n<bar/>\n</foo>"""
            % sys.getdefaultencoding()
        )
        assert w.s == xml, w.s
Пример #22
0
    def test_save_uml(self):
        """Saving gaphor.uml2 model elements.
        """
        self.element_factory.create(uml2.Package)
        self.element_factory.create(uml2.Diagram)
        self.element_factory.create(uml2.Comment)
        self.element_factory.create(uml2.Class)

        out = PseudoFile()
        storage.save(XMLWriter(out), factory=self.element_factory)
        out.close()

        assert '<Package ' in out.data
        assert '<Diagram ' in out.data
        assert '<Comment ' in out.data
        assert '<Class ' in out.data
Пример #23
0
    def save(self, filename):
        """Save the current UML model to the specified file name.  Before
        writing the model file, this will verify that there are no orphan
        references.  It will also verify that the filename has the correct
        extension.  A status window is displayed while the GIdleThread
        is executed.  This thread actually saves the model."""

        log.info("Saving file")
        log.debug("File name is %s" % filename)

        if not filename or not len(filename):
            return

        self.verify_orphans()
        filename = self.verify_filename(filename)

        main_window = self.main_window
        queue = Queue()
        status_window = StatusWindow(
            _("Saving..."),
            _("Saving model to %s") % filename,
            parent=main_window.window,
            queue=queue,
        )
        try:
            with open(filename.encode("utf-8"), "w") as out:
                saver = storage.save_generator(XMLWriter(out),
                                               self.element_factory)
                worker = GIdleThread(saver, queue)
                worker.start()
                worker.wait()

            if worker.error:
                worker.reraise()

            self.filename = filename
        except:
            error_handler(message=_("Error while saving model to file %s") %
                          filename)
            raise
        finally:
            status_window.destroy()
Пример #24
0
    def save(self, filename):
        """Save the current UML model to the specified file name.  Before
        writing the model file, this will verify that there are no orphan
        references.  It will also verify that the filename has the correct
        extension.  A status window is displayed while the GIdleThread
        is executed.  This thread actually saves the model."""

        if not filename or not len(filename):
            return

        self.verify_orphans()
        filename = self.verify_filename(filename)

        main_window = self.main_window
        queue = Queue()
        status_window = StatusWindow(
            gettext("Saving..."),
            gettext("Saving model to {filename}").format(filename=filename),
            parent=main_window.window,
            queue=queue,
        )
        try:
            with open(filename.encode("utf-8"), "w") as out:
                saver = storage.save_generator(XMLWriter(out),
                                               self.element_factory)
                worker = GIdleThread(saver, queue)
                worker.start()
                worker.wait()

            if worker.error:
                worker.reraise()

            self.filename = filename
            self.event_manager.handle(FileSaved(self, filename))
        except (OSError, QueueEmpty, QueueFull):
            error_handler(message=gettext(
                "Error while saving model to file {filename}").format(
                    filename=filename))
            raise
        finally:
            status_window.destroy()
Пример #25
0
 def export(self, filename):
     writer = XMLWriter(filename, "utf-8")
     writer.startDocument()
     writer.startElement("Zaakspecificatie", {})
     # TODO: Header stuff
     writer.startElement("Toestandsverloop", {})
     self._export_toestanden(writer)
     writer.endElement("Toestandsverloop")
     writer.endElement("Zaakspecificatie")
     writer.endDocument()