From 143752dfdcfb554b5f64445dd35f4514fbad30b2 Mon Sep 17 00:00:00 2001 From: Frederico Palma Date: Mon, 5 Apr 2004 19:14:19 +0000 Subject: [PATCH] no message git-svn-id: https://svn.coded.pt/svn/SIPRP@23 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/siprp/FichaDataProvider.java | 5 +- trunk/siprp/Main.java | 2 +- trunk/siprp/ficha/EmpresaPanel.java | 4 +- .../ficha/FichaAptidaoEditorManager.java | 9 +- trunk/siprp/ficha/FichaWindow.java | 26 +++- trunk/siprp/ficha/ObservacoesPanel.java | 39 ++++- trunk/siprp/ficha/TrabalhadorPanel.java | 138 +++++++++++++++++- 7 files changed, 202 insertions(+), 21 deletions(-) diff --git a/trunk/siprp/FichaDataProvider.java b/trunk/siprp/FichaDataProvider.java index c4fcefed..c9ee7d71 100644 --- a/trunk/siprp/FichaDataProvider.java +++ b/trunk/siprp/FichaDataProvider.java @@ -70,6 +70,7 @@ public class FichaDataProvider extends MetaProvider implements SearchExecuter { public static final String LOCAL_TRABALHO = "local_trabalho"; public static final String FUNCAO_PROPOSTA = "funcao_proposta"; public static final String DATA_ADMISSAO_FUNCAO = "data_admissao_funcao"; + public static final String OBSERVACOES = "observacoes"; public static final String ESTABELECIMENTO_ID = "estabelecimento_id"; // INACTIVO @@ -79,13 +80,12 @@ public class FichaDataProvider extends MetaProvider implements SearchExecuter { NACIONALIDADE, NUMERO_MECANOGRAFICO, DATA_ADMISSAO, CATEGORIA, LOCAL_TRABALHO, FUNCAO_PROPOSTA, DATA_ADMISSAO_FUNCAO, - ESTABELECIMENTO_ID }, + OBSERVACOES, ESTABELECIMENTO_ID, INACTIVO }, ID ); // exames public static final String T_EXAMES = "exames"; // ID - public static final String OBSERVACOES = "observacoes"; public static final String DATA = "data"; public static final String TIPO = "tipo"; public static final String OCASIONAL = "ocasional"; @@ -126,6 +126,7 @@ public class FichaDataProvider extends MetaProvider implements SearchExecuter { "R_ESTABELECIMENTOS_EMPRESAS" ); EMPRESAS.disableSave( INACTIVO ); ESTABELECIMENTOS.disableSave( INACTIVO ); + TRABALHADORES.disableSave( INACTIVO ); } catch( Exception e ) { diff --git a/trunk/siprp/Main.java b/trunk/siprp/Main.java index 2e4f2d66..4dd38faa 100644 --- a/trunk/siprp/Main.java +++ b/trunk/siprp/Main.java @@ -16,7 +16,7 @@ public class Main throws Exception { Insert.setDefaultKeyRetriever( JDBCAutoKeyRetriever.DEFAULT ); - String server = "192.168.0.12"; + String server = "localhost"; String dbase = "test"; String user = "admin"; String passwd = ""; diff --git a/trunk/siprp/ficha/EmpresaPanel.java b/trunk/siprp/ficha/EmpresaPanel.java index 84b6917d..f899ebdf 100644 --- a/trunk/siprp/ficha/EmpresaPanel.java +++ b/trunk/siprp/ficha/EmpresaPanel.java @@ -170,6 +170,8 @@ public class EmpresaPanel extends JPanel public void fill(Object value) { clear(); + empresa = null; + estabelecimento = null; if( value != null ) { Integer empresaID = (Integer)((Object[])value)[0]; @@ -259,8 +261,6 @@ public class EmpresaPanel extends JPanel estabelecimento.setProperty( name, hash.get( name ) ); } estabelecimento.setProperty( provider.R_ESTABELECIMENTO_EMPRESA, empresa ); - empresa.save(); - estabelecimento.save(); return estabelecimento; } catch( Exception ex ) diff --git a/trunk/siprp/ficha/FichaAptidaoEditorManager.java b/trunk/siprp/ficha/FichaAptidaoEditorManager.java index 74028f52..a91bcfc6 100644 --- a/trunk/siprp/ficha/FichaAptidaoEditorManager.java +++ b/trunk/siprp/ficha/FichaAptidaoEditorManager.java @@ -134,9 +134,9 @@ public class FichaAptidaoEditorManager extends EditorManager else if( state == STATE_EDIT ) { editor.reload( index ); - editor.enableComponents( index, false ); + editor.enableComponents( index, true ); // new, edit, cancel, save, delete, select - editor.actions( index, true, true, false, false, true, true ); + editor.actions( index, true, true, true, true, true, true ); state = STATE_EDIT; } } @@ -148,8 +148,9 @@ public class FichaAptidaoEditorManager extends EditorManager { return; } + editor.enableComponents( index, false ); // new, edit, cancel, save, delete, select - editor.actions( index, true, true, false, true, true, true ); + editor.actions( index, true, true, false, false, true, true ); state = STATE_EDIT; } @@ -193,7 +194,7 @@ public class FichaAptidaoEditorManager extends EditorManager public void editItem() { - throw new RuntimeException( "editItem cannot be called on FichaAptidaoEditorManager" ); + state = STATE_EDIT; } public void lock(boolean direction) diff --git a/trunk/siprp/ficha/FichaWindow.java b/trunk/siprp/ficha/FichaWindow.java index 830cb9f3..59c82289 100644 --- a/trunk/siprp/ficha/FichaWindow.java +++ b/trunk/siprp/ficha/FichaWindow.java @@ -11,6 +11,8 @@ import siprp.*; import java.awt.*; import javax.swing.*; +import com.evolute.utils.metadb.*; +import com.evolute.utils.ui.*; import com.evolute.utils.ui.search.*; import com.evolute.utils.ui.window.*; @@ -104,7 +106,20 @@ public class FichaWindow extends TabbedWindow new Runnable(){ public void run() { - empresaPanel.save(); + MetaObject estabelecimento = (MetaObject)empresaPanel.save(); + try + { + estabelecimento.save(); + + MetaObject trabalhador = (MetaObject)trabalhadorPanel.save(); + trabalhador.setProperty( fdpProvider.R_TRABALHADOR_ESTABELECIMENTO, estabelecimento ); + trabalhador.setProperty( fdpProvider.OBSERVACOES, observacoesPanel.save() ); + trabalhador.save(); + } + catch( Exception ex ) + { + DialogException.showExceptionMessage( ex, "Erro a guardar", true ); + } } }); return true; @@ -128,7 +143,7 @@ public class FichaWindow extends TabbedWindow return false; } } - + fdpProvider.setSearch( FichaDataProvider.SEARCH_ESTABELECIMENTOS ); fdpProvider.setSearchID( FichaDataProvider.SEARCH_EMPRESAS, empresaID.intValue() ); search = new SearchDialog( fdpProvider, null, true, null, true ); @@ -156,7 +171,6 @@ public class FichaWindow extends TabbedWindow { if( search.getIsNew() ) { -System.out.println( "FichaWindow: newItem: CRIAR TRABALHADOR" ); reload(0); return true; } @@ -178,15 +192,21 @@ System.out.println( "FichaWindow: newItem: CRIAR TRABALHADOR" ); { Object empresaData[] = new Object[]{ empresaID, estabelecimentoID }; empresaPanel.fill( empresaData ); + trabalhadorPanel.fill( trabalhadorID ); + observacoesPanel.fill( trabalhadorID ); } public void enableComponents( int index, boolean enable ) { empresaPanel.setEnabled( enable ); + trabalhadorPanel.setEnabled( enable ); + observacoesPanel.setEnabled( enable ); } public void clear( int index ) { empresaPanel.clear(); + trabalhadorPanel.clear(); + observacoesPanel.clear(); } } diff --git a/trunk/siprp/ficha/ObservacoesPanel.java b/trunk/siprp/ficha/ObservacoesPanel.java index 96690420..b7d46a76 100644 --- a/trunk/siprp/ficha/ObservacoesPanel.java +++ b/trunk/siprp/ficha/ObservacoesPanel.java @@ -10,19 +10,25 @@ import java.awt.*; import javax.swing.*; import com.evolute.utils.dataui.*; +import com.evolute.utils.metadb.*; +import siprp.*; /** * * @author fpalma */ public class ObservacoesPanel extends JPanel - implements FillerSaverWrapper + implements ControllableComponent { private JTextArea observacoesText; + private FichaDataProvider provider; + /** Creates a new instance of ObservacoesPanel */ public ObservacoesPanel() + throws Exception { + provider = (FichaDataProvider)FichaDataProvider.getProvider(); setupComponents(); } @@ -46,10 +52,39 @@ public class ObservacoesPanel extends JPanel public void fill(Object value) { + clear(); + Integer trabalhadorID = (Integer)value; + if( trabalhadorID != null ) + { + + try + { + MetaObject trabalhador = provider.load( provider.TRABALHADORES, new DBKey( trabalhadorID ) ); + String observacoes = (String) trabalhador.getProperty( provider.OBSERVACOES ); + if( observacoes != null ) + { + observacoesText.setText( observacoes ); + } + } + catch( Exception ex ) + { + ex.printStackTrace(); + } + } } public Object save() { - return null; + return observacoesText.getText(); + } + + public void clear() + { + observacoesText.setText( "" ); + } + + public void setEnabled( boolean enable ) + { + observacoesText.setEnabled( enable ); } } diff --git a/trunk/siprp/ficha/TrabalhadorPanel.java b/trunk/siprp/ficha/TrabalhadorPanel.java index d2813b61..42fcbe65 100644 --- a/trunk/siprp/ficha/TrabalhadorPanel.java +++ b/trunk/siprp/ficha/TrabalhadorPanel.java @@ -12,15 +12,17 @@ import java.util.*; import com.evolute.utils.data.*; import com.evolute.utils.dataui.*; +import com.evolute.utils.metadb.*; import com.evolute.utils.ui.*; import com.evolute.utils.ui.panel.*; +import siprp.*; /** * * @author fpalma */ public class TrabalhadorPanel extends JPanel - implements FillerSaverWrapper + implements ControllableComponent { private JTextField nomeText; private RadioButtonFixedPanel sexoPanel; @@ -33,12 +35,20 @@ public class TrabalhadorPanel extends JPanel private JTextField funcaoText; private JCalendarPanel dataAdmissaoFuncaoPanel; + private ComponentsHashtable components; + private FichaDataProvider provider; + private MetaObject trabalhador; + /** Creates a new instance of TrabalhadorPanel */ public TrabalhadorPanel() + throws Exception { + provider = (FichaDataProvider)FichaDataProvider.getProvider(); setupComponents(); + setupComponentsHashtable(); } + private void setupComponents() { @@ -99,12 +109,6 @@ public class TrabalhadorPanel extends JPanel gridbag.setConstraints( sexoPanel, constraints ); add( sexoPanel ); -// constraints.weightx = 1; -// constraints.gridwidth = GridBagConstraints.REMAINDER; -// JPanel pad = new JPanel(); -// gridbag.setConstraints( pad, constraints ); -// add( pad ); - constraints.weightx = 0; constraints.gridwidth = 2; gridbag.setConstraints( nacionalidadeLabel, constraints ); @@ -185,12 +189,132 @@ public class TrabalhadorPanel extends JPanel add( dataAdmissaoFuncaoPanel ); } + private void setupComponentsHashtable() + { + components = new ComponentsHashtable(); + components.putComponent( provider.T_TRABALHADORES + "." + provider.NOME, nomeText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_NASCIMENTO, dataNascimentoPanel ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.NACIONALIDADE, nacionalidadeText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.NUMERO_MECANOGRAFICO, numeroMecanograficoText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_ADMISSAO, dataAdmissaoPanel ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.CATEGORIA, categoriaText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.LOCAL_TRABALHO, localText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.FUNCAO_PROPOSTA, funcaoText ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_ADMISSAO_FUNCAO, dataAdmissaoFuncaoPanel ); + components.putDummy( provider.T_TRABALHADORES + "." + provider.ESTABELECIMENTO_ID ); + components.putDummy( provider.T_TRABALHADORES + "." + provider.OBSERVACOES ); + components.putComponent( provider.T_TRABALHADORES + "." + provider.SEXO, + new ControllableComponent() + { + public void fill( Object value ) + { + if( value != null && value.equals( "f" ) ) + { + sexoPanel.fill( new Integer(2) ); + } + else + { + sexoPanel.fill( new Integer(1) ); + } + } + + public Object save() + { + Integer id = (Integer)sexoPanel.save(); + if( id != null && id.intValue() == 2 ) + { + return "m"; + } + return "f"; + } + + public void clear() + { + sexoPanel.clear(); + } + + public void setEnabled( boolean enable ) + { + sexoPanel.setEnabled( enable ); + } + } ); + } + public void fill(Object value) { + clear(); + trabalhador = null; + if( value != null ) + { + Integer trabalhadorID = (Integer)value; + if( trabalhadorID != null ) + { + try + { + trabalhador = provider.load( provider.TRABALHADORES, new DBKey( trabalhadorID ) ); + DBField fields[] = provider.TRABALHADORES.getInsertFields(); + String trabalhadorFields[] = new String[ fields.length ]; + Hashtable data = new Hashtable(); + for( int i = 0; i < trabalhadorFields.length; ++i ) + { + trabalhadorFields[ i ] = fields[ i ].FULL_NAME; + Object fieldValue = trabalhador.getProperty( trabalhadorFields[ i ] ); + if( fieldValue != null ) + { + data.put( trabalhadorFields[ i ], fieldValue ); + } + } + ComponentController.fill( trabalhadorFields, data, components ); + } + catch( Exception ex ) + { + DialogException.showExceptionMessage( ex, "Erro a carregar os dados do trabalhador", true ); + } + } + } + } public Object save() { + try + { + if( trabalhador == null ) + { + trabalhador = provider.createObject( provider.TRABALHADORES ); + } + DBField fields[] = provider.TRABALHADORES.getInsertFields(); + String trabalhadorFields[] = new String[ fields.length ]; + for( int i = 0; i < trabalhadorFields.length; ++i ) + { + trabalhadorFields[ i ] = fields[ i ].FULL_NAME; + } + Hashtable hash = new Hashtable(); + ComponentController.save( trabalhadorFields, hash, components ); + Enumeration enum = hash.keys(); + while( enum.hasMoreElements() ) + { + String name = ( String )enum.nextElement(); + trabalhador.setProperty( name, hash.get( name ) ); + } + return trabalhador; + } + catch( Exception ex ) + { + ex.printStackTrace(); + } return null; } + + public void clear() + { + String names[] = (String[])components.keySet().toArray( new String[0] ); + ComponentController.clear( names, components ); + } + + public void setEnabled( boolean enable ) + { + String names[] = (String[])components.keySet().toArray( new String[0] ); + ComponentController.setEnabled( names, enable, components ); + } }