def test_annotateAndAnnotated(self):
        # There's a bug somewhere which means annotating the table with the
        # version annotation, then using the table as a FileAnnotation on
        # an object, causes the version annotation to be lost
        # Closing and reopening the table seems to work (see
        # FeatureTable.createTable)
        cli, sess = self.create_client()
        ft = FeatureTable(client=cli, tableName=self.tableName)
        fts = ['a [0]', 'a [1]', 'b [0]']
        ft.createTable(fts, version=self.version)
        tid = ft.tc.tableId

        self.assertEqual(self.version, unwrapVersion(ft.versiontag))

        vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid)
        self.assertEqual(self.version, unwrapVersion(vertag))

        p = omero.model.ProjectI()
        p.setName(wrap('tmp'))
        p = self.sess.getUpdateService().saveAndReturnObject(p)
        pid = unwrap(p.getId())
        p = ft.conn.getObject('Project', pid)
        WndcharmStorage.addFileAnnotationTo(ft.tc, p)

        vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid)
        self.assertEqual(self.version, unwrapVersion(vertag))
        self.delete('/Project', pid)
        self.delete('/OriginalFile', tid)
    def checkClassifierTablesVersion(self, ct):
        self.assertEqual(unwrapVersion(ct.versiontag), self.version)

        verF = WndcharmStorage.getVersion(
            ct.tcF.conn, 'OriginalFile', ct.tcF.tableId)
        self.assertEqual(unwrapVersion(verF), self.version)

        verW = WndcharmStorage.getVersion(
            ct.tcW.conn, 'OriginalFile', ct.tcW.tableId)
        self.assertEqual(unwrapVersion(verW), self.version)

        verL = WndcharmStorage.getVersion(
            ct.tcL.conn, 'OriginalFile', ct.tcL.tableId)
        self.assertEqual(unwrapVersion(verL), self.version)
    def test_versionAnnotation(self):
        version = str(uuid.uuid1())
        created = WndcharmStorage.createVersionAnnotation(self.conn, version)
        retrieved = WndcharmStorage.getVersionAnnotation(self.conn, version)

        self.assertEqual(unwrap(created.getNs()),
                         WndcharmStorage.WNDCHARM_VERSION_NAMESPACE)
        self.assertEqual(unwrapVersion(created), version)
        self.assertEqual(unwrap(retrieved.getNs()),
                         WndcharmStorage.WNDCHARM_VERSION_NAMESPACE)
        self.assertEqual(unwrapVersion(retrieved), version)

        pid = self.create_project('versionAnnotation')
        self.assertIsNone(WndcharmStorage.getVersion(self.conn, 'Project', pid))

        WndcharmStorage.addTagTo(self.conn, retrieved, 'Project', pid)
        a = WndcharmStorage.getVersion(self.conn, 'Project', pid)
        self.assertEqual(unwrap(a.getNs()),
                         WndcharmStorage.WNDCHARM_VERSION_NAMESPACE)
        self.assertEqual(unwrapVersion(a), version)

        self.delete('/Project', pid)
    def test_createTable(self):
        tid = self.create_table()
        ft = FeatureTable(client=self.cli, tableName=self.tableName)
        ft.openTable(tid)
        self.assertEqual(self.version, unwrapVersion(ft.versiontag))

        vertag = WndcharmStorage.getVersion(ft.conn, 'OriginalFile', tid)
        self.assertEqual(self.version, unwrapVersion(vertag))

        headers = ft.tc.getHeaders()
        self.assertEqual(len(headers), 3)
        self.assertEqual([h.name for h in headers], ['id', 'a', 'b'])
        self.assertEqual([h.size for h in headers[1:]], [2, 1])
    def test_getVersion(self):
        version = str(uuid.uuid1())
        tableid = self.create_table()
        file = omero.model.OriginalFileI(tableid, False)
        version = str(uuid.uuid1())
        tagid = self.create_tag(version, WndcharmStorage.WNDCHARM_VERSION_NAMESPACE)
        tag = omero.model.TagAnnotationI(tagid, False)
        link = omero.model.OriginalFileAnnotationLinkI()
        link.setChild(tag)
        link.setParent(file)
        link = self.sess.getUpdateService().saveAndReturnObject(link)

        retrieved = WndcharmStorage.getVersion(
            self.conn, 'OriginalFile', unwrap(file.getId()))
        self.assertEqual(unwrapVersion(retrieved), version)