Project

General

Profile

1 6635 leinfelder
<%@ page language="java" %>
2
<%@ page import="java.util.Set,java.util.Map,java.util.Vector,edu.ucsb.nceas.utilities.PropertiesMetaData" %>
3
<%@ page import="edu.ucsb.nceas.utilities.MetaDataGroup,edu.ucsb.nceas.utilities.MetaDataProperty" %>
4
<%
5
/**
6
 *  '$RCSfile$'
7
 *    Copyright: 2008 Regents of the University of California and the
8
 *               National Center for Ecological Analysis and Synthesis
9
 *  For Details: http://www.nceas.ucsb.edu/
10
 *
11
 *   '$Author$'
12
 *     '$Date$'
13
 * '$Revision$'
14
 *
15
 * This program is free software; you can redistribute it and/or modify
16
 * it under the terms of the GNU General Public License as published by
17
 * the Free Software Foundation; either version 2 of the License, or
18
 * (at your option) any later version.
19
 *
20
 * This program is distributed in the hope that it will be useful,
21
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
 * GNU General Public License for more details.
24
 *
25
 * You should have received a copy of the GNU General Public License
26
 * along with this program; if not, write to the Free Software
27
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
 */
29
%>
30
31
<html>
32
<head>
33
34
<title>DataONE Configuration</title>
35
<link rel="stylesheet" type="text/css"
36
        href="<%= request.getContextPath() %>/admin/admin.css"></link>
37
<script language="JavaScript" type="text/JavaScript" src="<%= request.getContextPath() %>/admin/admin.js"></script>
38
39
</head>
40
<body>
41
<%@ include file="./header-section.jsp"%>
42
43
<img src="<%= request.getContextPath() %>/metacat-logo.png" width="100px" align="right"/>
44
<h2>DataONE Configuration</h2>
45
46 6987 jones
<p>
47
    DataONE configuration is optional; choose 'Skip' below to proceed to the next configuration section,
48
    unless you want to join the DataONE federation.
49
</p>
50 6635 leinfelder
<p>
51 6987 jones
	<a href="http://www.dataone.org" target="_D1">DataONE</a> is a federation of data repositories (called Member Nodes)
52
    that work together to create a seamless, interoperable network to store, preserve, discover, and publish scientific data.
53
	Becoming a DataONE Member Node is a means of distributing data and metadata using a common set of standards, making it
54
	easy to build software systems that can interact with any of the federated repository nodes.  Metacat can be used
55
	to join the DataONE federation by configuring Metacat to act as a Member Node and applying with DataONE to become a
56
	Member Node.  Once a node's application is approved and Metacat is configured, metadata will be synchronized in the
57
	network for easy discovery, and replicas of data and metadata can be housed on other Member Nodes for
58
	archival safe-keeping. In addition, a Metacat Member Node can optionally provide space to store replicas of data from
59
	other Member Nodes that wish to preserve their data in the federation.
60 6861 leinfelder
<p/>
61 6987 jones
<p> To configure Metacat as a Member Node, you must first obtain a Member Node X.509 certificate that will
62
    be used to authenticate this node, and you must have a registered and verified account with DataONE that can
63
    be used as the point of contact for the candidate Member Node.  Once you have this information, fill out
64
    the form below with the proper configuration information, and then click 'Register', which will send the
65
    registration data to DataONE. A unique Member Node ID will be assigned and should only be used for this
66
    node and never shared or altered.
67 6861 leinfelder
<p/>
68 6635 leinfelder
<br clear="right"/>
69
70
<%@ include file="page-message-section.jsp"%>
71
72
<form method="POST" name="configuration_form" action="<%= request.getContextPath() %>/admin"
73
                                        onsubmit="return submitForm(this);">
74
75
	<h3>Member Node Configuration</h3>
76 6987 jones
	General information identifiying this node, its owner, and contents.  You will need
77
	   a certificate to identify the node, and a DataONE account to act as a node contact.
78
79 6635 leinfelder
	<hr class="config-line">
80
81
	<div class="form-row">
82
		<img class="question-mark" src="style/images/question-mark.gif"
83 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
84 6635 leinfelder
		<div class="textinput-label">
