X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fjcr%2Futils%2FJcrFileProvider.java;h=2906197f2d3a78c78b843f22a812da1d404fbdcb;hb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;hp=94cb80992702fadd18c31084ca0f5dc3cf46cb43;hpb=dc61e15280d5430c637effd689d45322a08cc4d8;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/utils/JcrFileProvider.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/utils/JcrFileProvider.java index 94cb80992..2906197f2 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/utils/JcrFileProvider.java +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/utils/JcrFileProvider.java @@ -1,21 +1,30 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.argeo.eclipse.ui.jcr.utils; import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; import javax.jcr.Node; import javax.jcr.Property; -import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.nodetype.NodeType; import org.apache.commons.io.IOUtils; import org.argeo.ArgeoException; -import org.argeo.eclipse.ui.jcr.browser.RepositoryNode; import org.argeo.eclipse.ui.specific.FileProvider; -import org.argeo.jcr.RepositoryRegister; /** * Implements a FileProvider for UI purposes. Note that it might not be very @@ -30,7 +39,21 @@ import org.argeo.jcr.RepositoryRegister; public class JcrFileProvider implements FileProvider { - private Object[] rootNodes; + // private Object[] rootNodes; + private Node refNode; + + /** + * Must be set in order for the provider to be able to get current session + * and thus have the ability to get the file node corresponding to a given + * file ID + * + * FIXME : this introduces some concurrences ISSUES. + * + * @param repositoryNode + */ + public void setReferenceNode(Node refNode) { + this.refNode = refNode; + } /** * Must be set in order for the provider to be able to search the repository @@ -39,25 +62,25 @@ public class JcrFileProvider implements FileProvider { * * @param repositoryNode */ - public void setRootNodes(Object[] rootNodes) { - List tmpNodes = new ArrayList(); - for (int i = 0; i < rootNodes.length; i++) { - Object obj = rootNodes[i]; - if (obj instanceof Node) { - tmpNodes.add(obj); - } else if (obj instanceof RepositoryRegister) { - RepositoryRegister repositoryRegister = (RepositoryRegister) obj; - Map repositories = repositoryRegister - .getRepositories(); - for (String name : repositories.keySet()) { - tmpNodes.add(new RepositoryNode(name, repositories - .get(name))); - } - - } - } - this.rootNodes = tmpNodes.toArray(); - } + // public void setRootNodes(Object[] rootNodes) { + // List tmpNodes = new ArrayList(); + // for (int i = 0; i < rootNodes.length; i++) { + // Object obj = rootNodes[i]; + // if (obj instanceof Node) { + // tmpNodes.add(obj); + // } else if (obj instanceof RepositoryRegister) { + // RepositoryRegister repositoryRegister = (RepositoryRegister) obj; + // Map repositories = repositoryRegister + // .getRepositories(); + // for (String name : repositories.keySet()) { + // // tmpNodes.add(new RepositoryNode(name, repositories + // // .get(name))); + // } + // + // } + // } + // this.rootNodes = tmpNodes.toArray(); + // } public byte[] getByteArrayFileFromId(String fileId) { InputStream fis = null; @@ -101,27 +124,26 @@ public class JcrFileProvider implements FileProvider { */ private Node getFileNodeFromId(String fileId) { try { - Node result = null; - - rootNodes: for (int j = 0; j < rootNodes.length; j++) { - // in case we have a classic JCR Node - if (rootNodes[j] instanceof Node) { - Node curNode = (Node) rootNodes[j]; - result = curNode.getSession().getNodeByIdentifier(fileId); - if (result != null) - break rootNodes; - } // Case of a repository Node - else if (rootNodes[j] instanceof RepositoryNode) { - Object[] nodes = ((RepositoryNode) rootNodes[j]) - .getChildren(); - for (int i = 0; i < nodes.length; i++) { - Node node = (Node) nodes[i]; - result = node.getSession().getNodeByIdentifier(fileId); - if (result != null) - break rootNodes; - } - } - } + Node result = refNode.getSession().getNodeByIdentifier(fileId); + + // rootNodes: for (int j = 0; j < rootNodes.length; j++) { + // // in case we have a classic JCR Node + // if (rootNodes[j] instanceof Node) { + // Node curNode = (Node) rootNodes[j]; + // if (result != null) + // break rootNodes; + // } // Case of a repository Node + // else if (rootNodes[j] instanceof RepositoryNode) { + // Object[] nodes = ((RepositoryNode) rootNodes[j]) + // .getChildren(); + // for (int i = 0; i < nodes.length; i++) { + // Node node = (Node) nodes[i]; + // result = node.getSession().getNodeByIdentifier(fileId); + // if (result != null) + // break rootNodes; + // } + // } + // } // Sanity checks if (result == null)