--- /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.repository;
+
+
+import java.util.Set;
+
+import javax.jcr.LoginException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+
+import org.apache.jackrabbit.util.Text;
+
+import com.pentila.evalcomp.dao.IRessourceAbstractDAO;
+import com.pentila.evalcomp.dao.IRessourceDAO;
+import com.pentila.evalcomp.domain.Ressource;
+import com.pentila.evalcomp.domain.RessourceAbstract;
+import com.pentila.evalcomp.utilities.Utils;
+
+/**
+ * The Class JackrabbitMaintenance.
+ */
+public class JackrabbitMaintenance implements IJackrabbitMaintenance {
+
+ /** The logger. */
+ org.slf4j.Logger logger = org.slf4j.LoggerFactory
+ .getLogger(JackrabbitMaintenance.class);
+
+
+
+ /** The storage. */
+ private Storage storage;
+
+ /** The ressource abstract dao. */
+ private IRessourceAbstractDAO ressourceAbstractDAO;
+
+ /** The ressource dao. */
+ private IRessourceDAO ressourceDAO;
+
+ /**
+ * Instantiates a new jackrabbit maintenance.
+ */
+ public JackrabbitMaintenance(){
+
+ logger.info("Jackrabbit Maintenance Bean is ENABLE");
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#viewRootSettings()
+ */
+ public void viewRootSettings(){
+
+ logger.info("Getting ROOT Settings");
+ Set<String> so = storage.getOwners(storage.getRootNode() );
+ Set<String> ss = storage.getShared(storage.getRootNode());
+
+ logger.info("OWNERS on / (root) :");
+
+ for (String uid : so){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("SHARED on / (root) :");
+
+ for (String uid : ss){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("Total OWNERS : " + so.size());
+ logger.info("Total SHARED : " + ss.size());
+
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#deleteRootSettings()
+ */
+ public void deleteRootSettings(){
+ logger.info("Deleting ROOT Settings");
+
+ storage.setRootOwners(new String[]{} );
+ storage.setRootShareds(new String[]{} );
+ logger.info("DONE !");
+
+ logger.info("Calling viewRootSetting now ....");
+ viewRootSettings();
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#getStorage()
+ */
+ public Storage getStorage() {
+ return storage;
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#setStorage(com.pentila.evalcomp.repository.Storage)
+ */
+ public void setStorage(Storage storage) {
+ this.storage = storage;
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#displayNodes()
+ */
+ public void displayNodes(){
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+ Set<Ressource> sra = ressourceDAO.getAll();
+ for (Ressource ra : sra){
+
+
+ Set<String> uids = ra.getEvaluationSubjectInstance().getScenarioInstance().getUserForRole("Evaluateurs", false);
+
+
+
+ String relPath = ra.getPath();
+ if (relPath.startsWith("/")){
+ relPath = relPath.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, relPath);
+
+ if (node != null){
+
+ Set<String> shared = storage.getShared(node);
+
+ if (!shared.containsAll(uids)){
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ logger.info("THEORIQUE SHARED USERS : ");
+ for (String uid : uids){
+ logger.info(" -> "+ uid);
+
+ }
+ printNodes(node);
+ }
+ }else{
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ logger.info("NODE IS NULL !");
+
+ Node parentNode = storage.getNodeByPath(jcrSession, relPath.substring(0, relPath.lastIndexOf("/")));
+
+ if (parentNode != null){
+ logger.info("ParentNode EXISTS.");
+
+ logger.info("Contains " + parentNode.getNodes().getSize() + " children");
+ }else{
+ logger.info("ParentNode NOT exists.");
+ }
+
+ }
+
+ }
+
+ jcrSession.logout();
+
+ logger.info("Size proceeding ressources : " +sra.size());
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#fixSharedNodes()
+ */
+ public void fixSharedNodes(){
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+ Set<Ressource> sra = ressourceDAO.getAll();
+ for (Ressource ra : sra){
+
+
+ Set<String> uids = ra.getEvaluationSubjectInstance().getScenarioInstance().getUserForRole("Evaluateurs", false);
+
+
+
+ String relPath = ra.getPath();
+ if (relPath.startsWith("/")){
+ relPath = relPath.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, relPath);
+
+ if (node != null){
+
+
+ Set<String> shared = storage.getShared(node);
+
+ if (!shared.containsAll(uids)){
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ logger.info("THEORIQUE SHARED USERS : ");
+ for (String uid : uids){
+ logger.info(" -> "+ uid);
+
+ }
+
+ String[] array = uids.toArray(new String[uids.size()]);
+
+ if (shared.isEmpty()){
+
+
+
+
+ logger.info("Set " + uids.size() + " an this ressource");
+
+ storage.setShareds(node, array);
+ }else{
+
+ for (String uid : uids){
+ logger.info("Add " + uid + " to this ressource" );
+
+
+ }
+ storage.addShared(node, array);
+ }
+ }
+ }else{
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ logger.info("NODE IS NULL !");
+
+ Node parentNode = storage.getNodeByPath(jcrSession, relPath.substring(0, relPath.lastIndexOf("/")));
+
+ if (parentNode != null){
+ logger.info("ParentNode EXISTS.");
+
+ logger.info("Contains " + parentNode.getNodes().getSize() + " children");
+ }else{
+ logger.info("ParentNode NOT exists.");
+ }
+
+ }
+
+
+ }
+
+
+ jcrSession.save();
+ jcrSession.logout();
+
+ logger.info("Size proceeding ressources : " +sra.size());
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#fixMissings()
+ */
+ public void fixMissings(){
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+ Set<Ressource> sra = ressourceDAO.getAll();
+ for (Ressource ra : sra){
+
+
+
+
+
+ String relPath = ra.getPath();
+ if (relPath.startsWith("/")){
+ relPath = relPath.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, relPath);
+ if (node == null && !relPath.equals("/")){
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ logger.info("NODE IS NULL !");
+
+ Node parentNode = storage.getNodeByPath(jcrSession, relPath.substring(0, relPath.lastIndexOf("/")));
+
+ if (parentNode != null){
+ logger.info("ParentNode EXISTS.");
+
+ logger.info("Contains " + parentNode.getNodes().getSize() + " children");
+
+
+ if (parentNode.getNodes().getSize() == 0){
+ logger.info("Deleting ressource");
+ ressourceDAO.delete(ra);
+ }else{
+ logger.info("NOT Delete");
+ }
+
+ }else{
+ logger.info("ParentNode NOT exists.");
+ logger.info("Deleting ressource");
+
+
+
+ ressourceDAO.delete(ra);
+
+ }
+ }
+
+
+
+ }
+
+
+
+ jcrSession.logout();
+
+ logger.info("Size proceeding ressources : " +sra.size());
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#fixRepositoryNames()
+ */
+ public void fixRepositoryNames(){
+
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+ Set<RessourceAbstract> sra = ressourceAbstractDAO.getAll();
+
+
+ for (RessourceAbstract ra : sra){
+ logger.info("RessourceAbstract : " + ra.getName() + " : "+ ra.getPath());
+ String relPath = ra.getPath();
+ if (relPath.startsWith("/")){
+ relPath = relPath.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, relPath);
+ logger.info("JACK NODE is : " + (node != null));
+ logger.info("Container \\ " + ra.getName().contains("\\"));
+
+ String norm = Utils.normalizeFileName(ra.getName());
+
+ if (!norm.equals(ra.getName())){
+ try{
+ storage.rename(node, norm);
+
+
+ String newPath = node.getParent().getPath() + "/"
+ + Text.escapeIllegalJcrChars(norm);
+
+ ra.setName(norm);
+ ra.setPath(newPath);
+
+ ressourceAbstractDAO.saveOrUpdate(ra);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ NodeIterator ni = jcrSession.getRootNode().getNodes();
+ while (ni.hasNext()){
+ processTree(ni.nextNode());
+ }
+ jcrSession.save();
+
+ jcrSession.logout();
+
+ logger.info("Size proceeding ressources : " +sra.size());
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+ }
+
+ /**
+ * Process tree.
+ *
+ * @param node the node
+ */
+ private void processTree(Node node) {
+ if (node != null){
+ try {
+
+ if (node.isNodeType(Storage.FOLDER_NODE) || node.isNodeType(Storage.FILE_NODE)){
+ logger.info("Node ->" + node.getName() + " : " + node.getPath());
+
+ String name = node.getName();
+
+ String mod = Utils.normalizeFileName(node.getName());
+
+ if (!name.equals(mod)){
+ try{
+ storage.rename(node, mod);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+
+
+ if (node.isNodeType(Storage.FOLDER_NODE)){
+
+ NodeIterator workspaces = node.getNodes();
+ while (workspaces.hasNext()) {
+ processTree(workspaces.nextNode());
+ }
+ }
+ }
+
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+
+ /**
+ * Prints the nodes.
+ *
+ * @param node the node
+ */
+ private void printNodes(Node node){
+
+ if (node != null){
+ try {
+ logger.info("Node ->" + node.getName() + " : " + node.getPath());
+
+ Set<String> owners = storage.getOwners(node);
+ Set<String> shared = storage.getShared(node);
+ logger.info("- OWNERS :");
+
+ for (String uid : owners){
+ logger.info(" -> "+ uid);
+ }
+ logger.info("- SHAREDS :" );
+ for (String uid : shared){
+ logger.info(" -> "+ uid);
+ }
+
+ NodeIterator workspaces = node.getNodes();
+ while (workspaces.hasNext()) {
+ Node n = workspaces.nextNode();
+
+ if (n.isNodeType(Storage.FOLDER_NODE) || n.isNodeType(Storage.FILE_NODE)){
+ printNodes(n);
+ }
+ }
+
+
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#testNodes()
+ */
+ public void testNodes(){
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+ logger.info("Try to set Shareds on RootNode : ");
+
+
+
+
+ //storage.addShareds("", new String[] {"charrouc", "jean-michel.jullien"});
+
+ storage.addShareds("/", new String[] {"charrouc", "jean-michel.jullien"});
+
+ //storage.setShareds("", new String[] {"charrouc", "jean-michel.jullien"});
+ storage.setShareds("/", new String[] {"charrouc", "jean-michel.jullien"});
+
+ jcrSession.save();
+
+ jcrSession.logout();
+
+
+ viewRootSettings();
+
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#getRessourceAbstractDAO()
+ */
+ public IRessourceAbstractDAO getRessourceAbstractDAO() {
+ return ressourceAbstractDAO;
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#setRessourceAbstractDAO(com.pentila.evalcomp.dao.impl.RessourceAbstractDAOImpl)
+ */
+ public void setRessourceAbstractDAO(
+ IRessourceAbstractDAO ressourceAbstractDAO) {
+ this.ressourceAbstractDAO = ressourceAbstractDAO;
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#getRessourceDAO()
+ */
+ public IRessourceDAO getRessourceDAO() {
+ return ressourceDAO;
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMainteance#setRessourceDAO(com.pentila.evalcomp.dao.IRessourceDAO)
+ */
+ public void setRessourceDAO(IRessourceDAO ressourceDAO) {
+ this.ressourceDAO = ressourceDAO;
+ }
+
+
+ /**
+ * Process tree mime types.
+ *
+ * @param node the node
+ */
+ public void processTreeMimeTypes(Node node){
+ if (node != null){
+ try {
+
+ if (node.isNodeType(Storage.FOLDER_NODE) || node.isNodeType(Storage.FILE_NODE)){
+ logger.info("Node ->" + node.getName() + " : " + node.getPath());
+ try{
+ Node resNode = node.getNode("jcr:content");
+
+ if (resNode != null){
+ if (node.isNodeType(Storage.FILE_NODE) && resNode.hasProperty("jcr:mimeType")){
+ logger.info("MimeType : " + resNode.getProperty("jcr:mimeType"));
+
+ String mimetype = storage.getContentType(node.getName(), resNode.getProperty("jcr:data").getBinary().getStream());
+
+ logger.info("New mimeType is : " + mimetype);
+
+ resNode.setProperty("jcr:mimeType", mimetype);
+ }
+ }
+ }catch (Exception e){
+ //e.printStackTrace();
+ }
+
+ if (node.isNodeType(Storage.FOLDER_NODE)){
+
+ NodeIterator workspaces = node.getNodes();
+ while (workspaces.hasNext()) {
+ processTreeMimeTypes(workspaces.nextNode());
+ }
+ }
+ }
+
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#fixMimeTypes()
+ */
+ public void fixMimeTypes() {
+ Repository repository = storage.getRepository();
+ try {
+ Session jcrSession = repository.login(new SimpleCredentials(Storage.SYSTEM_USER, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+ NodeIterator ni = jcrSession.getRootNode().getNodes();
+ while (ni.hasNext()){
+ processTreeMimeTypes(ni.nextNode());
+ }
+
+ jcrSession.save();
+ jcrSession.logout();
+
+ logger.info("End of Mimetype Processing.");
+
+ } catch (LoginException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NoSuchWorkspaceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#fixNode(java.lang.String, java.lang.String)
+ */
+ public void fixNode(String login, String path){
+ Repository repository = storage.getRepository();
+ try{
+ Session jcrSession = repository.login(new SimpleCredentials(login, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+
+ if (path.startsWith("/")){
+ path = path.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, path);
+ if (node != null){
+ logger.info("Getting Node Settings : " + path);
+ Set<String> so = storage.getOwners(node );
+ Set<String> ss = storage.getShared(node);
+
+ logger.info("OWNERS on "+ path+ ":");
+
+ for (String uid : so){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("SHARED on "+path+ " :");
+
+ for (String uid : ss){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("Total OWNERS : " + so.size());
+ logger.info("Total SHARED : " + ss.size());
+
+
+ storage.setOwners(path, new String[]{"JM10000377"});
+
+ /*String[] array1 = new String[so.size()];
+ int ab = 0;
+ for (String uid : so){
+ array1[ab++] = uid;
+ }
+
+ if (ss.isEmpty()){
+
+ storage.setOwners(node, array1);
+ }else{
+
+
+ storage.addShared(node, array1);
+ }
+
+
+
+ String[] array = new String[ss.size()];
+ int a = 0;
+ for (String uid : ss){
+ array[a++] = uid;
+ }
+
+ if (ss.isEmpty()){
+
+ storage.setShareds(node, array);
+ }else{
+
+
+ storage.addShared(node, array);
+ }
+
+ */
+
+ NodeIterator ni = node.getNodes();
+
+ while (ni.hasNext()){
+ Node n = ni.nextNode();
+ fixNode(login, n.getPath());
+ }
+
+
+
+ }else{
+ logger.info("NODE is NULL !!!");
+ }
+ jcrSession.save();
+ jcrSession.logout();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#viewNode(java.lang.String, java.lang.String)
+ */
+ public void viewNode(String login, String path) {
+ Repository repository = storage.getRepository();
+ try{
+ Session jcrSession = repository.login(new SimpleCredentials(login, ""
+ .toCharArray()), storage.getWorkspaceName());
+
+
+
+ if (path.startsWith("/")){
+ path = path.substring(1);
+ }
+
+ Node node = storage.getNodeByPath(jcrSession, path);
+
+ if (node != null){
+ logger.info("Getting Node Settings : " + path);
+ Set<String> so = storage.getOwners(node );
+ Set<String> ss = storage.getShared(node);
+
+ logger.info("OWNERS on "+ path+ ":");
+
+ for (String uid : so){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("SHARED on "+path+ " :");
+
+ for (String uid : ss){
+ logger.info("uid : " + uid);
+ }
+
+ logger.info("Total OWNERS : " + so.size());
+ logger.info("Total SHARED : " + ss.size());
+
+
+
+
+ NodeIterator ni = node.getNodes();
+
+ while (ni.hasNext()){
+ Node n = ni.nextNode();
+ viewNode(login, n.getPath());
+ }
+
+
+
+ }else{
+ logger.info("NODE is NULL !!!");
+ }
+
+ jcrSession.logout();
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#exportWS(java.lang.String, java.lang.String)
+ */
+ public void exportWS(String login, String path){
+ storage.exportWS(login, path);
+ }
+
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.repository.IJackrabbitMaintenance#repairAccount(java.lang.String, java.lang.String)
+ */
+ public void repairAccount(String login, String path){
+ storage.exportWS(login, path);
+
+ String pathe = path;
+
+ if (pathe.startsWith("/")){
+ pathe = pathe.substring(1);
+ }
+
+ storage.deleteFolder(pathe, login);
+ storage.importWS(login, path);
+ }
+
+}