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-16 13:41:00 -0700 (Mon, 16 Sep 2013) $'
13
 * '$Revision: 8203 $'
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-darkgray.png" width="100px" align="right"/> 
44
<h2>DataONE Configuration</h2>
45

    
46
<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
<p>
51
	<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
<p/>
61
<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
<p/>
68
<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 Services</h3>
76
	Enable or disable DataONE Member Node Services for this deployment
77
	
78
	<div class="form-row">
79
		<div class="textinput-label"><label for="dataone.mn.services.enabled" title="Enable DataONE Member Node Services">Enable DataONE Services</label></div>
80

    
81
		<%
82
		
83
		boolean enableServices = false;
84
		String enableServicesString = (String) request.getAttribute("dataone.mn.services.enabled");
85
		if (enableServicesString != null) {
86
			enableServices = Boolean.parseBoolean(enableServicesString);
87
		}
88
		
89
		if (enableServices) { 
90
		%>
91
		<input type="checkbox" 
92
				class="textinput" 
93
				id="dataone.mn.services.enabled" 
94
				name="dataone.mn.services.enabled" 	             		    	    	           		    	             			
95
				value="true"
96
				checked="checked"/>
97
		<% } else {%>
98
		<input type="checkbox" 
99
				class="textinput" 
100
				id="dataone.mn.services.enabled" 
101
				name="dataone.mn.services.enabled" 	             		    	    	           		    	             			
102
				value="true"/>
103
		<% } %>
104
		
105
		<img class="question-mark" src="style/images/help.png" 
106
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
107
	</div>
108
	<div class="clear"></div>
109
	<h3>Member Node Configuration</h3>
110
	General information identifiying this node, its owner, and contents.  You will need
111
	   a certificate to identify the node, and a DataONE account to act as a node contact.
112
	
113
	<div class="form-row">
114
		<div class="textinput-label">
115
			<label for="dataone.nodeName" title="A short, human-readable name for this node">Node Name</label>
116
		</div>
117
		<input class="textinput" 
118
			id="dataone.nodeName" 
119
			name="dataone.nodeName" 	             		    	    	           		    	             			
120
			value="<%= request.getAttribute("dataone.nodeName") %>"/> 
121
		<img class="question-mark" src="style/images/help.png" 
122
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
123
	</div>
124
	<div class="form-row">
125
		<div class="textinput-label">
126
			<label for="dataone.nodeDescription" title="A brief description of the node and its holdings">Node Description</label>
127
		</div>
128
		<input class="textinput" 
129
			id="dataone.nodeDescription" 
130
			name="dataone.nodeDescription" 	             		    	    	           		    	             			
131
			value="<%= request.getAttribute("dataone.nodeDescription") %>"/> 
132
		<img class="question-mark" src="style/images/help.png" 
133
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
134
	</div>
135
	<div class="form-row">
136
		<div class="textinput-label">
137
			<label for="dataone.nodeId" title="The DataONE-assigned unique identifier for this node">Node Identifier</label>
138
		</div>
139
		<input class="textinput" 
140
			id="dataone.nodeId" 
141
			name="dataone.nodeId" 	             		    	    	           		    	             			
142
			value="<%= request.getAttribute("dataone.nodeId") %>"/>
143
		<img class="question-mark" src="style/images/help.png" 
144
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
145
	</div>
146
	<div class="form-row">
147
		<div class="textinput-label">
148
			<label for="dataone.subject" title="The account in Distinguished Name (DN) format that represents this node in all service interactions">Node Subject</label>
149
		</div>
150
		<input class="textinput" 
151
			id="dataone.subject" 
152
			name="dataone.subject" 	             		    	    	           		    	             			
153
			value="<%= request.getAttribute("dataone.subject") %>"/> 
154
		<img class="question-mark" src="style/images/help.png" 
155
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
156
	</div>
157
	<div class="form-row">
158
		<div class="textinput-label">
159
			<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>
160
		</div>
161
		<input class="textinput" 
162
			id="dataone.contactSubject" 
163
			name="dataone.contactSubject" 	             		    	    	           		    	             			
164
			value="<%= request.getAttribute("dataone.contactSubject") %>"/> 
165
		<img class="question-mark" src="style/images/help.png" 
166
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
167
	</div>
168
	<div class="form-row">
169
		<div class="textinput-label">
170
			<label for="D1Client.certificate.file" title="The absolute path to the X.509 certificate used to authenticate this node">Node Certificate Path</label>
171
		</div>
172
		<input class="textinput" 
173
			id="D1Client.certificate.file" 
174
			name="D1Client.certificate.file" 	             		    	    	           		    	             			
175
			value="<%= request.getAttribute("D1Client.certificate.file") %>"/> 
176
		<img class="question-mark" src="style/images/help.png" 
177
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
178
	</div>
179
	<div class="form-row">
180
		<div class="textinput-label"><label for="dataone.nodeSynchronize" title="Enable DataONE metadata synchronization">Enable Metadata Synchronization</label></div>
181

    
182
		<%
183
		
184
		boolean synchronize = false;
