Merge with 9e62eed712763292a41becaefd1a1c239fc4f0c6
authorDimitris Routsis <droutsis@ebs.gr>
Thu, 16 Dec 2010 16:37:44 +0000 (18:37 +0200)
committerDimitris Routsis <droutsis@ebs.gr>
Thu, 16 Dec 2010 16:37:44 +0000 (18:37 +0200)
src/gr/ebs/gss/admin/client/AdminServiceAsync.java
src/gr/ebs/gss/admin/client/ui/UsersTable.java
src/gr/ebs/gss/client/FileList.java
src/gr/ebs/gss/client/rest/resource/FileResource.java
src/gr/ebs/gss/client/rest/resource/TrashResource.java
src/gr/ebs/gss/server/domain/dto/UserDTO.java
src/gr/ebs/gss/server/ejb/AdminAPIBean.java
src/gr/ebs/gss/server/ejb/GSSDAO.java
src/gr/ebs/gss/server/ejb/GSSDAOBean.java
src/gr/ebs/gss/server/rest/TrashHandler.java

index d4b8306..b13710e 100644 (file)
@@ -25,7 +25,7 @@ public interface AdminServiceAsync {
 
        void searchUsers(String query, AsyncCallback<List<UserDTO>> callback);
 
-       void  getSystemStatistics(AsyncCallback<SystemStatsDTO> callback);
+       void getSystemStatistics(AsyncCallback<SystemStatsDTO> callback);
 
        void getLastLoggedInUsers(Date lastLoginDate, AsyncCallback<List<UserDTO>> callback);
 
index b3be2f2..6db24bd 100644 (file)
@@ -460,9 +460,9 @@ public class UsersTable extends Composite {
 
                @Override
                public String getCellValue(final UserDTO rowValue) {
-                       if(rowValue.getLastLoginDate()==null)
+                       if(rowValue.getCurrentLoginDate()==null)
                                return  "no data";
-                       return DateTimeFormat.getFormat("dd/MM/yyyy hh:mm:ss tt").format(rowValue.getLastLoginDate());
+                       return DateTimeFormat.getFormat("dd/MM/yyyy hh:mm:ss tt").format(rowValue.getCurrentLoginDate());
                }
 
                @Override
index d45d0a2..1b2c2ed 100644 (file)
@@ -724,22 +724,22 @@ public class FileList extends Composite implements ClickHandler {
         */
        private AbstractImagePrototype getFileIcon(FileResource file) {
                String mimetype = file.getContentType();
-               boolean shared=false;
+               Boolean shared = false;
                Folders folders = GSS.get().getFolders();
                if(folders.getCurrent() != null && folders.isOthersSharedItem(folders.getCurrent())){
                        DnDTreeItem otherUser = (DnDTreeItem) folders.getUserOfSharedItem(folders.getCurrent());
-                       if(otherUser==null)
+                       if(otherUser == null)
                                shared = false;
                        else{
                                String uname = otherUser.getOtherUserResource().getUsername();
-                               if(uname==null)
+                               if(uname == null)
                                        uname = ((DnDTreeItem)folders.getSharesItem()).getOthersResource().getUsernameOfUri(otherUser.getOtherUserResource().getUri());
                                if(uname != null)
                                        shared = file.getShared();
                        }
                }
                else
-                       shared = file.getShared();
+                       shared = file.getShared();              
                if (mimetype == null)
                        return shared ? AbstractImagePrototype.create(images.documentShared()) : AbstractImagePrototype.create(images.document());
                mimetype = mimetype.toLowerCase();
@@ -941,10 +941,12 @@ public class FileList extends Composite implements ClickHandler {
                        return;
                }
                if (folderItem instanceof DnDTreeItem) {
-                       DnDTreeItem dnd = (DnDTreeItem) folderItem;
+                       DnDTreeItem dnd = (DnDTreeItem) folderItem;                     
                        if (dnd.getFolderResource() != null) {
-                               if (GSS.get().getFolders().isTrashItem(dnd))
+                               if (GSS.get().getFolders().isTrashItem(dnd)){
+                                       DisplayHelper.log("------- folderResource is Trash Item ");
                                        setFiles(new ArrayList<FileResource>());
+                               }
                                else
                                        setFiles(dnd.getFolderResource().getFiles());
 
index 3f4a64e..dfbba16 100644 (file)
@@ -92,10 +92,10 @@ public class FileResource extends RestResource {
        /**
         * Modify the shared.
         *
-        * @param shared the shared to set
+        * @param _shared the shared to set
         */
-       public void setShared(Boolean shared) {
-               this.shared = shared;
+       public void setShared(Boolean _shared) {
+               this.shared = _shared;
        }
        
        /**
index 1278c1b..28cf7fc 100644 (file)
@@ -150,7 +150,8 @@ public class TrashResource extends RestResource{
                                                String fname = unmarshallString(fo, "name");
                                                String fowner = unmarshallString(fo, "owner");
                                                String fcontent = unmarshallString(fo, "content");
-                                               String fpath = unmarshallString(fo, "path");
+                                               Boolean fshared = unmarshallBoolean(fo, "shared");                                              
+                                               String fpath = unmarshallString(fo, "path");                                            
                                                fpath = URL.decodeComponent(fpath);
                                                Integer fversion = null;
                                                if (fo.get("version") != null)
@@ -177,6 +178,7 @@ public class TrashResource extends RestResource{
                                                fs.setCreationDate(fcreationDate);
                                                fs.setModificationDate(fmodificationDate);
                                                fs.setContentType(fcontent);
+                                               fs.setShared(fshared);
                                                files.add(fs);
                                        }
                                }
index 0ad8cfd..ddd253f 100644 (file)
@@ -63,6 +63,8 @@ public class UserDTO implements Serializable {
        private Boolean active;
 
        private Date lastLoginDate;
+       
+       private Date currentLoginDate;
 
        /**
         * The user class to which this user belongs.
@@ -206,4 +208,22 @@ public class UserDTO implements Serializable {
                u.setLastLoginDate(lastLoginDate);
                return u;
        }
+
+       /**
+        * Modify the currentLoginDate.
+        *
+        * @param _currentLoginDate the currentLoginDate to set
+        */
+       public void setCurrentLoginDate(Date _currentLoginDate) {
+               this.currentLoginDate = _currentLoginDate;
+       }
+
+       /**
+        * Retrieve the currentLoginDate.
+        *
+        * @return the currentLoginDate
+        */
+       public Date getCurrentLoginDate() {
+               return currentLoginDate;
+       }
 }
index 538931d..91783f0 100644 (file)
@@ -30,6 +30,7 @@ import gr.ebs.gss.server.domain.Group;
 import gr.ebs.gss.server.domain.Permission;
 import gr.ebs.gss.server.domain.User;
 import gr.ebs.gss.server.domain.UserClass;
+import gr.ebs.gss.server.domain.UserLogin;
 import gr.ebs.gss.server.domain.dto.FileBodyDTO;
 import gr.ebs.gss.server.domain.dto.FileHeaderDTO;
 import gr.ebs.gss.server.domain.dto.FolderDTO;
@@ -225,16 +226,27 @@ public class AdminAPIBean implements AdminAPI {
        public List<UserDTO> searchUsers(String query) {
                List<User> users = dao.getUsersByUserNameOrEmailLike(query);
                List<UserDTO> result = new ArrayList<UserDTO>();
-               for (User u : users)
-                       result.add(u.getDTO());
+               for (User u : users){
+                       UserDTO tempDTO = u.getDTO();
+                       List<UserLogin> userLogins = dao.getLoginsForUser(u.getId());
+                       tempDTO.setCurrentLoginDate(userLogins.get(0).getLoginDate());
+                       tempDTO.setLastLoginDate(userLogins.get(1).getLoginDate());     
+                       result.add(tempDTO);
+               }
                return result;
        }
 
        @Override
        public UserDTO getUser(String username) throws ObjectNotFoundException{
                User u = dao.getUser(username);
-               if(u!=null)
-                       return u.getDTO();
+               if(u!=null){
+                       UserDTO tempDTO = u.getDTO();
+                       List<UserLogin> userLogins = dao.getLoginsForUser(u.getId());
+                       tempDTO.setCurrentLoginDate(userLogins.get(0).getLoginDate());
+                       tempDTO.setLastLoginDate(userLogins.get(1).getLoginDate());     
+                       return tempDTO;
+                       
+               }
                return null;
        }
        @Override
@@ -315,11 +327,16 @@ public class AdminAPIBean implements AdminAPI {
        public List<UserDTO> getLastLoggedInUsers(Date lastLoginDate) {
                List<User> users = dao.getUsersByLastLogin(lastLoginDate);
                List<UserDTO> result = new ArrayList<UserDTO>();
-               for (User u : users)
-                       result.add(u.getDTO());
+               for (User u : users){                   
+                       UserDTO tempDTO = u.getDTO();
+                       List<UserLogin> userLogins = dao.getLoginsForUser(u.getId());
+                       tempDTO.setCurrentLoginDate(userLogins.get(0).getLoginDate());
+                       tempDTO.setLastLoginDate(userLogins.get(1).getLoginDate());                     
+                       result.add(tempDTO);
+               }
                return result;
        }
-
+       
        @Override
        public List<FileBodyDTO> getVersions(Long userId, Long fileId) throws ObjectNotFoundException, InsufficientPermissionsException {
                if (userId == null)
@@ -337,8 +354,14 @@ public class AdminAPIBean implements AdminAPI {
        public List<UserDTO> getUsersWaitingActivation(){
                List<User> users = dao.getInactiveUsers();
                List<UserDTO> result = new ArrayList<UserDTO>();
-               for(User u :users)
-                       result.add(u.getDTO());
+               for(User u :users){
+                       UserDTO tempDTO = u.getDTO();
+                       List<UserLogin> userLogins = dao.getLoginsForUser(u.getId());
+                       tempDTO.setCurrentLoginDate(userLogins.get(0).getLoginDate());
+                       tempDTO.setLastLoginDate(userLogins.get(1).getLoginDate());     
+                       result.add(tempDTO);
+                       
+               }
                return result;
        }
 
@@ -448,6 +471,10 @@ public class AdminAPIBean implements AdminAPI {
                for(FileUploadStatus s : sts)
                        dao.delete(s);
                int deleteCount=dao.deletePermissionsNotCorrespondingToFilesAndFolders(userId);
+               
+               List<UserLogin> allUserLogins = dao.getAllLoginsForUser(userId);
+               for(UserLogin ul : allUserLogins)
+                       dao.delete(ul);
                dao.flush();
                dao.delete(user);
        }
index 2095b57..d5107a5 100644 (file)
@@ -523,4 +523,12 @@ public interface GSSDAO {
         */
        public List<UserLogin> getLoginsForUser (Long userId);
 
+       /**
+        * Returns a list of all entries related to the date that a user logged in the service. 
+        *  
+        * @param userId
+        * @return a list of last user login and the current session user login
+        */
+       public List<UserLogin> getAllLoginsForUser (Long userId);
+
 }
index bf245a4..4dc6660 100644 (file)
@@ -644,19 +644,17 @@ public class GSSDAOBean implements GSSDAO {
        @Override
        public Long getCountUsersByLastLogin(Date lastLoginDate) {
                return (Long) manager.createQuery(
-                                       " select count(ul) " +
-                                       " from UserLogin ul " +
-                                       " where ul.loginDate >= :ldate "
+                                       " select count(distinct ul.user.id) from UserLogin ul " +                               
+                                               " where ul.loginDate >=:ldate" 
                                        ).setParameter("ldate", lastLoginDate).getSingleResult();
        }
        
        @Override
        public List<User> getUsersByLastLogin(Date lastLoginDate) {
-               return manager.createQuery("select user from UserLogin ul " +
-                                               " left join ul.user.id user" +
-                                               " where ul.loginDate >=:ldate" +
-                                               " order by ul.loginDate desc").
-                       setParameter("ldate", lastLoginDate).getResultList();
+               return manager.createQuery(" select distinct ul.user from UserLogin ul " +                              
+                                               " where ul.loginDate >=:ldate ")
+                                               .setParameter("ldate", lastLoginDate)
+                                               .getResultList();
        }
 
        @Override
@@ -792,4 +790,11 @@ public class GSSDAOBean implements GSSDAO {
                return res;                                                                     
        }
 
+       public List<UserLogin> getAllLoginsForUser (Long userId){
+               List<UserLogin> res = manager
+                                                               .createQuery("select ul from UserLogin ul where ul.user.id=:userId ")                           
+                                                               .setParameter("userId", userId)                                                                                                 
+                                                               .getResultList();
+               return res;                                                                     
+       }
 }
index 281dbc4..7a133f4 100644 (file)
@@ -116,6 +116,7 @@ public class TrashHandler extends RequestHandler {
                                        put("deleted", f.isDeleted()).
                                        put("version", f.getVersion()).
                                        put("size", f.getFileSize()).
+                                       put("shared", f.getShared()).
                                        put("content", f.getMimeType()).
                                        put("path", f.getFolder().getPath()).
                                        put("creationDate", f.getAuditInfo().getCreationDate().getTime()).