--- /dev/null
+/*****************************************************************************
+ * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,
+ * (2 décembre 2008)
+ *
+ * Ce logiciel est un programme informatique servant à l'évaluation des
+ * compétences.
+ *
+ * Ce logiciel est régi par la licence CeCILL soumise au droit français et
+ * respectant les principes de diffusion des logiciels libres. Vous pouvez
+ * utiliser, modifier et/ou redistribuer ce programme sous les conditions
+ * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+ * sur le site "http://www.cecill.info".
+ *
+ * En contrepartie de l'accessibilité au code source et des droits de copie,
+ * de modification et de redistribution accordés par cette licence, il n'est
+ * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+ * seule une responsabilité restreinte pèse sur l'auteur du programme, le
+ * titulaire des droits patrimoniaux et les concédants successifs.
+ *
+ * A cet égard l'attention de l'utilisateur est attirée sur les risques
+ * associés au chargement, à l'utilisation, à la modification et/ou au
+ * développement et à la reproduction du logiciel par l'utilisateur étant
+ * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+ * manipuler et qui le réserve donc à des développeurs et des professionnels
+ * avertis possédant des connaissances informatiques approfondies. Les
+ * utilisateurs sont donc invités à charger et tester l'adéquation du
+ * logiciel à leurs besoins dans des conditions permettant d'assurer la
+ * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+ * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+ *
+ * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+ * pris connaissance de la licence CeCILL, et que vous en avez accepté les
+ * termes.
+ *******************************************************************************/
+package com.pentila.evalcomp.manager.interfacedef;
+
+import java.io.InputStream;
+import java.util.Set;
+
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.pentila.evalcomp.domain.Ressource;
+import com.pentila.evalcomp.domain.RessourceDefinition;
+import com.pentila.evalcomp.domain.User;
+import com.pentila.evalcomp.domain.certification.RessourceCert;
+import com.pentila.evalcomp.domain.instance.EvaluationSubjectInstance;
+import com.pentila.evalcomp.domain.transit.RessourceFolder;
+import com.pentila.evalcomp.domain.transit.RessourceItem;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IRessourceBase.
+ */
+@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
+public interface IRessourceBase {
+
+ /**
+ * Method used to add a new folder in a given path. <br>
+ * To add: addFolder("newName","folder1/folder2/folder3","loginName"); this
+ * creates the folder with name newName in:
+ * loginName/folder1/folder2/folder3 =>
+ * loginName/folder1/folder2/folder3/newName.<br>
+ * If want to add a new folder directly in "loginName" folder use:
+ * addFolder("newName","","loginName");
+ *
+ * @param ri the ri
+ * @param login Each user has a home directory that has it's "login" name.
+ * @return the resource folder
+ */
+ /*
+ * public abstract ResourceFolder addFolder(String newFolderName, String
+ * folderRootPath, String login);
+ */
+ public abstract RessourceItem addFolder(RessourceItem ri, String login);
+
+ // /**
+ // * Method used to save a file in "inPath".
+ // *
+ // * @param login
+ // * current logged user. (home folder name in the same time).
+ // * @param fileItem
+ // * object having the InputStream representation of a file.
+ // * @param makeDir
+ // * the new directory that will be created.
+ // * @param inPath
+ // * the path for storing the file.
+ // */
+ // public abstract void addResource(String login, FileItem fileItem, String
+ // inPath);
+
+ /**
+ * Adds the ressource definition.
+ *
+ * @param rd
+ * the rd
+ *
+ * @return the ressource definition
+ */
+ @Transactional(readOnly = false)
+ public abstract RessourceDefinition addRessourceDefinition(
+ RessourceDefinition rd);
+
+ /**
+ * Adds the ressource cert.
+ *
+ * @param ressouceCert the ressouce cert
+ * @param is the is
+ * @return the ressource cert
+ */
+ @Transactional(readOnly = false)
+ public abstract RessourceCert addRessourceCert(RessourceCert ressouceCert, InputStream is);
+
+ /**
+ * Adds the ressource item.
+ *
+ * @param login the login
+ * @param filename the filename
+ * @param fileItem the file item
+ * @param inPath the in path
+ * @param pluginKey the plugin key
+ * @return the string[]
+ */
+ public abstract String[] addRessourceItem(String login, String filename, InputStream fileItem,
+ String inPath, String pluginKey);
+
+ /**
+ * Adds the resource to esi.
+ *
+ * @param user the user
+ * @param ri the ri
+ * @param esi the esi
+ * @return the ressource
+ */
+ @Transactional(readOnly = false)
+ public Ressource addRessourceToESI(User user, RessourceItem ri,
+ EvaluationSubjectInstance esi);
+
+ /**
+ * Ajout un fichier en InputStream directement dans le dossier d'évaluation.
+ *
+ * @param user the user
+ * @param filename the filename
+ * @param fileItem the file item
+ * @param inPath the in path
+ * @param pluginKey the plugin key
+ * @param esi the esi
+ * @return the ressource
+ */
+ @Transactional(readOnly = false)
+ public Ressource addRessourceToESI(User user, String filename, InputStream fileItem,
+ String inPath, String pluginKey, EvaluationSubjectInstance esi) ;
+
+ /**
+ * Copy folder.
+ */
+ public abstract void copyFolder();
+
+ /**
+ * Copy file from file path to "Eval"+login/id/.
+ *
+ * @param ri the ri
+ * @param idESI the id esi
+ * @param login Login name. Each user has a home directory that has it's
+ * "login" name.
+ */
+
+ public abstract void copyRessource(RessourceItem ri, Long idESI,
+ String login);
+
+ /**
+ * Method used to delete a folder.
+ *
+ * @param ri the ri
+ * @param login the login
+ */
+ public abstract void deleteFolder(RessourceItem ri, String login);
+
+ /**
+ * Method used to delete a file.
+ *
+ * @param ri the ri
+ * @param login current logged user. (home folder name in the same time).
+ */
+ public abstract void deleteRessource(RessourceItem ri, String login);
+
+ /**
+ * Gets the ressource.
+ *
+ * @param pluginKey
+ * the plugin key
+ * @param ressourceKey
+ * the ressource key
+ * @param mode
+ * the mode
+ *
+ * @return the ressource
+ */
+ public abstract RessourceItem getRessource(String pluginKey,
+ String ressourceKey, String mode);
+
+ /**
+ * Gets the ressource url.
+ *
+ * @param pluginKey
+ * the plugin key
+ * @param ressourceKey
+ * the ressource key
+ * @param mode
+ * the mode
+ *
+ * @return the ressource url
+ */
+ public abstract String getRessourceUrl(String pluginKey,
+ String ressourceKey, String mode);
+
+ /**
+ * Method used to get the home folder for the current login name.
+ *
+ * @param login
+ * Represents the login name. Used to separate home folders.
+ *
+ * @return the home folder in ResourceFolder object.
+ */
+ public abstract RessourceItem getWorkspace(String login);
+
+ /**
+ * Move folder.
+ *
+ * @param newri the newri
+ * @param ri the ri
+ * @param login the login
+ */
+ public RessourceFolder moveFolder(RessourceItem newri, RessourceItem ri, String login);
+
+ /**
+ * Move resource.
+ *
+ * @param newri the newri
+ * @param ri the ri
+ * @param login the login
+ */
+ public RessourceItem moveRessource(RessourceItem newri, RessourceItem ri,
+ String login);
+
+ /**
+ * Query.
+ *
+ * @param query
+ * the query
+ * @param size
+ * the size
+ * @param start
+ * the start
+ * @param pluginKey
+ * the plugin key
+ *
+ * @return the set< ressource item>
+ */
+ public abstract Set<RessourceItem> query(String query, Integer size,
+ Integer start, String pluginKey);
+
+ /**
+ * Removes the permission.
+ *
+ * @param r
+ * the r
+ * @param suid
+ * the suid
+ * @param role
+ * the role
+ */
+ public abstract void removePermission(Ressource r, Set<String> suid,
+ String role);
+
+ /**
+ * Removes the permission.
+ *
+ * @param rd
+ * the rd
+ * @param suid
+ * the suid
+ * @param role
+ * the role
+ */
+ public abstract void removePermission(RessourceDefinition rd,
+ Set<String> suid, String role);
+
+ /**
+ * Removes the ressource definition.
+ *
+ * @param rd
+ * the rd
+ */
+ @Transactional(readOnly = false)
+ public abstract void removeRessourceDefinition(RessourceDefinition rd);
+
+ /**
+ * Removes the resource from esi.
+ *
+ * @param r the r
+ * @param login the login
+ */
+ @Transactional(readOnly = false)
+ public void removeRessourceFromESI(Ressource r, String login);
+
+ /**
+ * Method used to rename a folder.
+ *
+ * @param newri the newri
+ * @param login Home folder access.
+ */
+ public abstract RessourceFolder renameFolder(RessourceItem newri, String login);
+
+ /**
+ * Method used to rename a resource.
+ *
+ * @param ri the ri
+ * @param login Home folder access.
+ */
+ public abstract RessourceItem renameRessource(RessourceItem ri, String login);
+
+ /**
+ * Sets the permission.
+ *
+ * @param r
+ * the r
+ * @param suid
+ * the suid
+ * @param role
+ * the role
+ */
+ public abstract void setPermission(Ressource r, Set<String> suid,
+ String role);
+
+ /**
+ * Sets the permission.
+ *
+ * @param rd
+ * the rd
+ * @param suid
+ * the suid
+ * @param role
+ * the role
+ */
+ public abstract void setPermission(RessourceDefinition rd,
+ Set<String> suid, String role);
+
+ /**
+ * Gets the default plugin name.
+ *
+ * @return the default plugin name
+ */
+ public abstract String getDefaultPluginName();
+
+ /**
+ * Fix access rights for user which must access to this ressource
+ * due to relation in activities or granted admin roles.
+ */
+ public abstract void accessRessource(Ressource ressource);
+
+ public abstract RessourceItem getContent(String path, String login);
+
+ public abstract String getRessourceAsString(RessourceItem ri, String login);
+
+ public abstract void saveRessource(Long long1, String filename, String pathTo,
+ String pluginkey, String content);
+
+}