85 6987 jones
			<label for="dataone.nodeName" title="A short, human-readable name for this node">Node Name</label>
86 6635 leinfelder
		</div>
87
		<input class="textinput"
88
			id="dataone.nodeName"
89
			name="dataone.nodeName"
90
			value="<%= request.getAttribute("dataone.nodeName") %>"/>
91
	</div>
92
	<div class="form-row">
93
		<img class="question-mark" src="style/images/question-mark.gif"
94 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
95 6635 leinfelder
		<div class="textinput-label">
96 6987 jones
			<label for="dataone.nodeDescription" title="A brief description of the node and its holdings">Node Description</label>
97 6635 leinfelder
		</div>
98
		<input class="textinput"
99
			id="dataone.nodeDescription"
100
			name="dataone.nodeDescription"
101
			value="<%= request.getAttribute("dataone.nodeDescription") %>"/>
102
	</div>
103
	<div class="form-row">
104
		<img class="question-mark" src="style/images/question-mark.gif"
105 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
106 6635 leinfelder
		<div class="textinput-label">
107 6987 jones
			<label for="dataone.memberNodeId" title="The DataONE-assigned unique identifier for this node">Node Identifier</label>
108 6635 leinfelder
		</div>
109 6987 jones
		<span class="textinput"
110 6635 leinfelder
			id="dataone.memberNodeId"
111 6987 jones
			name="dataone.memberNodeId">
112
			<%= request.getAttribute("dataone.memberNodeId") %></span>
113 6635 leinfelder
	</div>
114
	<div class="form-row">
115
		<img class="question-mark" src="style/images/question-mark.gif"
116 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
117 6635 leinfelder
		<div class="textinput-label">
118 6987 jones
			<label for="dataone.subject" title="The account in Distinguished Name (DN) format that represents this node in all service interactions">Node Subject</label>
119 6635 leinfelder
		</div>
120
		<input class="textinput"
121
			id="dataone.subject"
122
			name="dataone.subject"
123
			value="<%= request.getAttribute("dataone.subject") %>"/>
124
	</div>
125
	<div class="form-row">
126
		<img class="question-mark" src="style/images/question-mark.gif"
127 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
128 6635 leinfelder
		<div class="textinput-label">
129 6987 jones
			<label for="dataone.contactSubject" title="A verified account in DN format to be used as the primary node contact for this node">Contact Subject</label>
130 6985 jones
		</div>
131
		<input class="textinput"
132
			id="dataone.contactSubject"
133
			name="dataone.contactSubject"
134
			value="<%= request.getAttribute("dataone.contactSubject") %>"/>
135
	</div>
136
	<div class="form-row">
137
		<img class="question-mark" src="style/images/question-mark.gif"
138 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
139 6985 jones
		<div class="textinput-label">
140 6987 jones
			<label for="D1Client.certificate.file" title="The absolute path to the X.509 certificate used to authenticate this node">Node Certificate Path</label>
141 6635 leinfelder
		</div>
142
		<input class="textinput"
143
			id="D1Client.certificate.file"
144
			name="D1Client.certificate.file"
145
			value="<%= request.getAttribute("D1Client.certificate.file") %>"/>
146
	</div>
147
	<div class="form-row">
148
		<img class="question-mark" src="style/images/question-mark.gif"
149 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
150 6987 jones
		<div class="textinput-label"><label for="dataone.nodeSynchronize" title="Enable DataONE services by synchronizing metadata">Enable DataONE Services</label></div>
151 6635 leinfelder
152
		<%
153 6864 leinfelder
154
		boolean synchronize = false;
155
		String nodeSynchronize = (String) request.getAttribute("dataone.nodeSynchronize");
156
		if (nodeSynchronize != null) {
157
			synchronize = Boolean.parseBoolean(nodeSynchronize);
158
		}
159
160 6635 leinfelder
		if (synchronize) {
161
		%>
162
		<input type="checkbox"
163
				class="textinput"
164
				id="dataone.nodeSynchronize"
165
				name="dataone.nodeSynchronize"
166
				value="true"
167
				checked="checked"/>
168
		<% } else {%>
169
		<input type="checkbox"
170
				class="textinput"
171
				id="dataone.nodeSynchronize"
172
				name="dataone.nodeSynchronize"
173
				value="true"/>
174
		<% } %>
