/*
 NeoDatis ODB : Native Object Database (odb.info@neodatis.org)
 Copyright (C) 2007 NeoDatis Inc. http://www.neodatis.org

 "This file is part of the NeoDatis ODB open source object database".

 NeoDatis ODB is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 NeoDatis ODB is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package org.neodatis.odb.gui.xml;

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

import org.neodatis.odb.core.layers.layer3.IStorageEngine;
import org.neodatis.odb.gui.LoggerPanel;
import org.neodatis.odb.gui.Messages;
import org.neodatis.odb.gui.component.GUITool;
import org.neodatis.odb.xml.XMLExporter;
import org.neodatis.tool.ILogger;
import org.neodatis.tool.wrappers.OdbTime;

public class XmlExportPanel2 extends JPanel implements ActionListener, Runnable {

	private IStorageEngine storageEngine;

	private JButton btExport;
	private JButton btCancel;

	private JTextField tfFile;
	private JButton btBrowse;

	private ILogger logger;
	private LoggerPanel loggerPanel;

	public XmlExportPanel2(ILogger logger) {
		this.storageEngine = null;// StorageEngineFactory.get(file, user,
									// password)aStorageEngine;
		this.logger = logger;
		init();
	}

	private void init() {

		JLabel label1 = new JLabel(Messages.getString("Xml File name to export to"));
		tfFile = new JTextField(20);

		btBrowse = new JButton(Messages.getString("..."));
		btExport = new JButton(Messages.getString("Export to XML"));
		btCancel = new JButton(Messages.getString("Cancel"));

		btBrowse.setActionCommand("browse");
		btExport.setActionCommand("export");
		btCancel.setActionCommand("cancel");

		btBrowse.addActionListener(this);
		btExport.addActionListener(this);
		btCancel.addActionListener(this);

		loggerPanel = new LoggerPanel();

		JPanel fpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		fpanel.add(label1);
		fpanel.add(tfFile);
		fpanel.add(btBrowse);

		JPanel cpanel = new JPanel(new BorderLayout(4, 4));
		cpanel.add(fpanel, BorderLayout.NORTH);
		cpanel.add(new JScrollPane(loggerPanel), BorderLayout.CENTER);

		JPanel bpanel = new JPanel();
		bpanel.add(btCancel);
		bpanel.add(btExport);

		setLayout(new BorderLayout(4, 4));
		add(cpanel, BorderLayout.CENTER);
		add(bpanel, BorderLayout.SOUTH);
		add(GUITool.buildHeaderPanel("Export to XML Wizard"), BorderLayout.NORTH);

	}

	public void actionPerformed(ActionEvent e) {
		String action = e.getActionCommand();

		if ("browse".equals(action)) {
			browse();
		}
		if ("cancel".equals(action)) {
			cancel();
		}
		if ("export".equals(action)) {
			try {
				storageEngine.close();
				Thread t = new Thread(this);
				t.start();
			} catch (Exception e1) {
				logger.error("Error while export to XML : ", e1);
			}
		}

	}

	private void export() throws Exception {

		File file = new File(tfFile.getText());
		if (file.exists()) {
			int r = JOptionPane.showConfirmDialog(this, Messages.getString("File already exist, do you want to overwrite?"),
					"File already exist", JOptionPane.YES_NO_OPTION);
			if (r != JOptionPane.YES_OPTION) {
				return;
			}
		}
		long start = OdbTime.getCurrentTimeInMs();
		setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

		XMLExporter exporter = new XMLExporter(storageEngine);
		exporter.setExternalLogger(loggerPanel);
		exporter.export(file.getParent(), file.getName());
		// JOptionPane.showMessageDialog(this,"Export to " + file.getName() +
		// " sucessfull!");
		disableFields();
		setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
		long end = OdbTime.getCurrentTimeInMs();
		loggerPanel.info((end - start) + " ms");

	}

	private void cancel() {
		disableFields();
	}

	private void disableFields() {
		tfFile.setEnabled(false);
		btExport.setEnabled(false);
		btCancel.setEnabled(false);
		btBrowse.setEnabled(false);
	}

	private void browse() {
		final JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));

		fc.setDialogTitle(Messages.getString("Choose the name of the xml file to export to"));
		int returnVal = fc.showOpenDialog(this);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
			tfFile.setText(fc.getSelectedFile().getPath());
		}
	}

	public void run() {
		try {
			export();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			logger.error(e);
			loggerPanel.error(e);
		}

	}

}

 

Ads help maintain this website.