ch.elexis.extdoc.dialogs.MoveIntoSubDirsDialog.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.extdoc.dialogs.MoveIntoSubDirsDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2011, Niklaus Giger <niklaus.giger@member.fsf.org>
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Niklaus Giger - initial implementation
 *    
 *******************************************************************************/

package ch.elexis.extdoc.dialogs;

import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.elexis.extdoc.Messages;
import ch.elexis.extdoc.util.MatchPatientToPath;
import ch.elexis.core.ui.util.SWTHelper;

public class MoveIntoSubDirsDialog extends Action {
    private static Logger logger = null;

    public void run() {
        if (logger == null)
            logger = LoggerFactory.getLogger(this.getClass());
        logger.info("MoveIntoSubDirsDialog started"); //$NON-NLS-1$

        ProgressMonitorDialog dialog = new ProgressMonitorDialog(null);
        try {
            dialog.run(true, true, new IRunnableWithProgress() {
                public void run(IProgressMonitor monitor) {
                    int nrTreated = 0;
                    java.util.List<File> oldFiles = MatchPatientToPath.getAllOldConventionFiles();
                    int nrFiles = oldFiles.size();
                    String dialogTitle = String.format("Alle (%1d) Dateien in Unterverzeichnisse auslagern ...", //$NON-NLS-1$
                            nrFiles);
                    logger.info(dialogTitle);
                    if (oldFiles == null) {
                        SWTHelper.showInfo(dialogTitle, Messages.MoveIntoSubDirsDialog_no_old_Files_found);
                        return;
                    }
                    monitor.beginTask(dialogTitle, oldFiles.size());
                    Iterator<File> iterator = oldFiles.iterator();
                    while (iterator.hasNext()) {
                        if (monitor.isCanceled())
                            break;
                        File f = iterator.next();
                        logger.info("Moving " + f.getAbsolutePath()); //$NON-NLS-1$
                        MatchPatientToPath.MoveIntoSubDir(f.getAbsolutePath());
                        ++nrTreated;
                        if (nrTreated % 10 == 1) {
                            monitor.subTask(String.format(Messages.MoveIntoSubDirsDialog_sub_task, f.getName()));
                            monitor.worked(10);
                        }
                    }
                    monitor.done();
                    logger.info("MoveIntoSubDirsDialog done"); //$NON-NLS-1$
                    SWTHelper.showInfo(dialogTitle, Messages.MoveIntoSubDirsDialog_finished);
                }
            });
        } catch (InvocationTargetException e) {
            e.printStackTrace();
            SWTHelper.showInfo("Fehler beim Auslagern!!",
                    Messages.MoveIntoSubDirsDialog_finished + "\n" + e.getMessage());
            logger.info("Fehler beim Auslagern!!" + e.getLocalizedMessage()); //$NON-NLS-1$
        } catch (InterruptedException e) {
            e.printStackTrace();
            SWTHelper.showInfo("Fehler beim Auslagern!",
                    Messages.MoveIntoSubDirsDialog_finished + "\n" + e.getMessage());
            logger.info("Fehler beim Auslagern!!" + e.getLocalizedMessage()); //$NON-NLS-1$
        }
        return;
    }
}