175
176
	</div>
177 6987 jones
    <p>&nbsp;</p>
178
179 6690 leinfelder
	<h3>Synchronization Schedule</h3>
180 6987 jones
	The schedule on which metadata should be synchronized with DataONE, expressed as a crontab entry.
181 6690 leinfelder
	<hr class="config-line">
182
	<div class="form-row">
183
		<img class="question-mark" src="style/images/question-mark.gif"
184 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
185 6690 leinfelder
		<div class="textinput-label">
186
			<label for="dataone.nodeSynchronization.schedule.year" title="Year">Year</label>
187
		</div>
188
		<input class="textinput"
189
			id="dataone.nodeSynchronization.schedule.year"
190
			name="dataone.nodeSynchronization.schedule.year"
191
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.year") %>"/>
192
	</div>
193
	<div class="form-row">
194
		<img class="question-mark" src="style/images/question-mark.gif"
195 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
196 6690 leinfelder
		<div class="textinput-label">
197
			<label for="dataone.nodeSynchronization.schedule.mon" title="Month">Month</label>
198
		</div>
199
		<input class="textinput"
200
			id="dataone.nodeSynchronization.schedule.mon"
201
			name="dataone.nodeSynchronization.schedule.mon"
202
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mon") %>"/>
203
	</div>
204
	<div class="form-row">
205
		<img class="question-mark" src="style/images/question-mark.gif"
206 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
207 6690 leinfelder
		<div class="textinput-label">
208
			<label for="dataone.nodeSynchronization.schedule.mday" title="Day of Month">Day of Month</label>
209
		</div>
210
		<input class="textinput"
211
			id="dataone.nodeSynchronization.schedule.mday"
212
			name="dataone.nodeSynchronization.schedule.mday"
213
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mday") %>"/>
214
	</div>
215
	<div class="form-row">
216
		<img class="question-mark" src="style/images/question-mark.gif"
217 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
218 6690 leinfelder
		<div class="textinput-label">
219
			<label for="dataone.nodeSynchronization.schedule.wday" title="Day of Week">Day of Week</label>
220
		</div>
221
		<input class="textinput"
222
			id="dataone.nodeSynchronization.schedule.wday"
223
			name="dataone.nodeSynchronization.schedule.wday"
224
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.wday") %>"/>
225
	</div>
226
	<div class="form-row">
227
		<img class="question-mark" src="style/images/question-mark.gif"
228 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
229 6690 leinfelder
		<div class="textinput-label">
230
			<label for="dataone.nodeSynchronization.schedule.hour" title="Hours">Hours</label>
231
		</div>
232
		<input class="textinput"
233
			id="dataone.nodeSynchronization.schedule.hour"
234
			name="dataone.nodeSynchronization.schedule.hour"
235
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.hour") %>"/>
236
	</div>
237
	<div class="form-row">
238
		<img class="question-mark" src="style/images/question-mark.gif"
239 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
240 6690 leinfelder
		<div class="textinput-label">
241
			<label for="dataone.nodeSynchronization.schedule.min" title="Minutes">Minutes</label>
242
		</div>
243
		<input class="textinput"
244
			id="dataone.nodeSynchronization.schedule.min"
245
			name="dataone.nodeSynchronization.schedule.min"
246
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.min") %>"/>
247
	</div>
248
	<div class="form-row">
249
		<img class="question-mark" src="style/images/question-mark.gif"
250 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
251 6690 leinfelder
		<div class="textinput-label">
252
			<label for="dataone.nodeSynchronization.schedule.sec" title="Seconds">Seconds</label>
253
		</div>
254
		<input class="textinput"
255
			id="dataone.nodeSynchronization.schedule.sec"
256
			name="dataone.nodeSynchronization.schedule.sec"
257
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.sec") %>"/>
258
	</div>
259
260 6987 jones
	<h3>Replication</h3>
261
	Configuration for replication, including whether this node can be used to house replicas of
262
	objects from other nodes, as well as default replication policies for the objects originating
