forked from Coded/SIPRP
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							363 lines
						
					
					
						
							9.0 KiB
						
					
					
				
			
		
		
	
	
							363 lines
						
					
					
						
							9.0 KiB
						
					
					
				/*
 | 
						|
 * Importer.java
 | 
						|
 *
 | 
						|
 * Created on 7 de Abril de 2004, 10:56
 | 
						|
 */
 | 
						|
 | 
						|
package siprp.importer;
 | 
						|
 | 
						|
import com.evolute.utils.*;
 | 
						|
import com.evolute.utils.arrays.*;
 | 
						|
import com.evolute.utils.tables.*;
 | 
						|
import com.evolute.utils.ui.*;
 | 
						|
 | 
						|
import java.awt.*;
 | 
						|
import java.awt.event.*;
 | 
						|
import java.io.*;
 | 
						|
import java.util.*;
 | 
						|
import javax.swing.*;
 | 
						|
import javax.swing.table.*;
 | 
						|
 | 
						|
import jxl.*;
 | 
						|
 | 
						|
import siprp.*;
 | 
						|
 | 
						|
/**
 | 
						|
 *
 | 
						|
 * @author  psantos
 | 
						|
 */
 | 
						|
public class Importer extends CustomJDialog
 | 
						|
{
 | 
						|
	public static final int TYPE_ADMISSAO = 0;
 | 
						|
	public static final int TYPE_DEMISSAO = 1;
 | 
						|
	
 | 
						|
	public static final String DATA_PREFIX = "Data ";
 | 
						|
	
 | 
						|
	public static final String NOME = "Nome do Funcion\u00e1rio";
 | 
						|
	public static final String SEXO = "Sexo";
 | 
						|
	public static final String NACIONALIDADE = "Nacionalidade";
 | 
						|
	public static final String DATA_NASCIMENTO = DATA_PREFIX + "Nascimento";
 | 
						|
	public static final String NUMERO_MECANOGRAFICO = "N\u00famero Mecanogr\u00e1fico";
 | 
						|
	public static final String DATA_ADMISSAO = DATA_PREFIX + "Admiss\u00e3o";
 | 
						|
	public static final String CATEGORIA = "Categoria";
 | 
						|
	public static final String LOCAL_TRABALHO = "Local Trabalho";
 | 
						|
	public static final String FUNCAO = "Fun\u00e7\u00e3o";
 | 
						|
	public static final String DATA_ADMISSAO_FUNCAO = DATA_PREFIX + "Admiss\u00e3o na Fun\u00e7\u00e3o";
 | 
						|
	public static final String DATA_DEMISSAO = DATA_PREFIX + "Demiss\u00e3o";
 | 
						|
	
 | 
						|
	private JPanel panel;
 | 
						|
	private BaseTable table;
 | 
						|
	private Excel2DArray e2da;
 | 
						|
	private boolean canceled = false;
 | 
						|
	private DataChooserWindow dcw;
 | 
						|
	private Object vals[][];
 | 
						|
	private int[] DEFAULT_SELECTION = new int[]{ 0, 2, 3, 1, -1, 4, 5, 7, 6, -1 };
 | 
						|
	private int[] DEFAULT_SELECTION_DEMISSAO = new int[]{ 0, 1 };
 | 
						|
 | 
						|
	public static final String NAMES[] = new String[]{
 | 
						|
			NOME,
 | 
						|
			SEXO,
 | 
						|
			NACIONALIDADE,
 | 
						|
			DATA_NASCIMENTO,
 | 
						|
			NUMERO_MECANOGRAFICO,
 | 
						|
			DATA_ADMISSAO,
 | 
						|
			CATEGORIA,
 | 
						|
			LOCAL_TRABALHO,
 | 
						|
			FUNCAO,
 | 
						|
			DATA_ADMISSAO_FUNCAO
 | 
						|
		};
 | 
						|
	
 | 
						|
	public static final String NAMES_DEMISSAO[] = new String[]{
 | 
						|
			NOME,
 | 
						|
			DATA_DEMISSAO
 | 
						|
		};
 | 
						|
	private final boolean multipleSelection;
 | 
						|
	protected final int type;
 | 
						|
	
 | 
						|
	/** Creates a new instance of Importer */
 | 
						|
	public Importer( JFrame modalFrame, String filename, boolean multiple, int type )
 | 
						|
		throws Exception
 | 
						|
	{
 | 
						|
		super( modalFrame, true );
 | 
						|
		multipleSelection = multiple;
 | 
						|
		this.type = type;
 | 
						|
		
 | 
						|
		int []selection = ( int [] ) Singleton.getInstance( SingletonConstants.EXCEL_FORMAT );
 | 
						|
		if( selection != null )
 | 
						|
		{
 | 
						|
			DEFAULT_SELECTION = selection;
 | 
						|
		}
 | 
						|
		int []selectionDemissao = ( int [] ) Singleton.getInstance( SingletonConstants.EXCEL_FORMAT_DEMISSAO );
 | 
						|
		if( selectionDemissao != null )
 | 
						|
		{
 | 
						|
			DEFAULT_SELECTION_DEMISSAO = selectionDemissao;
 | 
						|
		}
 | 
						|
		setupComponents( filename );
 | 
						|
		if( modalFrame == null )
 | 
						|
		{
 | 
						|
			center();
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			centerSuper();
 | 
						|
		}
 | 
						|
		setVisible( true );
 | 
						|
	}
 | 
						|
 | 
						|
	private void setupComponents( String filename )
 | 
						|
	{
 | 
						|
		setSize( 800, 500 );
 | 
						|
 | 
						|
		GridBagLayout gblGridBag = new GridBagLayout();
 | 
						|
		GridBagConstraints gbcConstraints = new GridBagConstraints();
 | 
						|
 | 
						|
		panel = ( JPanel ) getContentPane();
 | 
						|
 | 
						|
		panel.setLayout( gblGridBag );
 | 
						|
 | 
						|
		e2da = new Excel2DArray( filename );
 | 
						|
 | 
						|
		String colNames[] = new String[ e2da.rowLength() ];
 | 
						|
		for( int i = 0; i < colNames.length; i++ )
 | 
						|
		{
 | 
						|
			colNames[ i ] = " ";
 | 
						|
		}
 | 
						|
		Virtual2DTableModel tm = new Virtual2DTableModel( colNames,  null );
 | 
						|
		tm.setValues( e2da );
 | 
						|
		table = new BaseTable( tm );
 | 
						|
		int col = 0;
 | 
						|
		switch( type )
 | 
						|
		{
 | 
						|
			case TYPE_ADMISSAO:
 | 
						|
				col = DEFAULT_SELECTION[ 0 ];
 | 
						|
				break;
 | 
						|
				
 | 
						|
			case TYPE_DEMISSAO:
 | 
						|
				col = DEFAULT_SELECTION_DEMISSAO[ 0 ];
 | 
						|
				break;
 | 
						|
		}
 | 
						|
		table.getColumn( col ).setWidth( 200 );
 | 
						|
		if( !multipleSelection )
 | 
						|
		{
 | 
						|
			table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION );
 | 
						|
		}
 | 
						|
		table.getTableHeader().setResizingAllowed( true );
 | 
						|
		table.getTableHeader().setReorderingAllowed( false );
 | 
						|
	//	table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
 | 
						|
	
 | 
						|
		for( int i = 0; i < e2da.rowLength(); i++ )
 | 
						|
		{
 | 
						|
			table.getColumn( i ).setMinWidth( 50 );
 | 
						|
			//table.getColumn( i ).setResizable( true );
 | 
						|
		}
 | 
						|
 | 
						|
		JScrollPane sp = new JScrollPane( table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
 | 
						|
 | 
						|
		gbcConstraints.anchor = GridBagConstraints.CENTER;
 | 
						|
		gbcConstraints.fill = GridBagConstraints.BOTH;
 | 
						|
		gbcConstraints.insets = new Insets(5, 5, 5, 5);
 | 
						|
		gbcConstraints.gridwidth = 3;
 | 
						|
		gbcConstraints.gridheight = 3;
 | 
						|
		gbcConstraints.weighty = 3;
 | 
						|
		gbcConstraints.gridx = 0;
 | 
						|
		gbcConstraints.gridy = 3;
 | 
						|
		gblGridBag.setConstraints( sp, gbcConstraints );
 | 
						|
 | 
						|
		panel.add( sp );
 | 
						|
 | 
						|
		JPanel jpButtons = new JPanel();
 | 
						|
		final JButton jbOK = new JButton( "Escolher" );
 | 
						|
		jbOK.setEnabled( false );
 | 
						|
		jpButtons.add( jbOK );
 | 
						|
		JButton jbCancel = new JButton( "Cancelar" );
 | 
						|
		jpButtons.add( jbCancel );
 | 
						|
 | 
						|
		gbcConstraints.gridheight = 1;
 | 
						|
		gbcConstraints.weightx = 1;
 | 
						|
		gbcConstraints.weighty = 0;
 | 
						|
		gbcConstraints.anchor = GridBagConstraints.SOUTH;
 | 
						|
		gbcConstraints.fill = GridBagConstraints.BOTH;
 | 
						|
		gbcConstraints.insets = new Insets( 2, 2, 2, 2 );
 | 
						|
		gbcConstraints.gridwidth = 3;
 | 
						|
		gbcConstraints.gridx = 0;
 | 
						|
		gbcConstraints.gridy = 6;
 | 
						|
		gblGridBag.setConstraints( jpButtons, gbcConstraints );
 | 
						|
		panel.add( jpButtons );
 | 
						|
		
 | 
						|
		table.addMouseListener( new MouseAdapter() {
 | 
						|
			public void mouseClicked( MouseEvent e ) {
 | 
						|
				jbOK.setEnabled( true );
 | 
						|
				if( e.getButton() == MouseEvent.BUTTON1
 | 
						|
					&& e.getClickCount() == 2
 | 
						|
					&& table.columnAtPoint( e.getPoint() ) != -1
 | 
						|
					&& table.rowAtPoint( e.getPoint() ) != -1 )
 | 
						|
				{
 | 
						|
					acceptResult();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			public void mousePressed( MouseEvent e ) {
 | 
						|
				jbOK.setEnabled( true );
 | 
						|
			}
 | 
						|
		});
 | 
						|
 | 
						|
		jbOK.addActionListener( new ActionListener() {
 | 
						|
			public void actionPerformed( ActionEvent a ) {
 | 
						|
				acceptResult();
 | 
						|
			}
 | 
						|
		});
 | 
						|
		
 | 
						|
		jbCancel.addActionListener( new ActionListener() {
 | 
						|
			public void actionPerformed( ActionEvent a ) {
 | 
						|
				setVisible( false );
 | 
						|
				dispose();
 | 
						|
				canceled = true;
 | 
						|
			}
 | 
						|
		});
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	private void acceptResult()
 | 
						|
	{
 | 
						|
		if( multipleSelection )
 | 
						|
		{
 | 
						|
			int rows[] = table.getSelectedRows();
 | 
						|
			vals = new Object[ rows.length ][];
 | 
						|
			for( int i = 0; i < rows.length; ++i )
 | 
						|
			{
 | 
						|
				Vector v = new Vector( Arrays.asList( e2da.getRow( rows[ i ] ) ) );
 | 
						|
				v.add( "" );
 | 
						|
				vals[ i ] = (Object[]) v.toArray( new Object[ v.size() ] );
 | 
						|
			}
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			Vector v = new Vector( Arrays.asList( e2da.getRow( table.getSelectedRow() ) ) );
 | 
						|
			v.add( "" );
 | 
						|
			vals = new Object[][] { ( Object[] )v.toArray( new Object[ v.size() ] ) };
 | 
						|
		}
 | 
						|
		
 | 
						|
/*
 | 
						|
		System.out.println( "row: " + table.getSelectedRow() );
 | 
						|
		System.out.print( "vals: " );
 | 
						|
		for( int i = 0; i < vals.length; i++ )
 | 
						|
		{
 | 
						|
			System.out.print( "[" + vals[ i ] + "]" );
 | 
						|
		}
 | 
						|
		System.out.println();
 | 
						|
*/
 | 
						|
		setVisible( false );
 | 
						|
		dispose();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	public Hashtable getData()
 | 
						|
	{
 | 
						|
		if( NAMES == null || vals == null )
 | 
						|
		{
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		dcw = new DataChooserWindow( null, NAMES, vals, DEFAULT_SELECTION );
 | 
						|
 | 
						|
		if( canceled || ( dcw == null ) )
 | 
						|
		{
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		
 | 
						|
		return dcw.getData();
 | 
						|
	}
 | 
						|
 | 
						|
	public Hashtable[] getMultipleData()
 | 
						|
	{
 | 
						|
		switch( type )
 | 
						|
		{
 | 
						|
			case TYPE_ADMISSAO:
 | 
						|
				if( NAMES == null || vals == null )
 | 
						|
				{
 | 
						|
					return null;
 | 
						|
				}
 | 
						|
				dcw = new DataChooserWindow( null, NAMES, vals, DEFAULT_SELECTION );
 | 
						|
				break;
 | 
						|
				
 | 
						|
			case TYPE_DEMISSAO:
 | 
						|
				if( NAMES_DEMISSAO == null || vals == null )
 | 
						|
				{
 | 
						|
					return null;
 | 
						|
				}
 | 
						|
				dcw = new DataChooserWindow( null, NAMES_DEMISSAO, vals, DEFAULT_SELECTION_DEMISSAO );
 | 
						|
				break;
 | 
						|
		}
 | 
						|
 | 
						|
		if( canceled || ( dcw == null ) )
 | 
						|
		{
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		
 | 
						|
		return dcw.getMultipleData();
 | 
						|
	}
 | 
						|
 | 
						|
	
 | 
						|
	public static void main( String args[] )
 | 
						|
	{
 | 
						|
//		FileDialog fd = new FileDialog( null, "Escolha um ficheiro Excel:", FileDialog.LOAD );
 | 
						|
//		fd.setDirectory( System.getProperty( "user.home" ) );
 | 
						|
//		fd.setFilenameFilter( new FilenameFilter() {
 | 
						|
//				public boolean accept( File dir, String name )
 | 
						|
//				{
 | 
						|
//					return (name!=null) && (name.indexOf( ".xls" ) != -1);
 | 
						|
//				}
 | 
						|
//			} );
 | 
						|
//		fd.show();
 | 
						|
		String filename = "c:\\teste_com_dados.xls";
 | 
						|
		//String filename = fd.getFile();
 | 
						|
		if( filename != null )
 | 
						|
		{
 | 
						|
			//filename = fd.getDirectory() + File.separator + filename;
 | 
						|
			try
 | 
						|
			{
 | 
						|
				Importer importer = new Importer( null, filename, true, TYPE_ADMISSAO );
 | 
						|
				Hashtable hash = importer.getData();
 | 
						|
				if( hash != null )
 | 
						|
				{
 | 
						|
					System.out.println( "Data: " + hash );
 | 
						|
				}
 | 
						|
			}
 | 
						|
			catch( Exception ex )
 | 
						|
			{
 | 
						|
				ex.printStackTrace();
 | 
						|
				JOptionPane.showMessageDialog( null, "Erro a importar", "Erro...", JOptionPane.ERROR_MESSAGE );
 | 
						|
			}
 | 
						|
		}
 | 
						|
//		Importer im = null;
 | 
						|
//		try
 | 
						|
//		{
 | 
						|
//			im = new Importer( null,
 | 
						|
//				"E:\\test.xls"
 | 
						|
//				"C:\\Documents and Settings\\psantos\\My Documents\\Devel\\teste.xls"
 | 
						|
//				"C:\\Documents and Settings\\psantos\\My Documents\\Devel\\Docs\\jexcelapi\\jxlrwtest.xls"
 | 
						|
//				);
 | 
						|
//
 | 
						|
//System.out.println( "Escolhido: " + im.getData() );
 | 
						|
//
 | 
						|
//		}
 | 
						|
//		catch( Exception e )
 | 
						|
//		{
 | 
						|
//			e.printStackTrace();
 | 
						|
//		}
 | 
						|
 | 
						|
//		String[][] all =  (String[][]) e.getObjects();
 | 
						|
//
 | 
						|
//		for( int j = 0; j < e.rowLength(); j++ )
 | 
						|
//		{
 | 
						|
//			String[] r = e.getRow( j );
 | 
						|
//			for( int i = 0; i < r.length; i++ )
 | 
						|
//			{
 | 
						|
//				System.out.print( "[" + r[ i ] + "]" );
 | 
						|
//			}
 | 
						|
//			System.out.println();
 | 
						|
//		}
 | 
						|
	}
 | 
						|
} |