Remove Eclipse 3 support.
[lgpl/argeo-commons.git] / legacy / org.argeo.cms.ui.workbench / src / org / argeo / cms / ui / workbench / internal / jcr / commands / ConfigurableNodeDump.java
diff --git a/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/ConfigurableNodeDump.java b/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/commands/ConfigurableNodeDump.java
deleted file mode 100644 (file)
index 60f4244..0000000
+++ /dev/null
@@ -1,295 +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.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.GregorianCalendar;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-
-import org.argeo.cms.ui.jcr.model.SingleJcrNodeElem;
-import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
-import org.argeo.eclipse.ui.EclipseUiException;
-import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.jcr.JcrUtils;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * First draft of a wizard that enable configurable recursive dump of the
- * current selected Node (Only one at a time). Enable among other to export
- * children Nodes and to choose to export binaries or not. It is useful to
- * retrieve business data from live systems to prepare migration or test locally
- */
-public class ConfigurableNodeDump extends AbstractHandler {
-       public final static String ID = WorkbenchUiPlugin.PLUGIN_ID
-                       + ".nodeConfigurableDump";
-
-       private final static DateFormat df = new SimpleDateFormat(
-                       "yyyy-MM-dd_HH-mm");
-
-       public final static int EXPORT_NODE = 0;
-       public final static int EXPORT_CHILDREN = 1;
-       public final static int EXPORT_GRAND_CHILDREN = 2;
-
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
-                               .getActivePage().getSelection();
-               if (selection == null || !(selection instanceof IStructuredSelection))
-                       return null;
-
-               Iterator<?> lst = ((IStructuredSelection) selection).iterator();
-               if (lst.hasNext()) {
-                       Object element = lst.next();
-                       if (element instanceof SingleJcrNodeElem) {
-                               SingleJcrNodeElem sjn = (SingleJcrNodeElem) element;
-                               Node node = sjn.getNode();
-
-                               ConfigureDumpWizard wizard = new ConfigureDumpWizard(
-                                               HandlerUtil.getActiveShell(event),
-                                               "Import Resource CSV");
-                               WizardDialog dialog = new WizardDialog(
-                                               HandlerUtil.getActiveShell(event), wizard);
-                               int result = dialog.open();
-
-                               if (result == Window.OK) {
-
-                                       String dateVal = df.format(new GregorianCalendar()
-                                                       .getTime());
-                                       try {
-
-                                               Path tmpDirPath = Files.createTempDirectory(dateVal
-                                                               + "-NodeDump-");
-                                               List<Node> toExport = retrieveToExportNodes(node,
-                                                               wizard.currExportType);
-
-                                               for (Node currNode : toExport) {
-                                                       FileOutputStream fos;
-                                                       String fileName = wizard.prefix
-                                                                       + JcrUtils.replaceInvalidChars(currNode
-                                                                                       .getName()) + "_" + dateVal
-                                                                       + ".xml";
-                                                       File currFile = new File(tmpDirPath.toString()
-                                                                       + "/" + fileName);
-                                                       currFile.createNewFile();
-                                                       fos = new FileOutputStream(currFile);
-                                                       node.getSession().exportSystemView(
-                                                                       currNode.getPath(), fos,
-                                                                       !wizard.includeBinaries, false);
-                                                       fos.flush();
-                                                       fos.close();
-                                               }
-                                       } catch (RepositoryException e) {
-                                               throw new EclipseUiException(
-                                                               "Unable to perform SystemExport on " + node, e);
-                                       } catch (IOException e) {
-                                               throw new EclipseUiException("Unable to SystemExport "
-                                                               + node, e);
-                                       }
-                               }
-                       }
-               }
-               return null;
-       }
-
-       private List<Node> retrieveToExportNodes(Node node, int currExportType)
-                       throws RepositoryException {
-               List<Node> nodes = new ArrayList<Node>();
-               switch (currExportType) {
-               case EXPORT_NODE:
-                       nodes.add(node);
-                       return nodes;
-               case EXPORT_CHILDREN:
-                       return JcrUtils.nodeIteratorToList(node.getNodes());
-               case EXPORT_GRAND_CHILDREN:
-                       NodeIterator nit = node.getNodes();
-                       while (nit.hasNext())
-                               nodes.addAll(JcrUtils.nodeIteratorToList(nit.nextNode()
-                                               .getNodes()));
-                       return nodes;
-
-               default:
-                       return nodes;
-               }
-       }
-
-       // private synchronized void openGeneratedFile(String path, String fileName)
-       // {
-       // Map<String, String> params = new HashMap<String, String>();
-       // params.put(OpenFile.PARAM_FILE_NAME, fileName);
-       // params.put(OpenFile.PARAM_FILE_URI, "file://" + path);
-       // CommandUtils.callCommand("org.argeo.security.ui.specific.openFile",
-       // params);
-       // }
-
-       private class ConfigureDumpWizard extends Wizard {
-
-               // parameters
-               protected String prefix;
-               protected int currExportType = EXPORT_NODE;
-               protected boolean includeBinaries = false;
-
-               // UI Objects
-               private BasicPage page;
-               private Text prefixTxt;
-               private Button includeBinaryBtn;
-               private Button b1, b2, b3;
-
-               public ConfigureDumpWizard(Shell parentShell, String title) {
-                       setWindowTitle(title);
-               }
-
-               @Override
-               public void addPages() {
-                       try {
-                               page = new BasicPage("Main page");
-                               addPage(page);
-                       } catch (Exception e) {
-                               throw new EclipseUiException("Cannot add page to wizard", e);
-                       }
-               }
-
-               @Override
-               public boolean performFinish() {
-                       prefix = prefixTxt.getText();
-                       if (b1.getSelection())
-                               currExportType = EXPORT_NODE;
-                       else if (b2.getSelection())
-                               currExportType = EXPORT_CHILDREN;
-                       else if (b3.getSelection())
-                               currExportType = EXPORT_GRAND_CHILDREN;
-                       includeBinaries = includeBinaryBtn.getSelection();
-                       return true;
-               }
-
-               @Override
-               public boolean performCancel() {
-                       return true;
-               }
-
-               @Override
-               public boolean canFinish() {
-                       String errorMsg = "No prefix defined.";
-                       if ("".equals(prefixTxt.getText().trim())) {
-                               page.setErrorMessage(errorMsg);
-                               return false;
-                       } else {
-                               page.setErrorMessage(null);
-                               return true;
-                       }
-               }
-
-               protected class BasicPage extends WizardPage {
-                       private static final long serialVersionUID = 1L;
-
-                       public BasicPage(String pageName) {
-                               super(pageName);
-                               setTitle("Configure dump before launching");
-                               setMessage("Define the parameters of the dump to launch");
-                       }
-
-                       public void createControl(Composite parent) {
-                               parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
-
-                               // Main Layout
-                               Composite mainCmp = new Composite(parent, SWT.NONE);
-                               mainCmp.setLayout(new GridLayout(2, false));
-                               mainCmp.setLayoutData(EclipseUiUtils.fillAll());
-
-                               // The path
-                               createBoldLabel(mainCmp, "Prefix");
-                               prefixTxt = new Text(mainCmp, SWT.SINGLE | SWT.BORDER);
-                               prefixTxt.setLayoutData(EclipseUiUtils.fillAll());
-                               prefixTxt.addModifyListener(new ModifyListener() {
-                                       private static final long serialVersionUID = 1L;
-
-                                       @Override
-                                       public void modifyText(ModifyEvent event) {
-                                               if (prefixTxt.getText() != null)
-                                                       getWizard().getContainer().updateButtons();
-                                       }
-                               });
-
-                               new Label(mainCmp, SWT.SEPARATOR | SWT.HORIZONTAL)
-                                               .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
-                                                               false, 2, 1));
-
-                               // Which node to export
-                               Label typeLbl = new Label(mainCmp, SWT.RIGHT);
-                               typeLbl.setText(" Type");
-                               typeLbl.setFont(EclipseUiUtils.getBoldFont(mainCmp));
-                               typeLbl.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false,
-                                               false, 1, 3));
-
-                               b1 = new Button(mainCmp, SWT.RADIO);
-                               b1.setText("Export this node");
-                               b1.setSelection(true);
-                               b2 = new Button(mainCmp, SWT.RADIO);
-                               b2.setText("Export children nodes");
-                               b3 = new Button(mainCmp, SWT.RADIO);
-                               b3.setText("Export grand-children nodes");
-
-                               new Label(mainCmp, SWT.SEPARATOR | SWT.HORIZONTAL)
-                                               .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
-                                                               false, 2, 1));
-
-                               createBoldLabel(mainCmp, "Files and images");
-                               includeBinaryBtn = new Button(mainCmp, SWT.CHECK);
-                               includeBinaryBtn.setText("Include binaries");
-
-                               prefixTxt.setFocus();
-                               setControl(mainCmp);
-                       }
-               }
-       }
-
-       private Label createBoldLabel(Composite parent, String value) {
-               Label label = new Label(parent, SWT.RIGHT);
-               label.setText(" " + value);
-               label.setFont(EclipseUiUtils.getBoldFont(parent));
-               label.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
-               return label;
-       }
-}