185
		String nodeSynchronize = (String) request.getAttribute("dataone.nodeSynchronize");
186
		if (nodeSynchronize != null) {
187
			synchronize = Boolean.parseBoolean(nodeSynchronize);
188
		}
189
		
190
		if (synchronize) { 
191
		%>
192
		<input type="checkbox" 
193
				class="textinput" 
194
				id="dataone.nodeSynchronize" 
195
				name="dataone.nodeSynchronize" 	             		    	    	           		    	             			
196
				value="true"
197
				checked="checked"/>
198
		<% } else {%>
199
		<input type="checkbox" 
200
				class="textinput" 
201
				id="dataone.nodeSynchronize" 
202
				name="dataone.nodeSynchronize" 	             		    	    	           		    	             			
203
				value="true"/>
204
		<% } %>
205
		<img class="question-mark" src="style/images/help.png" 
206
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
207
	</div>
208
    <p>&nbsp;</p>
209
    
210
   	<div class="clear"></div>
211
   	 
212
	<h3>Synchronization Schedule</h3>
213
	The schedule on which metadata should be synchronized with DataONE, expressed as a crontab entry.
214
	
215
	<div class="form-row">
216
		<div class="textinput-label">
217
			<label for="dataone.nodeSynchronization.schedule.year" title="Year">Year</label>
218
		</div>
219
		<input class="textinput" 
220
			id="dataone.nodeSynchronization.schedule.year" 
221
			name="dataone.nodeSynchronization.schedule.year" 	             		    	    	           		    	             			
222
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.year") %>"/> 
223
		<img class="question-mark" src="style/images/help.png" 
224
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
225
	</div>
226
	<div class="form-row">
227
		<div class="textinput-label">
228
			<label for="dataone.nodeSynchronization.schedule.mon" title="Month">Month</label>
229
		</div>
230
		<input class="textinput" 
231
			id="dataone.nodeSynchronization.schedule.mon" 
232
			name="dataone.nodeSynchronization.schedule.mon" 	             		    	    	           		    	             			
233
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mon") %>"/>
234
		<img class="question-mark" src="style/images/help.png" 
235
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/> 
236
	</div>
237
	<div class="form-row">
238
		<div class="textinput-label">
239
			<label for="dataone.nodeSynchronization.schedule.mday" title="Day of Month">Day of Month</label>
240
		</div>
241
		<input class="textinput" 
242
			id="dataone.nodeSynchronization.schedule.mday" 
243
			name="dataone.nodeSynchronization.schedule.mday" 	             		    	    	           		    	             			
244
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.mday") %>"/> 
245
		<img class="question-mark" src="style/images/help.png" 
246
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
247
	</div>
248
	<div class="form-row">
249
		<div class="textinput-label">
250
			<label for="dataone.nodeSynchronization.schedule.wday" title="Day of Week">Day of Week</label>
251
		</div>
252
		<input class="textinput" 
253
			id="dataone.nodeSynchronization.schedule.wday" 
254
			name="dataone.nodeSynchronization.schedule.wday" 	             		    	    	           		    	             			
255
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.wday") %>"/> 
256
		<img class="question-mark" src="style/images/help.png" 
257
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
258
	</div>
259
	<div class="form-row">
260
		<div class="textinput-label">
261
			<label for="dataone.nodeSynchronization.schedule.hour" title="Hours">Hours</label>
262
		</div>
263
		<input class="textinput" 
264
			id="dataone.nodeSynchronization.schedule.hour" 
265
			name="dataone.nodeSynchronization.schedule.hour" 	             		    	    	           		    	             			
266
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.hour") %>"/> 
267
		<img class="question-mark" src="style/images/help.png" 
268
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
269
	</div>
270
	<div class="form-row">
271
		<div class="textinput-label">
272
			<label for="dataone.nodeSynchronization.schedule.min" title="Minutes">Minutes</label>
273
		</div>
274
		<input class="textinput" 
275
			id="dataone.nodeSynchronization.schedule.min" 
276
			name="dataone.nodeSynchronization.schedule.min" 	             		    	    	           		    	             			
277
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.min") %>"/> 
278
		<img class="question-mark" src="style/images/help.png" 
279
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
280
	</div>
281
	<div class="form-row">
282
		<div class="textinput-label">
283
			<label for="dataone.nodeSynchronization.schedule.sec" title="Seconds">Seconds</label>
284
		</div>
285
		<input class="textinput" 
286
			id="dataone.nodeSynchronization.schedule.sec" 
287
			name="dataone.nodeSynchronization.schedule.sec" 	             		    	    	           		    	             			
288
			value="<%= request.getAttribute("dataone.nodeSynchronization.schedule.sec") %>"/> 
289
		<img class="question-mark" src="style/images/help.png" 
290
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
291
	</div>
292
	
293
	<div class="clear"></div>
294

    
295
	<h3>Replication</h3>
296
	Configuration for replication, including whether this node can be used to house replicas of
297
	objects from other nodes, as well as default replication policies for the objects originating
298
	on this Member Node.
299
	
300
	<div class="form-row">
