Browse Source

Added RightBean for publishing list of Rights
Added ExceptionBean for returning JSON object with Exception message
Added service for get List of rights
Updated service insert user to POST method

Michal Kepka 4 năm trước cách đây
mục cha
commit
d6ff5d7d55

+ 1 - 0
src/main/java/cz/hsrs/db/util/UserUtil.java

@@ -70,6 +70,7 @@ public class UserUtil extends GroupUtil {
             throw new NoItemFoundException("getUserPassword " + user_name + " not found.");
         }
     }
+    
     /**
      * Methods provides rightID of the given user
      * @param userName is the unique user name

+ 33 - 0
src/main/java/cz/hsrs/rest/beans/ExceptionBean.java

@@ -0,0 +1,33 @@
+/**
+ * 
+ */
+package cz.hsrs.rest.beans;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author mkepka
+ *
+ */
+@XmlRootElement
+public class ExceptionBean {
+
+	public String type;
+	public String message;
+	
+	public ExceptionBean() {
+	}
+	
+	/**
+	 * @param type
+	 * @param message
+	 */
+	public ExceptionBean(String type, String message) {
+		this.type = type;
+		this.message = message;
+	}
+	@Override
+	public String toString() {
+		return "ExceptionBean [type=" + type + ", message=" + message + "]";
+	}
+}

+ 40 - 0
src/main/java/cz/hsrs/rest/beans/RightBean.java

@@ -0,0 +1,40 @@
+/**
+ * 
+ */
+package cz.hsrs.rest.beans;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author mkepka
+ *
+ */
+@XmlRootElement
+public class RightBean {
+
+	public int rightsId;
+	public String userRole;
+	public String note;
+	
+	/**
+	 * 
+	 */
+	public RightBean() {
+	}
+	
+	/**
+	 * @param rightsId
+	 * @param userRole
+	 * @param note
+	 */
+	public RightBean(int rightsId, String userRole, String note) {
+		this.rightsId = rightsId;
+		this.userRole = userRole;
+		this.note = note;
+	}
+
+	@Override
+	public String toString() {
+		return "RightBean [rightsId=" + rightsId + ", userRole=" + userRole + ", note=" + note + "]";
+	}
+}

+ 93 - 67
src/main/java/cz/hsrs/rest/provider/UserRest.java

@@ -9,16 +9,17 @@ import javax.naming.AuthenticationException;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import org.mortbay.jetty.HttpStatus;
 
 import cz.hsrs.db.util.UserUtil;
+import cz.hsrs.rest.beans.ExceptionBean;
 import cz.hsrs.rest.beans.UserBean;
 import cz.hsrs.rest.util.AuthUtil;
 import cz.hsrs.rest.util.UserRestUtil;
