do not lock resource if entity object does not exist
[pithos] / src / gr / ebs / gss / server / ejb / GSSDAO.java
index 0e4aa5b..69f0e04 100644 (file)
@@ -25,10 +25,13 @@ import gr.ebs.gss.server.domain.FileHeader;
 import gr.ebs.gss.server.domain.FileUploadStatus;
 import gr.ebs.gss.server.domain.Folder;
 import gr.ebs.gss.server.domain.Group;
+import gr.ebs.gss.server.domain.FileLock;
 import gr.ebs.gss.server.domain.Invitation;
 import gr.ebs.gss.server.domain.Nonce;
 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.WebDavNonce;
 
 import java.util.Date;
 import java.util.List;
@@ -94,6 +97,16 @@ public interface GSSDAO {
        public List<Group> getGroups(Long userId) throws ObjectNotFoundException;
 
        /**
+        * Retrieves the root folder id for the specified user. The caller must ensure
+        * that the userId exists.
+        *
+        * @param userId
+        * @return Long The id
+        * @throws ObjectNotFoundException if no Folder was found
+        */
+       public Long getRootFolderId(final Long userId) throws ObjectNotFoundException;
+       
+       /**
         * Retrieves the root folder for the specified user. The caller must ensure
         * that the userId exists.
         *
@@ -348,16 +361,6 @@ public interface GSSDAO {
        public Nonce getNonce(String nonce, Long userId) throws ObjectNotFoundException;
 
        /**
-        * Loads the file for indexing. That means the file is loaded with the lazy fields needed for inedexing, initialized.
-        * For now only the tags need to be initialized
-        *
-        * @param id
-        * @return the {@link FileHeader} with initialized tags
-        * @throws ObjectNotFoundException when a file with the specified id does not exist
-        */
-       public FileHeader getFileForIndexing(Long id) throws ObjectNotFoundException;
-
-       /**
         * Calculates total file size of user.
         *
         * @param userId the ID of the user
@@ -473,6 +476,15 @@ public interface GSSDAO {
         */
        public List<FileHeader> getFilesPermittedForGroup(Long userId, Long groupId) throws ObjectNotFoundException;
 
+    /**
+     * Gets a file with tags initialized, cause indexing does not always run within a transaction (e.g. during rebuild)
+     * 
+     * @param id
+     * @return
+     * @throws ObjectNotFoundException
+     */
+    public FileHeader getFileForIndexing(Long id) throws ObjectNotFoundException;
+
        /**
         * @param userId
         * @return
@@ -502,5 +514,69 @@ public interface GSSDAO {
         * @return
         */
        int deletePermissionsNotCorrespondingToFilesAndFolders(Long userId);
+       
+       /**
+        * Returns a list of the top two entries related to the date that a user logged in the service. 
+        * The first entry is related to the current session user login 
+        * and the latter is related to the user's last login
+        *  
+        * @param userId
+        * @return a list of last user login and the current session user login
+        */
+       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);
+
+       /**
+        * @param username
+        * @return
+        */
+       User getUserByUserName(String username);
+
+       /**
+        * @param id
+        * @return
+        */
+       FileLock getLockById(String id);
+
+       /**
+        * @param tokenId
+        * @return
+        */
+       FileLock getLockByToken(String tokenId);
+
+       /**
+        * @param lock
+        */
+       void removeLock(FileLock lock);
+
+       /**
+        * @param lock
+        * @return
+        */
+       FileLock saveOrUpdateLock(FileLock lock);
+
+       /**
+        * @param lock
+        * @return
+        */
+       WebDavNonce saveOrUpdateWebDavNonce(WebDavNonce lock);
+
+       /**
+        * @param lock
+        */
+       void removeWebDavNonce(WebDavNonce lock);
+
+       /**
+        * @param tokenId
+        * @return
+        */
+       WebDavNonce getWebDavNonce(String tokenId);
 
 }