implemented administration of relationship type (edit and delete are not yet working)
| /trunk/src/ch/ffhs/webE/dao/UserDAOImpl.java |
|---|
| 1,5 → 1,6 |
| package ch.ffhs.webE.dao; |
| import java.util.ArrayList; |
| import java.util.List; |
| import org.hibernate.Session; |
| 9,67 → 10,106 |
| import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget; |
| import ch.ffhs.webE.domain.*; |
| public class UserDAOImpl implements UserDAO { |
| public class UserDAOImpl implements UserDAO |
| { |
| @SessionTarget |
| Session session; |
| @TransactionTarget |
| Transaction transaction; |
| @SessionTarget |
| Session session; |
| @TransactionTarget |
| Transaction transaction; |
| @SuppressWarnings("unchecked") |
| @Override |
| public List<User> listUser() { |
| List<User> user = null; |
| try { |
| user = session.createQuery("from User").list(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| return user; |
| } |
| /** |
| * Creates a list of all the registered users |
| * |
| * @return an ArrayList with all the users - in case of a problem, an empty |
| * list is returned |
| */ |
| @SuppressWarnings("unchecked") |
| @Override |
| public List<User> listUser() |
| { |
| List<User> user = null; |
| try |
| { |
| user = session.createQuery("from User").list(); |
| } |
| catch (Exception e) |
| { |
| e.printStackTrace(); |
| } |
| @Override |
| public void saveUser(User user) { |
| try { |
| session.save(user); |
| } catch (Exception e) { |
| transaction.rollback(); |
| e.printStackTrace(); |
| } |
| } |
| //If no user was checked, return an empty list to mitigate null pointer exceptions |
| if (user == null) |
| { |
| user = new ArrayList<User>(); |
| } |
| return user; |
| } |
| /** |
| * Used to delete a user. |
| */ |
| @Override |
| public void deleteUser(int userId) { |
| try { |
| User user = (User) session.get(User.class, userId); |
| session.delete(user); |
| } catch (Exception e) { |
| transaction.rollback(); |
| e.printStackTrace(); |
| } |
| } |
| /** |
| * Executes the query to save the user |
| * |
| * @param User |
| * Domain object to be saved |
| * @return void |
| */ |
| @Override |
| public void saveUser(User user) |
| { |
| try |
| { |
| session.save(user); |
| } |
| catch (Exception e) |
| { |
| transaction.rollback(); |
| e.printStackTrace(); |
| } |
| } |
| /** |
| * Returns a single user with this user name (used for login) |
| * |
| * @param username |
| * : String - entire user name |
| * @return User: Returns a user object if something is found. If not, null |
| * is returned |
| */ |
| public User searchUsername(String username) { |
| User user = null; |
| /** |
| * Used to delete a user. |
| * |
| * @param int userId |
| */ |
| @Override |
| public void deleteUser(int userId) |
| { |
| try |
| { |
| User user = (User) session.get(User.class, userId); |
| session.delete(user); |
| } |
| catch (Exception e) |
| { |
| transaction.rollback(); |
| e.printStackTrace(); |
| } |
| } |
| try { |
| user = (User) session |
| .createQuery("FROM User " + "WHERE username = :username") |
| .setParameter("username", username).uniqueResult(); |
| } catch (Exception e) { |
| // TODO: Log error |
| } |
| return user; |
| } |
| /** |
| * Returns a single user with this user name (used for login) |
| * |
| * @param username |
| * : String - entire user name |
| * @return User: Returns a user object if something is found. If not, null |
| * is returned |
| */ |
| public User searchUsername(String username) |
| { |
| User user = null; |
| //Exec query |
| try |
| { |
| user = (User) session |
| .createQuery("FROM User " + "WHERE username = :username") |
| .setParameter("username", username).uniqueResult(); |
| } |
| catch (Exception e) |
| { |
| // TODO: Log error |
| } |
| return user; |
| } |
| } |
| /trunk/src/ch/ffhs/webE/dao/RelationshipTypeDAO.java |
|---|
| 0,0 → 1,15 |
| package ch.ffhs.webE.dao; |
| import java.util.List; |
| import ch.ffhs.webE.domain.RelationshipType; |
| public interface RelationshipTypeDAO { |
| List<RelationshipType> listRelationshipTypes(); |
| boolean saveRelationshipType(RelationshipType relType); |
| boolean deleteRelationshipType(int relTypeID); |
| } |
| Property changes: |
| Added: svn:mime-type |
| ## -0,0 +1 ## |
| +text/plain |
| \ No newline at end of property |
| Index: ffhs/webE/dao/RelationshipTypeDAOImpl.java |
| =================================================================== |
| --- ffhs/webE/dao/RelationshipTypeDAOImpl.java (nonexistent) |
| +++ ffhs/webE/dao/RelationshipTypeDAOImpl.java (revision 26) |
| @@ -0,0 +1,97 @@ |
| +package ch.ffhs.webE.dao; |
| + |
| +import java.util.ArrayList; |
| +import java.util.List; |
| + |
| +import org.hibernate.Session; |
| +import org.hibernate.Transaction; |
| + |
| +import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget; |
| +import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget; |
| +import ch.ffhs.webE.domain.*; |
| + |
| +public class RelationshipTypeDAOImpl implements RelationshipTypeDAO |
| +{ |
| + |
| + @SessionTarget |
| + Session session; |
| + @TransactionTarget |
| + Transaction transaction; |
| + |
| + /** |
| + * Gets a list of all the relationshipTypes in the database. |
| + * |
| + * @return List of all the users. In case of a problem, an empty list is |
| + * returned. |
| + */ |
| + @SuppressWarnings("unchecked") |
| + @Override |
| + public List<RelationshipType> listRelationshipTypes() |
| + { |
| + |
| + List<RelationshipType> relType = null; |
| + |
| + try |
| + { |
| + relType = session.createQuery("from RelationshipType").list(); |
| + } |
| + catch (Exception e) |
| + { |
| + // TODO: Logging |
| + } |
| + |
| + if (relType == null) |
| + { |
| + relType = new ArrayList<RelationshipType>(); |
| + } |
| + |
| + return relType; |
| + } |
| + |
| + /** |
| + * used to save a relationship type |
| + * |
| + * @param RelationshipType |
| + * relType: A filled DAO |
| + * @return Boolean indicating success or error in saving the |
| + * relationshipType |
| + */ |
| + @Override |
| + public boolean saveRelationshipType(RelationshipType relType) |
| + { |
| + try |
| + { |
| + session.save(relType); |
| + return true; |
| + } |
| + catch (Exception e) |
| + { |
| + transaction.rollback(); |
| + return false; |
| + // TODO: Logging |
| + } |
| + } |
| + |
| + /** |
| + * Used to delete a relationship type. |
| + * |
| + * @param int RelationshipType ID |
| + * @return boolean indicating success or error in the query execution |
| + */ |
| + @Override |
| + public boolean deleteRelationshipType(int relTypeID) |
| + { |
| + try |
| + { |
| + User user = (User) session.get(RelationshipType.class, relTypeID); |
| + session.delete(user); |
| + return true; |
| + } |
| + catch (Exception e) |
| + { |
| + transaction.rollback(); |
| + // TODO: Logging |
| + return false; |
| + } |
| + } |
| +} |
| /ffhs/webE/dao/RelationshipTypeDAOImpl.java |
|---|
| Property changes: |
| Added: svn:mime-type |
| ## -0,0 +1 ## |
| +text/plain |
| \ No newline at end of property |
| Index: ffhs/webE/action/UserForm.java |
| =================================================================== |
| --- ffhs/webE/action/UserForm.java (revision 25) |
| +++ ffhs/webE/action/UserForm.java (nonexistent) |
| @@ -1,73 +0,0 @@ |
| -package ch.ffhs.webE.action; |
| - |
| -import javax.servlet.http.HttpServletRequest; |
| - |
| -import org.apache.struts2.components.ActionError; |
| -import org.apache.struts2.dispatcher.mapper.ActionMapping; |
| - |
| -import com.opensymphony.xwork2.ActionSupport; |
| - |
| -public class UserForm extends ActionSupport { |
| - |
| - private static final long serialVersionUID = 2574972467250197244L; |
| - |
| - private String username; |
| - private String password; |
| - private String firstname; |
| - private String lastname; |
| - private boolean admin; |
| - |
| - public void reset(ActionMapping mapping, HttpServletRequest request) { |
| - this.username = null; |
| - this.password = null; |
| - this.firstname = null; |
| - this.lastname = null; |
| - this.admin = false; |
| - } |
| - |
| - public void validate() { |
| - |
| - } |
| - |
| - |
| - // Getter and setters |
| - public String getUsername() { |
| - return username; |
| - } |
| - |
| - public void setUsername(String username) { |
| - this.username = username; |
| - } |
| - |
| - public String getPassword() { |
| - return password; |
| - } |
| - |
| - public void setPassword(String password) { |
| - this.password = password; |
| - } |
| - |
| - public String getFirstname() { |
| - return firstname; |
| - } |
| - |
| - public void setFirstname(String firstname) { |
| - this.firstname = firstname; |
| - } |
| - |
| - public String getLastname() { |
| - return lastname; |
| - } |
| - |
| - public void setLastname(String lastname) { |
| - this.lastname = lastname; |
| - } |
| - |
| - public boolean isAdmin() { |
| - return admin; |
| - } |
| - |
| - public void setAdmin(boolean admin) { |
| - this.admin = admin; |
| - } |
| -} |
| /ffhs/webE/action/UserForm.java |
|---|
| Property changes: |
| Deleted: svn:mime-type |
| ## -1 +0,0 ## |
| -text/plain |
| \ No newline at end of property |
| Index: ffhs/webE/action/RelationshipTypeAction.java |
| =================================================================== |
| --- ffhs/webE/action/RelationshipTypeAction.java (nonexistent) |
| +++ ffhs/webE/action/RelationshipTypeAction.java (revision 26) |
| @@ -0,0 +1,104 @@ |
| +package ch.ffhs.webE.action; |
| + |
| +import java.util.ArrayList; |
| +import java.util.List; |
| + |
| +import javax.servlet.http.HttpServletRequest; |
| + |
| +import org.apache.struts2.ServletActionContext; |
| + |
| +import ch.ffhs.webE.dao.RelationshipTypeDAO; |
| +import ch.ffhs.webE.dao.RelationshipTypeDAOImpl; |
| +import ch.ffhs.webE.domain.RelationshipType; |
| + |
| +import com.opensymphony.xwork2.ActionContext; |
| +import com.opensymphony.xwork2.ActionSupport; |
| +import com.opensymphony.xwork2.ModelDriven; |
| + |
| +public class RelationshipTypeAction extends ActionSupport implements |
| + ModelDriven<RelationshipType> |
| +{ |
| + |
| + private static final long serialVersionUID = -3644691864156792139L; |
| + |
| + private RelationshipType relType = new RelationshipType(); |
| + private List<RelationshipType> relTypeList = new ArrayList<RelationshipType>(); |
| + private RelationshipTypeDAO relTypeDAO = new RelationshipTypeDAOImpl(); |
| + |
| + @Override |
| + public RelationshipType getModel() |
| + { |
| + return relType; |
| + } |
| + |
| + public String add() |
| + { |
| + relTypeDAO.saveRelationshipType(relType); |
| + return SUCCESS; |
| + } |
| + |
| + public String list() |
| + { |
| + relTypeList = relTypeDAO.listRelationshipTypes(); |
| + return SUCCESS; |
| + } |
| + |
| + /** |
| + * deletes a relationshipType, gets the ID from the id parameter that was |
| + * submitted |
| + * |
| + * @return String - either success or error |
| + */ |
| + public String delete() |
| + { |
| + HttpServletRequest request = (HttpServletRequest) ActionContext |
| + .getContext().get(ServletActionContext.HTTP_REQUEST); |
| + |
| + //Make sure the ID from the request parameter is valid |
| + int id = 0; |
| + |
| + try |
| + { |
| + id = Integer.parseInt(request.getParameter("id")); |
| + } |
| + catch (Exception e) |
| + { |
| + return ERROR; |
| + } |
| + |
| + // Check for malicious ID values |
| + if (id > 0) |
| + { |
| + relTypeDAO.deleteRelationshipType(id); |
| + return SUCCESS; |
| + } |
| + else |
| + { |
| + return ERROR; |
| + } |
| + } |
| + |
| + /* |
| + * Getters and setters |
| + */ |
| + |
| + public RelationshipType getRelType() |
| + { |
| + return relType; |
| + } |
| + |
| + public void setRelType(RelationshipType relType) |
| + { |
| + this.relType = relType; |
| + } |
| + |
| + public List<RelationshipType> getRelTypeList() |
| + { |
| + return relTypeList; |
| + } |
| + |
| + public void setRelTypeList(List<RelationshipType> relTypeList) |
| + { |
| + this.relTypeList = relTypeList; |
| + } |
| +} |
| \ No newline at end of file |
| /ffhs/webE/action/RelationshipTypeAction.java |
|---|
| Property changes: |
| Added: svn:mime-type |
| ## -0,0 +1 ## |
| +text/plain |
| \ No newline at end of property |
| Index: ffhs/webE/action/LoginAction.java |
| =================================================================== |
| --- ffhs/webE/action/LoginAction.java (revision 25) |
| +++ ffhs/webE/action/LoginAction.java (revision 26) |
| @@ -1,6 +1,5 @@ |
| package ch.ffhs.webE.action; |
| - |
| import java.util.Map; |
| import ch.ffhs.webE.dao.UserDAO; |
| @@ -11,91 +10,111 @@ |
| import com.opensymphony.xwork2.ActionSupport; |
| import com.opensymphony.xwork2.ModelDriven; |
| -public class LoginAction extends ActionSupport implements ModelDriven<User>{ |
| - |
| - private static final long serialVersionUID = 1799753056277211344L; |
| - private User user = new User(); |
| - private UserDAO userDAO = new UserDAOImpl(); |
| - |
| - //Form fields |
| - private String userName ; |
| - private String pw; |
| - |
| - //Session Object |
| - Map<String, Object> session = ActionContext.getContext().getSession(); |
| - |
| +public class LoginAction extends ActionSupport implements ModelDriven<User> |
| +{ |
| - public LoginAction() { |
| - } |
| - |
| - public String doLogin() { |
| - |
| - //If password or user name are empty, the login fails. |
| - if("".equals(getUserName()) || "".equals(getPw()) || getUserName() == null || getPw() == null) { |
| - return ERROR; |
| - } |
| - |
| - String verifiedUser = verifyUser(getUserName(), getPw()); |
| - if(verifiedUser.equals("failed")) { |
| - return ERROR; |
| - } else { |
| - |
| - //Put user name, password into session |
| - session.put("username", getUserName()); |
| - session.put("pw", getPw()); |
| - return verifiedUser; |
| - } |
| - } |
| - |
| - public String doLogout() { |
| - //TODO: Kill session content for logout |
| - return SUCCESS; |
| - } |
| - |
| - /** |
| - * Verify user credentials |
| - * @param String username: User name |
| - * @param String password: Password (hashed) |
| - * @return |
| - */ |
| - public String verifyUser(String username, String password) { |
| - //DB Query |
| - User u = userDAO.searchUsername(username); |
| - |
| - //User does not exist |
| - if(u == null) |
| - return ERROR; |
| - |
| - //User password does not match |
| - if(!u.getPassword().equals(password)) |
| - return ERROR; |
| - |
| - //User credentials are fine, check for admin rights |
| - if(u.isAdmin()) { |
| - return "admin"; |
| - } else { |
| - return "user"; |
| - } |
| - } |
| - |
| - public String getUserName() { |
| - return userName; |
| - } |
| + private static final long serialVersionUID = 1799753056277211344L; |
| + private User user = new User(); |
| + private UserDAO userDAO = new UserDAOImpl(); |
| - public void setUserName(String userName) { |
| - this.userName = userName; |
| - } |
| - |
| - public String getPw() { |
| - return pw; |
| - } |
| + // Form fields |
| + private String userName; |
| + private String pw; |
| - public void setPw(String pw) { |
| - this.pw = pw; |
| - } |
| + // Session Object |
| + Map<String, Object> session = ActionContext.getContext().getSession(); |
| - @Override |
| - public User getModel() { |
| - return user; |
| - } |
| + public LoginAction() |
| + { |
| + } |
| + |
| + public String doLogin() |
| + { |
| + |
| + // If password or user name are empty, the login fails. |
| + if ("".equals(getUserName()) || "".equals(getPw()) |
| + || getUserName() == null || getPw() == null) |
| + { |
| + return ERROR; |
| + } |
| + |
| + String verifiedUser = verifyUser(getUserName(), getPw()); |
| + if (verifiedUser.equals("failed")) |
| + { |
| + return ERROR; |
| + } |
| + else |
| + { |
| + |
| + // Put user name, password into session |
| + session.put("username", getUserName()); |
| + session.put("pw", getPw()); |
| + return verifiedUser; |
| + } |
| + } |
| + |
| + public String doLogout() |
| + { |
| + // TODO: Kill session content for logout |
| + return SUCCESS; |
| + } |
| + |
| + /** |
| + * Verify user credentials |
| + * |
| + * @param String |
| + * username: User name |
| + * @param String |
| + * password: Password (hashed) |
| + * @return |
| + */ |
| + public String verifyUser(String username, String password) |
| + { |
| + // DB Query |
| + User u = userDAO.searchUsername(username); |
| + |
| + // User does not exist |
| + if (u == null) |
| + return ERROR; |
| + |
| + // User password does not match |
| + if (!u.getPassword().equals(password)) |
| + return ERROR; |
| + |
| + // User credentials are fine, check for admin rights |
| + if (u.isAdmin()) |
| + { |
| + return "admin"; |
| + } |
| + else |
| + { |
| + return "user"; |
| + } |
| + } |
| + |
| + public String getUserName() |
| + { |
| + return userName; |
| + } |
| + |
| + public void setUserName(String userName) |
| + { |
| + this.userName = userName; |
| + } |
| + |
| + public String getPw() |
| + { |
| + return pw; |
| + } |
| + |
| + public void setPw(String pw) |
| + { |
| + this.pw = pw; |
| + } |
| + |
| + @Override |
| + public User getModel() |
| + { |
| + return user; |
| + } |
| } |
| /trunk/src/ch/ffhs/webE/action/UserAction.java |
|---|
| 15,50 → 15,98 |
| import ch.ffhs.webE.domain.User; |
| public class UserAction extends ActionSupport implements ModelDriven<User> { |
| public class UserAction extends ActionSupport implements ModelDriven<User> |
| { |
| private static final long serialVersionUID = -6659925652584240539L; |
| private static final long serialVersionUID = -6659925652584240539L; |
| private User user = new User(); |
| private List<User> userList = new ArrayList<User>(); |
| private UserDAO userDAO = new UserDAOImpl(); |
| private User user = new User(); |
| private List<User> userList = new ArrayList<User>(); |
| private UserDAO userDAO = new UserDAOImpl(); |
| @Override |
| public User getModel() { |
| return user; |
| } |
| @Override |
| public User getModel() |
| { |
| return user; |
| } |
| public String add() { |
| userDAO.saveUser(user); |
| return SUCCESS; |
| } |
| /** |
| * Executes the DB query to save the user |
| * |
| * @return |
| */ |
| public String add() |
| { |
| userDAO.saveUser(user); |
| return SUCCESS; |
| } |
| public String list() { |
| userList = userDAO.listUser(); |
| return SUCCESS; |
| } |
| /** |
| * DB query for userList |
| * |
| * @return SUCCESS |
| */ |
| public String list() |
| { |
| userList = userDAO.listUser(); |
| return SUCCESS; |
| } |
| public User getUser() { |
| return user; |
| } |
| /** |
| * deletes a user, gets the ID from the "id" parameter that was submitted |
| * with the HTTP request |
| * |
| * @return String - either SUCCESS or ERROR constant |
| */ |
| public String delete() |
| { |
| HttpServletRequest request = (HttpServletRequest) ActionContext |
| .getContext().get(ServletActionContext.HTTP_REQUEST); |
| public void setUser(User user) { |
| this.user = user; |
| } |
| int id = 0; |
| try |
| { |
| id = Integer.parseInt(request.getParameter("id")); |
| } |
| catch (Exception e) |
| { |
| return ERROR; |
| } |
| public List<User> getUserList() { |
| return userList; |
| } |
| // Check for malicious ID values |
| if (id > 0) |
| { |
| userDAO.deleteUser(id); |
| return SUCCESS; |
| } |
| else |
| { |
| return ERROR; |
| } |
| } |
| public void setUserList(List<User> userList) { |
| this.userList = userList; |
| } |
| /* |
| * Standard getters and setters |
| */ |
| public String delete() { |
| HttpServletRequest request = (HttpServletRequest) ActionContext |
| .getContext().get(ServletActionContext.HTTP_REQUEST); |
| userDAO.deleteUser(Integer.parseInt(request.getParameter("id"))); |
| return SUCCESS; |
| } |
| public User getUser() |
| { |
| return user; |
| } |
| public void setUser(User user) |
| { |
| this.user = user; |
| } |
| public List<User> getUserList() |
| { |
| return userList; |
| } |
| public void setUserList(List<User> userList) |
| { |
| this.userList = userList; |
| } |
| } |