1
2 """
3 Startup plugin for command-line exporter
4
5 Copyright 2009 Glencoe Software, Inc. All rights reserved.
6 Use is subject to license terms supplied in LICENSE.txt
7
8 """
9
10 import os
11 import sys
12
13 from omero.cli import BaseControl, CLI, NewFileType
14
15 HELP="""Support for exporting data in XML and TIFF formats"""
16
17
19
25
27
28 img = args.obj
29 if 0 > img.find(":"):
30 self.ctx.die(5, "Format: 'Image:<id>'")
31
32 klass, id = img.split(":")
33 images = []
34 if klass == "Image":
35 images.append(id)
36 else:
37 self.ctx.die(5, "Can't add type: %s" % klass)
38
39 e = None
40 handle = args.file
41
42 c = self.ctx.conn(args)
43 e = c.getSession().createExporter()
44
45 remove = True
46 try:
47 for img in images:
48 e.addImage(long(img))
49
50 import omero
51 try:
52 if args.type == "TIFF":
53 l = e.generateTiff()
54 else:
55 l = e.generateXml()
56 except omero.ServerError, se:
57 self.ctx.err("%s: %s" % (se.__class__.__name__, se.message))
58 return
59
60 remove = False
61 offset = 0
62 while True:
63 rv = e.read(offset, 1000*1000)
64 if not rv:
65 break
66 offset += len(rv)
67 if handle == sys.stdout:
68 sys.stdout.buffer.write(rv)
69 else:
70 handle.write(rv)
71
72 finally:
73 if handle != sys.stdout:
74 handle.close()
75 if remove:
76 os.remove(handle.name)
77 e.close()
78
79 try:
80 register("export", ExportControl, HELP)
81 except NameError:
82 if __name__ == "__main__":
83 cli = CLI()
84 cli.register("export", ExportControl, HELP)
85 cli.invoke(sys.argv[1:])
86