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.
		
		
		
		
		
			
		
			
				
					
					
						
							361 lines
						
					
					
						
							9.0 KiB
						
					
					
				
			
		
		
	
	
							361 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( selection != null )
 | |
| 		{
 | |
| 			DEFAULT_SELECTION_DEMISSAO = selectionDemissao;
 | |
| 		}
 | |
| 		setupComponents( filename );
 | |
| 		if( modalFrame == null )
 | |
| 		{
 | |
| 			center();
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			centerSuper();
 | |
| 		}
 | |
| 		show();
 | |
| 	}
 | |
| 
 | |
| 	private void setupComponents( String filename )
 | |
| 	{
 | |
| 		setSize( 600, 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 );
 | |
| 		switch( type )
 | |
| 		{
 | |
| 			case TYPE_ADMISSAO:
 | |
| 				table.fixColumnWidth( DEFAULT_SELECTION[ 0 ], 120 );
 | |
| 				break;
 | |
| 				
 | |
| 			case TYPE_DEMISSAO:
 | |
| 				table.fixColumnWidth( DEFAULT_SELECTION_DEMISSAO[ 0 ], 120 );
 | |
| 				break;
 | |
| 		}
 | |
| 		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, 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();
 | |
| //		}
 | |
| 	}
 | |
| } |