Project

General

Profile

1
<%@ 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: walker $'
12
 *     '$Date: 2013-09-18 15:37:06 -0700 (Wed, 18 Sep 2013) $'
13
 * '$Revision: 8240 $'
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
<%@ include file="./head-section.jsp"%>
36
</head>
37
<body>
38
<%@ include file="./header-section.jsp"%>
39

    
40
<div class="document">
41
	<h2>DataONE Configuration</h2>
42
	
43
	<p> 
44
	    DataONE configuration is optional; choose 'Skip' below to proceed to the next configuration section,
45
	    unless you want to join the DataONE federation.
46
	</p>
47
	<p>
48
		<a href="http://www.dataone.org" target="_D1">DataONE</a> is a federation of data repositories (called Member Nodes)
49
	    that work together to create a seamless, interoperable network to store, preserve, discover, and publish scientific data.
50
		Becoming a DataONE Member Node is a means of distributing data and metadata using a common set of standards, making it
51
		easy to build software systems that can interact with any of the federated repository nodes.  Metacat can be used
52
		to join the DataONE federation by configuring Metacat to act as a Member Node and applying with DataONE to become a
53
		Member Node.  Once a node's application is approved and Metacat is configured, metadata will be synchronized in the 
54
		network for easy discovery, and replicas of data and metadata can be housed on other Member Nodes for 
55
		archival safe-keeping. In addition, a Metacat Member Node can optionally provide space to store replicas of data from 
56
		other Member Nodes that wish to preserve their data in the federation.
57
	<p/>
58
	<p> To configure Metacat as a Member Node, you must first obtain a Member Node X.509 certificate that will
59
	    be used to authenticate this node, and you must have a registered and verified account with DataONE that can
60
	    be used as the point of contact for the candidate Member Node.  Once you have this information, fill out
61
	    the form below with the proper configuration information, and then click 'Register', which will send the
62
	    registration data to DataONE. A unique Member Node ID will be assigned and should only be used for this 
63
	    node and never shared or altered.
64
	<p/>
65
	<br clear="right"/>
66
	
67
	<%@ include file="page-message-section.jsp"%>
68
	
69
	<form method="POST" name="configuration_form" action="<%= request.getContextPath() %>/admin" 
70
	                                        onsubmit="return submitForm(this);">
71
	
72
		<h3>Member Node Services</h3>
73
		Enable or disable DataONE Member Node Services for this deployment
74
		
75
		<div class="form-row">
76
			<div class="textinput-label"><label for="dataone.mn.services.enabled" title="Enable DataONE Member Node Services">Enable DataONE Services</label></div>
77
	
78
			<%
79
			
80
			boolean enableServices = false;
81
			String enableServicesString = (String) request.getAttribute("dataone.mn.services.enabled");
82
			if (enableServicesString != null) {
83
				enableServices = Boolean.parseBoolean(enableServicesString);
84
			}
85
			
86
			if (enableServices) { 
87
			%>
88
			<input type="checkbox" 
89
					class="textinput" 
90
					id="dataone.mn.services.enabled" 
91
					name="dataone.mn.services.enabled" 	             		    	    	           		    	             			
92
					value="true"
93
					checked="checked"/>
94
			<% } else {%>
95
			<input type="checkbox" 
96
					class="textinput" 
97
					id="dataone.mn.services.enabled" 
98
					name="dataone.mn.services.enabled" 	             		    	    	           		    	             			
99
					value="true"/>
100
			<% } %>
101
			
102
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
103
		</div>
104
		<div class="clear"></div>
105
		<h3>Member Node Configuration</h3>
106
		General information identifiying this node, its owner, and contents.  You will need
107
		   a certificate to identify the node, and a DataONE account to act as a node contact.
108
		
109
		<div class="form-row">
110
			<div class="textinput-label">
111
				<label for="dataone.nodeName" title="A short, human-readable name for this node">Node Name</label>
112
			</div>
113
			<input class="textinput" 
114
				id="dataone.nodeName" 
