ru.codeinside.gses.webui.manager.UploadDirectory.java Source code

Java tutorial

Introduction

Here is the source code for ru.codeinside.gses.webui.manager.UploadDirectory.java

Source

/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * Copyright (c) 2013, MPL CodeInside http://codeinside.ru
 */

package ru.codeinside.gses.webui.manager;

import au.com.bytecode.opencsv.CSVReader;
import com.vaadin.ui.Table;
import com.vaadin.ui.Upload;
import com.vaadin.ui.Window;
import org.tepi.filtertable.FilterTable;
import ru.codeinside.adm.AdminServiceProvider;
import ru.codeinside.gses.beans.DirectoryBeanProvider;
import ru.codeinside.gses.webui.Flash;

import java.io.*;
import java.util.Arrays;

public class UploadDirectory implements Upload.Receiver, Upload.FinishedListener {

    private static final long serialVersionUID = 11323324231L;

    byte[] csvData;

    final FilterTable directoryTable;
    final Table dirMapTable;

    public UploadDirectory(FilterTable directoryTable, Table dirMapTable) {
        this.directoryTable = directoryTable;
        this.dirMapTable = dirMapTable;
    }

    @Override
    public OutputStream receiveUpload(String filename, String mimeType) {
        return new ByteArrayOutputStream() {
            @Override
            public void close() throws IOException {
                csvData = Arrays.copyOf(buf, count);
            }
        };
    }

    @Override
    public void uploadFinished(Upload.FinishedEvent finishedEvent) {
        CSVReader csvReader = null;
        try {
            csvReader = new CSVReader(new InputStreamReader(new ByteArrayInputStream(csvData)));
            String[] record;
            while ((record = csvReader.readNext()) != null) {
                if (record.length != 3) {
                    finishedEvent.getUpload().getWindow().showNotification(
                            "  csv  ?  ','",
                            Window.Notification.TYPE_ERROR_MESSAGE);
                    return;
                }
                String dirName = record[0].trim();
                DirectoryBeanProvider.get().create(dirName);
                AdminServiceProvider.get().createLog(Flash.getActor(), "Directory", dirName, "create",
                        "Upload create", true);
                String key = record[1].trim();
                String value = record[2].trim();
                DirectoryBeanProvider.get().add(dirName, key, value);
                AdminServiceProvider.get().createLog(Flash.getActor(), "Directory value", dirName, "add",
                        "key => ".concat(key).concat("value =>").concat(value), true);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return;
        } finally {
            if (csvReader != null) {
                try {
                    csvReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        ManagerWorkplace.refreshDirectoryTable(directoryTable);
        Object rowId = directoryTable.getValue();
        if (rowId != null) {
            final String dirName = (String) directoryTable.getContainerProperty(rowId, "name").getValue();
            ManagerWorkplace.reloadMap(dirName, dirMapTable);
        }
    }
}