X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=inline;f=legacy%2Forg.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fcommands%2FUploadFiles.java;fp=legacy%2Forg.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fcommands%2FUploadFiles.java;h=0000000000000000000000000000000000000000;hb=9b60a87396b76e794032a259609d845e52b757b7;hp=42d4b301bb8f94ab5ecabf7adae475d221f3dfbf;hpb=27bfd18d689c7d48e9fa8bd251598d3ba497f38e;p=lgpl%2Fargeo-commons.git diff --git a/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/UploadFiles.java b/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/UploadFiles.java deleted file mode 100644 index 42d4b301b..000000000 --- a/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/UploadFiles.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * 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.cms.ui.workbench.internal.jcr.commands; - -import java.io.InputStream; -import java.lang.reflect.Method; -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -import javax.jcr.Binary; -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.nodetype.NodeType; - -import org.argeo.cms.ui.jcr.model.SingleJcrNodeElem; -import org.argeo.cms.ui.jcr.model.WorkspaceElem; -import org.argeo.cms.ui.workbench.WorkbenchUiPlugin; -import org.argeo.cms.ui.workbench.jcr.JcrBrowserView; -import org.argeo.eclipse.ui.EclipseUiUtils; -import org.argeo.eclipse.ui.TreeParent; -import org.argeo.eclipse.ui.dialogs.ErrorFeedback; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.ui.handlers.HandlerUtil; - -/** Upload local file(s) under the currently selected node */ -public class UploadFiles extends AbstractHandler { - // private final static Log log = LogFactory.getLog(ImportFileSystem.class); - - public Object execute(ExecutionEvent event) throws ExecutionException { - - ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection(); - JcrBrowserView view = (JcrBrowserView) HandlerUtil.getActiveWorkbenchWindow(event).getActivePage() - .findView(HandlerUtil.getActivePartId(event)); - if (selection != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { - Object obj = ((IStructuredSelection) selection).getFirstElement(); - try { - Node folder = null; - if (obj instanceof SingleJcrNodeElem) { - folder = ((SingleJcrNodeElem) obj).getNode(); - } else if (obj instanceof WorkspaceElem) { - folder = ((WorkspaceElem) obj).getRootNode(); - } else { - ErrorFeedback.show(WorkbenchUiPlugin.getMessage("warningInvalidNodeToImport")); - } - if (folder != null) { - FileDialog dialog = new FileDialog(HandlerUtil.getActiveShell(event), SWT.MULTI); - dialog.setText("Choose one or more files to upload"); - - if (EclipseUiUtils.notEmpty(dialog.open())) { - String[] names = dialog.getFileNames(); - // Workaround small differences between RAP and RCP - // 1. returned names are absolute path on RAP and - // relative in RCP - // 2. in RCP we must use getFilterPath that does not - // exists on RAP - Method filterMethod = null; - Path parPath = null; - - try { - filterMethod = dialog.getClass().getDeclaredMethod("getFilterPath"); - String filterPath = (String) filterMethod.invoke(dialog); - parPath = Paths.get(filterPath); - } catch (NoSuchMethodException nsme) { // RAP - } - if (names.length == 0) - return null; - else { - loop: for (String name : names) { - Path path = Paths.get(name); - if (parPath != null) - path = parPath.resolve(path); - if (Files.exists(path)) { - URI uri = path.toUri(); - String uriStr = uri.toString(); - System.out.println(uriStr); - - if (Files.isDirectory(path)) { - MessageDialog.openError(HandlerUtil.getActiveShell(event), - "Unimplemented directory import", - "Upload of directories in the system is not yet implemented"); - continue loop; - } - Node fileNode = folder.addNode(path.getFileName().toString(), NodeType.NT_FILE); - Node resNode = fileNode.addNode(Property.JCR_CONTENT, NodeType.NT_RESOURCE); - Binary binary = null; - try (InputStream is = Files.newInputStream(path)) { - binary = folder.getSession().getValueFactory().createBinary(is); - resNode.setProperty(Property.JCR_DATA, binary); - } - folder.getSession().save(); - } else { - String msg = "Cannot upload file at " + path.toString(); - if (parPath != null) - msg += "\nPlease remember that file upload fails when choosing files from the \"Recently Used\" bookmarks on some OS"; - MessageDialog.openError(HandlerUtil.getActiveShell(event), "Missing file", msg); - continue loop; - } - } - view.nodeAdded((TreeParent) obj); - return true; - } - } - } - } catch (Exception e) { - ErrorFeedback.show("Cannot import files to " + obj, e); - } - } - return null; - } -}