/
meta.ome.xml
198 lines (191 loc) · 8 KB
/
meta.ome.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<?xml version="1.0" encoding="UTF-8"?>
<!--
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright 2006-2017 University of Dundee. All rights reserved.
# Use is subject to license terms supplied in LICENSE.txt
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
<types>
<!-- MANAGEMENT -->
<type id="ome.model.meta.ExperimenterGroup" global="true" described="true" annotated="true">
<!-- Note: relates to Group in model-->
<properties>
<required name="name" type="string" unique="true"/><!-- unique required so not 'named' -->
<required name="ldap" type="boolean"/>
<child name="groupExperimenterMap" type="ome.model.meta.GroupExperimenterMap" target="ome.model.meta.Experimenter"/>
<map name="config" type="string"/>
</properties>
</type>
<type id="ome.model.meta.Experimenter" global="true" annotated="true">
<properties>
<parent name="groupExperimenterMap" ordered="true" type="ome.model.meta.GroupExperimenterMap" target="ome.model.meta.ExperimenterGroup"/>
<!-- Note: in the model "at least one of firstName, lastName, email and omeName"
must be completed. The restriction here is more rigid so empty strings may
need to be used if importing data directly from the model. In most cases
the user should either be on the system or it will be sufficient to provide
as close a representation as practical to the imported data -->
<required name="omeName" type="string" unique="true"/>
<required name="firstName" type="string"/>
<optional name="middleName" type="string"/>
<!-- Note: middleName is not used model -->
<required name="lastName" type="string"/>
<optional name="institution" type="string"/>
<required name="ldap" type="boolean"/>
<component id="ome.model.internal.Email" required="false">
<optional name="email" type="string"/>
</component>
<!-- TODO: ## add to dsl [email/] -->
<map name="config" type="string"/>
</properties>
</type>
<link id="ome.model.meta.GroupExperimenterMap" global="true">
<!-- Note: GroupExperimenterMap is not in model-->
<properties>
<from_parent type="ome.model.meta.ExperimenterGroup"/>
<to_child type="ome.model.meta.Experimenter" ordered="true"/>
<required name="owner" type="boolean"/>
</properties>
</link>
<!-- EVENTS -->
<type id="ome.model.meta.Session" global="true" annotated="true">
<!-- Note: Session is not in model-->
<properties>
<!-- Type & Group are not really optional. Needed to bootstrap.
Constraints are added later -->
<manyone name="node" type="ome.model.meta.Node"/>
<required name="uuid" type="string" unique="true"/>
<required name="owner" type="ome.model.meta.Experimenter"/>
<optional name="sudoer" type="ome.model.meta.Experimenter"/>
<required name="timeToIdle" type="long"/>
<required name="timeToLive" type="long"/>
<required name="started" type="timestamp"/>
<optional name="closed" type="timestamp"/>
<optional name="message" type="text"/>
<required name="defaultEventType" type="string"/>
<optional name="userAgent" type="string"/>
<optional name="userIP" type="string"/>
<onemany name="events" type="ome.model.meta.Event" inverse="session"/>
</properties>
</type>
<type id="ome.model.meta.Node" global="true" annotated="true">
<properties>
<onemany name="sessions" type="ome.model.meta.Session" inverse="node"/>
<required name="uuid" type="string" unique="true"/>
<required name="conn" type="text"/>
<required name="up" type="timestamp"/>
<optional name="down" type="timestamp"/>
<optional name="scale" type="int"/>
</properties>
</type>
<enum id="ome.model.enums.EventType">
<!-- Note: EventType is not in model-->
<entry name="Import"/>
<entry name="Internal"/>
<entry name="Shoola"/>
<entry name="User"/>
<entry name="Task"/>
<entry name="Test"/>
<entry name="Processing"/>
<entry name="FullText"/>
<entry name="Sessions"/>
</enum>
<type id="ome.model.meta.Event" immutable="true" global="true">
<!-- Note: Event is not in model-->
<properties>
<optional name="status" type="string"/>
<required name="time" type="timestamp"/>
<required name="experimenter" type="ome.model.meta.Experimenter"/>
<required name="experimenterGroup" type="ome.model.meta.ExperimenterGroup"/>
<required name="type" type="ome.model.enums.EventType"/>
<optional name="containingEvent" type="ome.model.meta.Event"/>
<onemany name="logs" type="ome.model.meta.EventLog" inverse="event"/>
<manyone name="session" type="ome.model.meta.Session"/>
</properties>
</type>
<type id="ome.model.meta.EventLog" immutable="true" global="true">
<!-- Note: EventLog is not in model-->
<properties>
<required name="entityId" type="long"/>
<required name="entityType" type="string"/>
<required name="action" type="string"/>
<manyone name="event" type="ome.model.meta.Event"/>
</properties>
</type>
<type id="ome.model.meta.ExternalInfo" immutable="true">
<!-- Note: ExternalInfo not in model-->
<properties>
<required name="entityId" type="long" mutable="false"/>
<required name="entityType" type="string" mutable="false"/>
<optional name="lsid" type="string" mutable="false"/>
<optional name="uuid" type="string" mutable="false"/>
</properties>
</type>
<type id="ome.model.meta.DBPatch" immutable="true" global="true">
<!-- Note: DBPatch is not in model-->
<properties>
<required name="currentVersion" type="string" mutable="false"/>
<required name="currentPatch" type="int" mutable="false"/>
<required name="previousVersion" type="string" mutable="false"/>
<required name="previousPatch" type="int" mutable="false"/>
<optional name="finished" type="timestamp" mutable="false"/>
<optional name="message" type="string" mutable="false"/>
</properties>
</type>
<type id="ome.model.meta.Share" global="true" superclass="ome.model.meta.Session">
<!-- Note: Share is not in model-->
<properties>
<required name="group" type="ome.model.meta.ExperimenterGroup"/>
<required name="itemCount" type="long"/>
<required name="active" type="boolean"/>
<required name="data" type="byte[]"/>
</properties>
</type>
<link id="ome.model.meta.ShareMember" global="true">
<!-- Note: ShareMember is not in model-->
<properties>
<from_parent type="ome.model.meta.Share"/>
<to_child type="ome.model.meta.Experimenter"/>
</properties>
</link>
<type id="ome.model.meta.Namespace" global="true" annotated="true" named="true" described="true">
<!-- Note: Namespace is not in model-->
<properties>
<!-- Depending on the use of the name space,
keywords are the valid string values -->
<optional name="keywords" type="string[]"/>
<!-- Whether multiple keywords are supported.
If a user adds multiple keywords to a type
which does not support multiple, then the
first value MAY be taken by clients -->
<optional name="multivalued" type="boolean"/>
<!-- Whether or not objects using this
namespace are intended for display. Null
values or false will lead to many clients
hiding the objects -->
<optional name="display" type="boolean"/>
<!-- The human-readable text denoting this
namespace -->
<optional name="displayName" type="text"/>
</properties>
</type>
<enum id="ome.model.enums.AdminPrivilege">
<!-- Note: AdminPrivilege is not in model-->
<entry name="Chgrp"/>
<entry name="Chown"/>
<entry name="DeleteFile"/>
<entry name="DeleteManagedRepo"/>
<entry name="DeleteOwned"/>
<entry name="DeleteScriptRepo"/>
<entry name="ModifyGroup"/>
<entry name="ModifyGroupMembership"/>
<entry name="ModifyUser"/>
<entry name="ReadSession"/>
<entry name="Sudo"/>
<entry name="WriteFile"/>
<entry name="WriteManagedRepo"/>
<entry name="WriteOwned"/>
<entry name="WriteScriptRepo"/>
</enum>
</types>