changeset 28:cbc2c83022c7 dev_dataverse4

new: add dataverse level when publish which means users can have/publish their own dataverses and datasets
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Wed, 09 Sep 2015 17:04:01 +0200
parents 3b3e2963c8f7
children aa9b50ad64e6
files src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java src/main/java/de/mpiwg/gazetteer/dataverse/bo/Datasets.java src/main/webapp/methods/getDataverseForm.jsp
diffstat 3 files changed, 90 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java	Tue Sep 08 16:33:31 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java	Wed Sep 09 17:04:01 2015 +0200
@@ -37,7 +37,7 @@
 		userList.add(new VDCUser(new Long(13), "paul", "1234"));
 		
 	}
-	
+		
 
 	
 	public static JSONObject publishFile(Long fileId, String datasetId, String userName, String password) throws Exception{
@@ -127,31 +127,64 @@
         System.out.println(response);
 		
         return new JSONObject(response);
-}
+	}
+	
 	
-	public static List<Datasets> getDatasets(String userName, String password) throws IOException{
+	public static List<Datasets> getDatasetsInAllDataverse(String userName, String password){
+		// get the list of all dataverse
+		List<Datasets> datasetList = new ArrayList<Datasets>();
 		
+		try {
+			JSONArray dataverseArray;
+			dataverseArray = getAllDataverseAlias();
+			for (int i = 0; i < dataverseArray.length(); i++) {
+				String aAlias = dataverseArray.getString(i);
+				if (!StringUtils.equals("root", aAlias)) {					
+					// it is not "root" dataverse
+					List<Datasets> aDatasetList = getDatasets(userName, password, aAlias);
+
+					// combine datasetList into a List<Datasets> 
+					datasetList.addAll(aDatasetList);
+			
+				}
+			}
+			
+		} catch (KeyManagementException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (NoSuchAlgorithmException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (JSONException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	
+		return datasetList;
+				
+	}
+	
+	
+	private static List<Datasets> getDatasets(String userName, String password, String dvId) throws IOException, JSONException, KeyManagementException, NoSuchAlgorithmException{
 		
 		String apiToken = PropertiesUtils.getPropValue("dvn_apitoken");
 		String dvnServerPath = PropertiesUtils.getPropValue("dvn_server");
-
-		// TODO list all dataverse:
-		// Implement an api in LGDataverse that can get the list of all dataverses in our system/instance
-		// String queryAllDataverse = dvnServerPath + "/getDataverseAliasList";
 		
-		
-		
-		
-		
-		
+		/* 
 		// list all the DvObjects under dataverse id. GET http://$SERVER/api/dataverses/$id/contents
 		String dvId = PropertiesUtils.getPropValue("dv_id");	// get Local gazetteers dataverse id from config file
 		// TODO the dvId above probably need to revise. Each user may have h/her own dataverse.
 		// In this case, need to find out which dvIds belong to the user.
 		
 		// in the position of 'dvId', it can be used as the alias also as recommended by dataverse
+		*/
 		String query1 = dvnServerPath + "/api/dataverses/"+ dvId + "/contents?key=" + apiToken;
 		
+		
 		List<Datasets> datasetList = new ArrayList<Datasets>();
 		
 		HttpStringResponse response = null;
@@ -159,7 +192,7 @@
 			response = HTTPUtils.getStringResponse(query1);
 			JSONObject json = new JSONObject(response.content);
 
-			System.out.println("json: " + json);
+			System.out.println("get contents in dataverse " + dvId + ": " + json);
 			
 			if(StringUtils.equals(json.getString("status"), "OK")){
 				// go through all datasets in this dataverse
@@ -177,9 +210,11 @@
 						
 						JSONObject datasetJson = getDatasetInfo(datasetId);
 						
+						datasetJson.put("dvIdInDataverse", dvId);
+							
 						Datasets datasets = new Datasets(datasetJson);
 						datasetList.add(datasets);
-					
+						
 					}
 					
 				}
@@ -195,6 +230,20 @@
 	}
 	
 	
+	private static JSONArray getAllDataverseAlias() throws IOException, KeyManagementException, NoSuchAlgorithmException, JSONException {
+		
+		String dvnServerPath = PropertiesUtils.getPropValue("dvn_server");
+		String query = dvnServerPath + "/getAllDataverseAlias";		// get all dataverse alias from LGDataverse
+		
+		HttpStringResponse response = null;
+		response = HTTPUtils.getStringResponse(query);
+		JSONObject data = new JSONObject(response.content);
+		JSONArray allDataverseAlias = data.getJSONArray("dataverseAlias");
+			
+		return allDataverseAlias;
+		
+	}
+	
 	private static JSONObject getDatasetInfo(String datasetId) {
 		JSONObject datasetJson = new JSONObject();	// datasetJson is the JSONObejct we collecting info about a dataset
 		// show the dataset whose id is given: GET http://$SERVER/api/datasets/$id?key=$apiKey
@@ -275,7 +324,6 @@
 	
 			if(StringUtils.equals(raJson.getString("state"), "ok") && raJson.has("roleAssignments")){
 				JSONArray roleAssignments = raJson.getJSONArray("roleAssignments");
-				//System.out.println("has role assignments." + roleAssignments);
 				
 				for( int j = 0, size = roleAssignments.length(); j < size; j++ ) {
 					
@@ -283,8 +331,7 @@
 					String aIdentifier = aRoleAssignment.getString("identifier");
 					String aRoleName = aRoleAssignment.getString("roleName");
 					
-					//System.out.println("identifier: " + aIdentifier+ ", roleName: " + aRoleName);
-		
+				
 					boolean checkRoles = false;
 					// check user has the right to upload file:
 					// 1. check user identifier 
--- a/src/main/java/de/mpiwg/gazetteer/dataverse/bo/Datasets.java	Tue Sep 08 16:33:31 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/dataverse/bo/Datasets.java	Wed Sep 09 17:04:01 2015 +0200
@@ -15,6 +15,8 @@
 	private String status;
 	private String version;
 	private String versionState;
+
+	private String dvIdInDataverse;
 	
 	public Datasets(JSONObject json) throws JSONException{
 		
@@ -28,10 +30,21 @@
 		this.status = json.getString("status");
 		this.version = json.getString("version");
 		this.versionState = json.getString("versionState");
+		this.dvIdInDataverse = json.getString("dvIdInDataverse");
 		
 	}
 	
 	
+	public String getDvIdInDataverse() {
+		return dvIdInDataverse;
+	}
+
+
+	public void setDvIdInDataverse(String dvIdInDataverse) {
+		this.dvIdInDataverse = dvIdInDataverse;
+	}
+
+
 	public String getIdentifier() {
 		return identifier;
 	}
--- a/src/main/webapp/methods/getDataverseForm.jsp	Tue Sep 08 16:33:31 2015 +0200
+++ b/src/main/webapp/methods/getDataverseForm.jsp	Wed Sep 09 17:04:01 2015 +0200
@@ -6,7 +6,9 @@
 <%
 	
 	//List<Study> studies = DataverseUtils.getStudies(sessionBean.getUser().getUserName(), sessionBean.getUser().getPassword());
-	List<Datasets> studies = DataverseUtils.getDatasets(sessionBean.getUser().getUserName(), sessionBean.getUser().getPassword());
+	// List<Datasets> studies = DataverseUtils.getDatasets(sessionBean.getUser().getUserName(), sessionBean.getUser().getPassword());
+	List<Datasets> studies = DataverseUtils.getDatasetsInAllDataverse(sessionBean.getUser().getUserName(), sessionBean.getUser().getPassword());
+	
 	System.out.println("%%%%% Studies: " + studies.size());
 	
 	if(studies.isEmpty()){
@@ -28,20 +30,18 @@
 	<table class="pageTable">
 		<tbody>
 			<tr>
+				<th><label class="tableTitle">Dataverse</label></th>
+				<!-- 
 				<th><label class="tableTitle">Dataset ID</label></th>
-				<th><label class="tableTitle">Title</label></th>
+				-->
+				<th><label class="tableTitle">Dataset</label></th>
 				<th><label class="tableTitle">Created</label></th>
 				<th><label class="tableTitle">State</label></th>
-				<th><label class="tableTitle">Dataverse</label></th>
 				<th><label class="tableTitle">Version</label></th>
 				<th><label class="tableTitle">Publish</label></th>
 				<!-- 
 				<th><label class="tableTitle">Release Date</label></th>
-				
 				<th><label class="tableTitle">Last Updated</label></th>
-				 -->
-				
-				<!-- 
 				<th><label class="tableTitle">Number of Files </label></th>
 				 -->
 			</tr>
@@ -51,11 +51,15 @@
 		%>
 			
 			<tr>
-				<td><%= study.getId()%></td>
+				<!--  <td>Chinese Local Gazetteers </td> -->
+				<td><%= study.getDvIdInDataverse() %></td>
+				
+				<!-- <td><%= study.getId()%></td> 
+				-->
 				<td><%= study.getTitle() %></td>
 				<td><%= study.getCreateTime() %></td>
 				<td><%= study.getVersionState().toLowerCase() %></td>
-				<td>Chinese Local Gazetteers </td>
+				
 				<td><%= study.getVersion() %></td>
 				<td>
 					<input type="image"