263
	on this Member Node.
264
	<hr class="config-line">
265
	<div class="form-row">
266
		<img class="question-mark" src="style/images/question-mark.gif"
267 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
268 6987 jones
		<div class="textinput-label"><label for="dataone.nodeReplicate" title="Store replicas from other Member Nodes">Accept and Store Replicas</label></div>
269
270
		<%
271
		boolean replicate = false;
272
		String nodeReplicate = (String) request.getAttribute("dataone.nodeReplicate");
273
		if (nodeReplicate != null) {
274
			replicate = Boolean.parseBoolean(nodeReplicate);
275
		}
276
		if (replicate) {
277
		%>
278
		<input type="checkbox"
279
				class="textinput"
280
				id="dataone.nodeReplicate"
281
				name="dataone.nodeReplicate"
282
				value="true"
283
				checked="checked"/>
284
		<% } else {%>
285
		<input type="checkbox"
286
				class="textinput"
287
				id="dataone.nodeReplicate"
288
				name="dataone.nodeReplicate"
289
				value="true"/>
290
		<% } %>
291
	</div>
292
293
	<hr class="config-line">
294
295
 	<div class="form-row">
296
		<img class="question-mark" src="style/images/question-mark.gif"
297 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
298 6987 jones
		<div class="textinput-label">
299
			<label for="dataone.replicationpolicy.default.numreplicas" title="Default Number of Replicas to be created for local objects">Default Number of Replicas</label>
300
		</div>
301
		<input class="textinput"
302
			id="dataone.replicationpolicy.default.numreplicas"
303
			name="dataone.replicationpolicy.default.numreplicas"
304
			value="<%= request.getAttribute("dataone.replicationpolicy.default.numreplicas") %>"/>
305
	</div>
306
  	<div class="form-row">
307
		<img class="question-mark" src="style/images/question-mark.gif"
308 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
309 6987 jones
		<div class="textinput-label">
310
			<label for="dataone.replicationpolicy.default.preferredNodeList" title="A comma-separated list of preferred nodes to house replicas">Default Preferred Nodes</label>
311
		</div>
312
		<input class="textinput"
313
			id="dataone.replicationpolicy.default.preferredNodeList"
314
			name="dataone.replicationpolicy.default.preferredNodeList"
315
			value="<%= request.getAttribute("dataone.replicationpolicy.default.preferredNodeList") %>"/>
316
	</div>
317
   	<div class="form-row">
318
		<img class="question-mark" src="style/images/question-mark.gif"
319 6989 jones
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
320 6987 jones
		<div class="textinput-label">
321
			<label for="dataone.replicationpolicy.default.blockedNodeList" title="A comma-separated list of blocked nodes never to house replicas">Default Blocked Nodes</label>
322
		</div>
323
		<input class="textinput"
324
			id="dataone.replicationpolicy.default.blockedNodeList"
325
			name="dataone.replicationpolicy.default.blockedNodeList"
326
			value="<%= request.getAttribute("dataone.replicationpolicy.default.blockedNodeList") %>"/>
327
	</div>
328
329 6635 leinfelder
	<input type="hidden" name="configureType" value="dataone"/>
330
	<input type="hidden" name="processForm" value="true"/>
331 6992 leinfelder
332
	<%
333
		// do we know if it is an update or a new registration?
334
		boolean isUpdate = false;
335
		String isUpdateString = (String) request.getAttribute("dataone.isUpdate");
336
		if (isUpdateString != null) {
337
			isUpdate = Boolean.parseBoolean(isUpdateString);
338
		}
339
	%>
340
	<%if (isUpdate) { %>
341
		<input class=button type="submit" value="Update"/>
342
	<%} else { %>
343
		<input class=button type="submit" value="Register"/>
344
	<%} %>
345 6861 leinfelder
	<input class=button type="button" value="Skip" onClick="forward('./admin?configureType=dataone&bypass=true&processForm=true')">
346 6635 leinfelder
	<input class=button type="button" value="Cancel" onClick="forward('./admin')">
347
348
</form>
349
350
<%@ include file="./footer-section.jsp"%>
351
352
</body>
353
</html>