115
				name="dataone.nodeName" 	             		    	    	           		    	             			
116
				value="<%= request.getAttribute("dataone.nodeName") %>"/> 
117
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
118
		</div>
119
		<div class="form-row">
120
			<div class="textinput-label">
121
				<label for="dataone.nodeDescription" title="A brief description of the node and its holdings">Node Description</label>
122
			</div>
123
			<input class="textinput" 
124
				id="dataone.nodeDescription" 
125
				name="dataone.nodeDescription" 	             		    	    	           		    	             			
126
				value="<%= request.getAttribute("dataone.nodeDescription") %>"/> 
127
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
128
		</div>
129
		<div class="form-row">
130
			<div class="textinput-label">
131
				<label for="dataone.nodeId" title="The DataONE-assigned unique identifier for this node">Node Identifier</label>
132
			</div>
133
			<input class="textinput" 
134
				id="dataone.nodeId" 
135
				name="dataone.nodeId" 	             		    	    	           		    	             			
136
				value="<%= request.getAttribute("dataone.nodeId") %>"/>
137
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
138
		</div>
139
		<div class="form-row">
140
			<div class="textinput-label">
141
				<label for="dataone.subject" title="The account in Distinguished Name (DN) format that represents this node in all service interactions">Node Subject</label>
142
			</div>
143
			<input class="textinput" 
144
				id="dataone.subject" 
145
				name="dataone.subject" 	             		    	    	           		    	             			
146
				value="<%= request.getAttribute("dataone.subject") %>"/> 
147
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
148
		</div>
149
		<div class="form-row">
150
			<div class="textinput-label">
151
				<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>
152
			</div>
153
			<input class="textinput" 
154
				id="dataone.contactSubject" 
155
				name="dataone.contactSubject" 	             		    	    	           		    	             			
156
				value="<%= request.getAttribute("dataone.contactSubject") %>"/> 
157
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
158
		</div>
159
		<div class="form-row">
160
			<div class="textinput-label">
161
				<label for="D1Client.certificate.file" title="The absolute path to the X.509 certificate used to authenticate this node">Node Certificate Path</label>
162
			</div>
163
			<input class="textinput" 
164
				id="D1Client.certificate.file" 
165
				name="D1Client.certificate.file" 	             		    	    	           		    	             			
166
				value="<%= request.getAttribute("D1Client.certificate.file") %>"/> 
167
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
168
		</div>
169
		<div class="form-row">
170
			<div class="textinput-label"><label for="dataone.nodeSynchronize" title="Enable DataONE metadata synchronization">Enable Metadata Synchronization</label></div>
171
	
172
			<%
173
			
174
			boolean synchronize = false;
175
			String nodeSynchronize = (String) request.getAttribute("dataone.nodeSynchronize");
176
			if (nodeSynchronize != null) {
177
				synchronize = Boolean.parseBoolean(nodeSynchronize);
178
			}
179
			
180
			if (synchronize) { 
181
			%>
182
			<input type="checkbox" 
183
					class="textinput" 
184
					id="dataone.nodeSynchronize" 
185
					name="dataone.nodeSynchronize" 	             		    	    	           		    	             			
186
					value="true"
187
					checked="checked"/>
188
			<% } else {%>
189
			<input type="checkbox" 
190
					class="textinput" 
191
					id="dataone.nodeSynchronize" 
192
					name="dataone.nodeSynchronize" 	             		    	    	           		    	             			
193
					value="true"/>
194
			<% } %>
195
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
196
		</div>
197
	    <p>&nbsp;</p>
198
	    
199
	   	<div class="clear"></div>
200
	   	 
201
		<h3>Synchronization Schedule</h3>
202
		The schedule on which metadata should be synchronized with DataONE, expressed as a crontab entry.
203
		
204
		<div class="form-row">
205
			<div class="textinput-label">
206
				<label for="dataone.nodeSynchronization.schedule.year" title="Year">Year</label>
207
			</div>
208
			<input class="textinput" 
209
				id="dataone.nodeSynchronization.schedule.year" 