@@ -31,75 +32,100 @@ import net.sf.json.JSONObject;
  */
 @Path("/user")
 public class UserRest {
-	
-	/**
-	 * Empty constructor
-	 */
-	public UserRest() {
-	}
-	
-	/**
-	 * 
-	 * @param req
-	 * @return
-	 */
-	@GET
-	public Response getUser(@Context HttpServletRequest req) {
+    
+    /**
+     * Empty constructor
+     */
+    public UserRest() {
+    }
+    
+    /**
+     * Method for getting user details
+     * URL: /rest/user
+     * @param req
+     * @return
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getUser(@Context HttpServletRequest req) {
         try {
-        	LoginUser loggedUser = AuthUtil.getAuthenticatedLoginUser(req);
-        	UserBean userDetails = UserRestUtil.getUser(loggedUser.getUserName());
-        	return Response.ok().entity(userDetails)
-    				.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-    				.build();
+            LoginUser loggedUser = AuthUtil.getAuthenticatedLoginUser(req);
+            UserBean userDetails = UserRestUtil.getUser(loggedUser.getUserName());
+            return Response.ok().entity(userDetails)
+                    .build();
         } catch (AuthenticationException e1) {
-        	return Response.status(HttpStatus.ORDINAL_401_Unauthorized)
-        		.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN)
-        		.entity("Authentication failure for request "+ req.getQueryString())
-        		.build();
+            return Response.status(HttpStatus.ORDINAL_401_Unauthorized)
+                    .entity(new ExceptionBean(e1.getClass().getName(), "Authentication failure for request!"))
+                    .build();
         } catch (SQLException e) {
-        	return Response.status(HttpStatus.ORDINAL_500_Internal_Server_Error)
-            		.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN)
-            		.entity(e.getLocalizedMessage())
-            		.build();
-		}
-	}
-	
-	/**
-	 * 
-	 * @param userJSON
-	 * @param req
-	 * @return
-	 */
-	@PUT
-	@Consumes(MediaType.APPLICATION_JSON)
-	public Response insertUser(JSONObject userJSON, @Context HttpServletRequest req) {
-		try {
-        	LoginUser loggedUser = AuthUtil.getAuthenticatedLoginUser(req);
-        	if(loggedUser.getRightsID() == 0) {
-        		UserUtil.insertUser(userJSON.getString("userName"),
-        				userJSON.getString("userPass"),
-        				userJSON.getString("userRealName"),
-        				userJSON.getInt("groupId"),
-        				userJSON.getInt("rightsId"));
-        	return Response.ok()
-    				.build();
-        	}
-        	else {
-        		return Response.status(HttpStatus.ORDINAL_403_Forbidden)
-                		.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN)
-                		.entity("Not enough rights for inserting!")
-                		.build();
-        	}
+            return Response.status(HttpStatus.ORDINAL_500_Internal_Server_Error)
+                    .entity(new ExceptionBean(e.getClass().getName(), e.getLocalizedMessage()))
+                    .build();
+        }
+    }
+    
+    /**
+     * Method for inserting user
+     * URL: /rest/user
+     * @param userJSON
+     * @param req
+     * @return
+     */
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response insertUser(JSONObject userJSON, @Context HttpServletRequest req) {
+        try {
+            LoginUser loggedUser = AuthUtil.getAuthenticatedLoginUser(req);
+            if(loggedUser.getRightsID() == 0) {
+                UserUtil.insertUser(userJSON.getString("userName"),
+                        userJSON.getString("userPass"),
+                        userJSON.getString("userRealName"),
+                        userJSON.getInt("groupId"),
+                        userJSON.getInt("rightsId"));
+            return Response.ok()
+                    .build();
+            }
+            else {
+                return Response.status(HttpStatus.ORDINAL_403_Forbidden)
+                        .entity(new ExceptionBean("AuthenticationException", "Not enough rights!"))
+                        .build();
+            }
         } catch (AuthenticationException e1) {
-        	return Response.status(HttpStatus.ORDINAL_401_Unauthorized)
-        		.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN)
-        		.entity("Authentication failure for request!")
-        		.build();
+            return Response.status(HttpStatus.ORDINAL_401_Unauthorized)
+                    .entity(new ExceptionBean(e1.getClass().getName(), "Authentication failure for request!"))
+                    .build();
+        } catch (SQLException e) {
+            return Response.status(HttpStatus.ORDINAL_500_Internal_Server_Error)
+            		.entity(new ExceptionBean(e.getClass().getName(), e.getLocalizedMessage()))
+                    .build();
+        }
+    }
+    
+    /**
+     * 
+     * URL: /rest/user/rights
+     * @param req
+     * @return
+     */
+    @Path("/rights")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getRights(@Context HttpServletRequest req) {
+        try {
+            
+            AuthUtil.getAuthenticatedLoginUser(req);
+            
+            return Response.ok(UserRestUtil.getAllRights())
+                    .build();
+        } catch (AuthenticationException e) {
+            return Response.status(HttpStatus.ORDINAL_401_Unauthorized)
+                    .entity(new ExceptionBean(e.getClass().getName(), "Authentication failure for request!"))
+                    .build();
         } catch (SQLException e) {
-        	return Response.status(HttpStatus.ORDINAL_500_Internal_Server_Error)
-            		.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN)
-            		.entity(e.getLocalizedMessage())
-            		.build();
-		}
+            return Response.status(HttpStatus.ORDINAL_500_Internal_Server_Error)
+                    .entity(new ExceptionBean(e.getClass().getName(), e.getLocalizedMessage()))
+                    .build();
+        }
     }
 }

+ 20 - 0
src/main/java/cz/hsrs/rest/util/UserRestUtil.java

@@ -2,8 +2,11 @@ package cz.hsrs.rest.util;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
 
 import cz.hsrs.db.pool.SQLExecutor;
+import cz.hsrs.rest.beans.RightBean;
 import cz.hsrs.rest.beans.UserBean;
 
 public class UserRestUtil {
@@ -30,4 +33,21 @@ public class UserRestUtil {
 		}
 		return user;
 	}
+	
+	/**
+	 * 
+	 * @return
+	 * @throws SQLException
+	 */
+	public static List<RightBean> getAllRights() throws SQLException{
+		String query = "SELECT * FROM public.rights ORDER BY rights_id;";
+		ResultSet res = SQLExecutor.getInstance().executeQuery(query);
+		List<RightBean> rightsList = new ArrayList<RightBean>();
+		if(res != null) {
+			while(res.next()) {
+				rightsList.add(new RightBean(res.getInt("rights_id"), res.getString("user_role"), res.getString("note_cz")));
+			}
+		}
+		return rightsList;
+	}
 }