301
		<div class="textinput-label"><label for="dataone.nodeReplicate" title="Store replicas from other Member Nodes">Accept and Store Replicas</label></div>
302

    
303
		<%
304
		boolean replicate = false;
305
		String nodeReplicate = (String) request.getAttribute("dataone.nodeReplicate");
306
		if (nodeReplicate != null) {
307
			replicate = Boolean.parseBoolean(nodeReplicate);
308
		}
309
		if (replicate) { 
310
		%>
311
		<input type="checkbox" 
312
				class="textinput" 
313
				id="dataone.nodeReplicate" 
314
				name="dataone.nodeReplicate" 	             		    	    	           		    	             			
315
				value="true"
316
				checked="checked"/>
317
		<% } else {%>
318
		<input type="checkbox" 
319
				class="textinput" 
320
				id="dataone.nodeReplicate" 
321
				name="dataone.nodeReplicate" 	             		    	    	           		    	             			
322
				value="true"/>
323
		<% } %>
324
		<img class="question-mark" src="style/images/help.png" 
325
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
326
	</div>
327
	
328
	
329

    
330
 	<div class="form-row">
331
		<div class="textinput-label">
332
			<label for="dataone.replicationpolicy.default.numreplicas" title="Default Number of Replicas to be created for local objects">Default Number of Replicas</label>
333
		</div>
334
		<input class="textinput" 
335
			id="dataone.replicationpolicy.default.numreplicas" 
336
			name="dataone.replicationpolicy.default.numreplicas" 	             		    	    	           		    	             			
337
			value="<%= request.getAttribute("dataone.replicationpolicy.default.numreplicas") %>"/> 
338
		<img class="question-mark" src="style/images/help.png" 
339
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
340
	</div>
341
  	<div class="form-row">
342
		<div class="textinput-label">
343
			<label for="dataone.replicationpolicy.default.preferredNodeList" title="A comma-separated list of preferred nodes to house replicas">Default Preferred Nodes</label>
344
		</div>
345
		<input class="textinput" 
346
			id="dataone.replicationpolicy.default.preferredNodeList" 
347
			name="dataone.replicationpolicy.default.preferredNodeList" 	             		    	    	           		    	             			
348
			value="<%= request.getAttribute("dataone.replicationpolicy.default.preferredNodeList") %>"/> 
349
		<img class="question-mark" src="style/images/help.png" 
350
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
351
	</div>
352
   	<div class="form-row">
353
		<div class="textinput-label">
354
			<label for="dataone.replicationpolicy.default.blockedNodeList" title="A comma-separated list of blocked nodes never to house replicas">Default Blocked Nodes</label>
355
		</div>
356
		<input class="textinput" 
357
			id="dataone.replicationpolicy.default.blockedNodeList" 
358
			name="dataone.replicationpolicy.default.blockedNodeList" 	             		    	    	           		    	             			
359
			value="<%= request.getAttribute("dataone.replicationpolicy.default.blockedNodeList") %>"/> 
360
		<img class="question-mark" src="style/images/help.png" 
361
			onClick="helpWindow('<%= request.getContextPath() %>','docs/dataone.html#configuring-metacat-as-a-member-node')"/>
362
	</div>
363
 
364
 	<div class="buttons-wrapper">
365
		<input type="hidden" name="configureType" value="dataone"/>
366
		<input type="hidden" name="processForm" value="true"/>
367
	
368
		<%
369
			// do we know if it is an update or a new registration?
370
			boolean isUpdate = false;
371
			String isUpdateString = (String) request.getAttribute("dataone.isUpdate");
372
			if (isUpdateString != null) {
373
				isUpdate = Boolean.parseBoolean(isUpdateString);
374
			}
375
			// do we know if it is pending approval?
376
			boolean isSubmitted = false;
377
			String isSubmittedString = (String) request.getAttribute("dataone.mn.registration.submitted");
378
			if (isSubmittedString != null) {
379
				isSubmitted = Boolean.parseBoolean(isSubmittedString);
380
			}
381
		%>
382
		<%if (isUpdate) { %>
383
			<input class=button type="submit" value="Update"/>
384
		<%} else if (isSubmitted) { %>
385
			<input class=button type="submit" value="Update" disabled="disabled"/>
386
		<%} else { %>
387
			<input class=button type="submit" value="Register"/>
388
		<%} %>
389
		<%
390
			// if have we already configured this section, then we cannot skip it
391
			boolean previouslyConfigured = false;
392
			String previouslyConfiguredString = (String) request.getAttribute("configutil.dataoneConfigured");
393
			if (previouslyConfiguredString != null) {
394
				previouslyConfigured = Boolean.parseBoolean(previouslyConfiguredString);
395
			}
396
		%>
397
		<%if (!previouslyConfigured) { %>
398
			<input class=button type="button" value="Skip" onClick="forward('./admin?configureType=dataone&bypass=true&processForm=true')">
399
		<%} %>
400
		<input class=button type="button" value="Cancel" onClick="forward('./admin')"> 
401
	</div>
402
</form>
403

    
404
<%@ include file="./footer-section.jsp"%>
405

    
406
</body>
407
</html>
(8-8/18)