210
				name="dataone.nodeSynchronization.schedule.year" 	             		    	    	           		    	             			
211
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.year") %>"/> 
212
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
213
		</div>
214
		<div class="form-row">
215
			<div class="textinput-label">
216
				<label for="dataone.nodeSynchronization.schedule.mon" title="Month">Month</label>
217
			</div>
218
			<input class="textinput" 
219
				id="dataone.nodeSynchronization.schedule.mon" 
220
				name="dataone.nodeSynchronization.schedule.mon" 	             		    	    	           		    	             			
221
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mon") %>"/>
222
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i> 
223
		</div>
224
		<div class="form-row">
225
			<div class="textinput-label">
226
				<label for="dataone.nodeSynchronization.schedule.mday" title="Day of Month">Day of Month</label>
227
			</div>
228
			<input class="textinput" 
229
				id="dataone.nodeSynchronization.schedule.mday" 
230
				name="dataone.nodeSynchronization.schedule.mday" 	             		    	    	           		    	             			
231
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mday") %>"/> 
232
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
233
		</div>
234
		<div class="form-row">
235
			<div class="textinput-label">
236
				<label for="dataone.nodeSynchronization.schedule.wday" title="Day of Week">Day of Week</label>
237
			</div>
238
			<input class="textinput" 
239
				id="dataone.nodeSynchronization.schedule.wday" 
240
				name="dataone.nodeSynchronization.schedule.wday" 	             		    	    	           		    	             			
241
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.wday") %>"/> 
242
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
243
		</div>
244
		<div class="form-row">
245
			<div class="textinput-label">
246
				<label for="dataone.nodeSynchronization.schedule.hour" title="Hours">Hours</label>
247
			</div>
248
			<input class="textinput" 
249
				id="dataone.nodeSynchronization.schedule.hour" 
250
				name="dataone.nodeSynchronization.schedule.hour" 	             		    	    	           		    	             			
251
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.hour") %>"/> 
252
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
253
		</div>
254
		<div class="form-row">
255
			<div class="textinput-label">
256
				<label for="dataone.nodeSynchronization.schedule.min" title="Minutes">Minutes</label>
257
			</div>
258
			<input class="textinput" 
259
				id="dataone.nodeSynchronization.schedule.min" 
260
				name="dataone.nodeSynchronization.schedule.min" 	             		    	    	           		    	             			
261
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.min") %>"/> 
262
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
263
		</div>
264
		<div class="form-row">
265
			<div class="textinput-label">
266
				<label for="dataone.nodeSynchronization.schedule.sec" title="Seconds">Seconds</label>
267
			</div>
268
			<input class="textinput" 
269
				id="dataone.nodeSynchronization.schedule.sec" 
270
				name="dataone.nodeSynchronization.schedule.sec" 	             		    	    	           		    	             			
271
				value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.sec") %>"/> 
272
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
273
		</div>
274
		
275
		<div class="clear"></div>
276
	
277
		<h3>Replication</h3>
278
		Configuration for replication, including whether this node can be used to house replicas of
279
		objects from other nodes, as well as default replication policies for the objects originating
280
		on this Member Node.
281
		
282
		<div class="form-row">
283
			<div class="textinput-label"><label for="dataone.nodeReplicate" title="Store replicas from other Member Nodes">Accept and Store Replicas</label></div>
284
	
285
			<%
286
			boolean replicate = false;
287
			String nodeReplicate = (String) request.getAttribute("dataone.nodeReplicate");
288
			if (nodeReplicate != null) {
289
				replicate = Boolean.parseBoolean(nodeReplicate);
290
			}
291
			if (replicate) { 
292
			%>
293
			<input type="checkbox" 
294
					class="textinput" 
295
					id="dataone.nodeReplicate" 
296
					name="dataone.nodeReplicate" 	             		    	    	           		    	             			
297
					value="true"
298
					checked="checked"/>
299
			<% } else {%>
300
			<input type="checkbox" 
301
					class="textinput" 
302
					id="dataone.nodeReplicate" 
303
					name="dataone.nodeReplicate" 	             		    	    	           		    	             			
304
					value="true"/>
305
			<% } %>
306
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
307
		</div>
308
		
309
		
310
	
311
	 	<div class="form-row">
312
			<div class="textinput-label">
313
				<label for="dataone.replicationpolicy.default.numreplicas" title="Default Number of Replicas to be created for local objects">Default Number of Replicas</label>
314
			</div>
315
			<input class="textinput" 
316
				id="dataone.replicationpolicy.default.numreplicas" 
317
				name="dataone.replicationpolicy.default.numreplicas" 	             		    	    	           		    	             			
318
				value="<%= request.getAttribute("dataone.replicationpolicy.default.numreplicas") %>"/> 
319
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
320
		</div>
321
	  	<div class="form-row">
322
			<div class="textinput-label">
323
				<label for="dataone.replicationpolicy.default.preferredNodeList" title="A comma-separated list of preferred nodes to house replicas">Default Preferred Nodes</label>
324
			</div>
325
			<input class="textinput" 
326
				id="dataone.replicationpolicy.default.preferredNodeList" 
327
				name="dataone.replicationpolicy.default.preferredNodeList" 	             		    	    	           		    	             			
328
				value="<%= request.getAttribute("dataone.replicationpolicy.default.preferredNodeList") %>"/> 
329
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
330
		</div>
331
	   	<div class="form-row">
332
			<div class="textinput-label">
333
				<label for="dataone.replicationpolicy.default.blockedNodeList" title="A comma-separated list of blocked nodes never to house replicas">Default Blocked Nodes</label>
334
			</div>
335
			<input class="textinput" 
336
				id="dataone.replicationpolicy.default.blockedNodeList" 
337
				name="dataone.replicationpolicy.default.blockedNodeList" 	             		    	    	           		    	             			
338
				value="<%= request.getAttribute("dataone.replicationpolicy.default.blockedNodeList") %>"/> 
339
			<i class="icon-question-sign" onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"></i>
340
		</div>
341
	 
342
	 	<div class="buttons-wrapper">
343
			<input type="hidden" name="configureType" value="dataone"/>
344
			<input type="hidden" name="processForm" value="true"/>
345
		
346
			<%
347
				// do we know if it is an update or a new registration?
348
				boolean isUpdate = false;
349
				String isUpdateString = (String) request.getAttribute("dataone.isUpdate");
350
				if (isUpdateString != null) {
351
					isUpdate = Boolean.parseBoolean(isUpdateString);
352
				}
353
				// do we know if it is pending approval?
354
				boolean isSubmitted = false;
355
				String isSubmittedString = (String) request.getAttribute("dataone.mn.registration.submitted");
356
				if (isSubmittedString != null) {
357
					isSubmitted = Boolean.parseBoolean(isSubmittedString);
358
				}
359
			%>
360
			<%if (isUpdate) { %>
361
				<input class=button type="submit" value="Update"/>
362
			<%} else if (isSubmitted) { %>
363
				<input class=button type="submit" value="Update" disabled="disabled"/>
364
			<%} else { %>
365
				<input class=button type="submit" value="Register"/>
366
			<%} %>
367
			<%
368
				// if have we already configured this section, then we cannot skip it
369
				boolean previouslyConfigured = false;
370
				String previouslyConfiguredString = (String) request.getAttribute("configutil.dataoneConfigured");
371
				if (previouslyConfiguredString != null) {
372
					previouslyConfigured = Boolean.parseBoolean(previouslyConfiguredString);
373
				}
374
			%>
375
			<%if (!previouslyConfigured) { %>
376
				<input class=button type="button" value="Skip" onClick="forward('./admin?configureType=dataone&bypass=true&processForm=true')">
377
			<%} %>
378
			<input class=button type="button" value="Cancel" onClick="forward('./admin')"> 
379
		</div>
380
	</form>
381
</div>
382
<%@ include file="./footer-section.jsp"%>
383

    
384
</body>
385
</html>
(8-8/19)