/* * EmpresaPanel.java * * Created on 29 de Março de 2004, 11:53 */ package siprp.ficha; import java.awt.*; import javax.swing.*; 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.button.*; import com.evolute.utils.ui.panel.*; import siprp.*; /** * * @author fpalma */ public class EmpresaPanel extends JPanel implements ControllableComponent { private JTextField designacaoSocialText; private JTextField estabelecimentoText; private JTextField localidadeText; private RadioButtonFixedPanel servicoSaudeTipoPanel; private RadioButtonFixedPanel servicoHigieneTipoPanel; private JTextField designacaoText; private FichaDataProvider provider; private ComponentsHashtable components; private MetaObject estabelecimento; private MetaObject empresa; /** Creates a new instance of EmpresaPanel */ public EmpresaPanel() throws Exception { provider = (FichaDataProvider)FichaDataProvider.getProvider(); setupComponents(); setupComponentsHashtable(); } private void setupComponents() { setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Empresa/Entidade" ) ); JLabel designacaoSocialLabel = new JLabel( "Designa\u00e7\u00e3o Social" ); designacaoSocialText = new JTextField(); // JPanel servicoSaudePanel = new JPanel(); JLabel estabelecimentoLabel = new JLabel( "Estabelecimento" ); estabelecimentoText = new JTextField(); JLabel localidadeLabel = new JLabel( "Localidade" ); localidadeText = new JTextField(); JLabel servicoSaudeLabel = new JLabel( "Servi\u00e7o de Sa\u00fade: Tipo" ); servicoSaudeTipoPanel = new RadioButtonFixedPanel( new IDObject[]{ new MappableObject( new Integer(1), "Interno" ), new MappableObject( new Integer(2), "Interempresas" ), new MappableObject( new Integer(3), "Externo" ), new MappableObject( new Integer(4), "Servi\u00e7o Nacional de Sa\u00fade" ) }, 1, 4, RadioButtonPanel.ORIENTATION_HORIZONTAL, false ); JLabel servicoHigieneLabel = new JLabel( "Servi\u00e7o de Higiene e Seguran\u00e7a: Tipo" ); servicoHigieneTipoPanel = new RadioButtonFixedPanel( new IDObject[]{ new MappableObject( new Integer(1), "Interno" ), new MappableObject( new Integer(2), "Interempresas" ), new MappableObject( new Integer(3), "Externo" ), new MappableObject( new Integer(4), "Outro" ) }, 1, 4, RadioButtonPanel.ORIENTATION_HORIZONTAL, false ); JLabel designacaoLabel = new JLabel( "Designa\u00e7\u00e3o" ); designacaoText = new JTextField(); GridBagLayout gridbag = new GridBagLayout(); setLayout( gridbag ); GridBagConstraints constraints = new GridBagConstraints(); constraints.insets = new Insets( 0, 1, 0, 1 ); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridwidth = 1; constraints.weightx = 0; constraints.gridheight = 1; constraints.weighty = 0; gridbag.setConstraints( designacaoSocialLabel, constraints ); add( designacaoSocialLabel ); constraints.weightx = 1; constraints.gridwidth = GridBagConstraints.REMAINDER; gridbag.setConstraints( designacaoSocialText, constraints ); add( designacaoSocialText ); constraints.weightx = 0; constraints.gridwidth = 1; gridbag.setConstraints( estabelecimentoLabel, constraints ); add( estabelecimentoLabel ); constraints.weightx = 0.6; constraints.gridwidth = 3; gridbag.setConstraints( estabelecimentoText, constraints ); add( estabelecimentoText ); constraints.weightx = 0; constraints.gridwidth = 1; gridbag.setConstraints( localidadeLabel, constraints ); add( localidadeLabel ); constraints.weightx = 0.4; constraints.gridwidth = GridBagConstraints.REMAINDER; gridbag.setConstraints( localidadeText, constraints ); add( localidadeText ); constraints.weightx = 0; constraints.gridwidth = 2; gridbag.setConstraints( servicoSaudeLabel, constraints ); add( servicoSaudeLabel ); constraints.weightx = 1; constraints.gridwidth = GridBagConstraints.REMAINDER; gridbag.setConstraints( servicoSaudeTipoPanel, constraints ); add( servicoSaudeTipoPanel ); constraints.weightx = 0; constraints.gridwidth = 3; gridbag.setConstraints( servicoHigieneLabel, constraints ); add( servicoHigieneLabel ); constraints.weightx = 1; constraints.gridwidth = GridBagConstraints.REMAINDER; gridbag.setConstraints( servicoHigieneTipoPanel, constraints ); add( servicoHigieneTipoPanel ); constraints.gridwidth = 1; constraints.weightx = 0; constraints.weighty = 1; constraints.gridheight = GridBagConstraints.REMAINDER; gridbag.setConstraints( designacaoLabel, constraints ); add( designacaoLabel ); constraints.weightx = 1; constraints.gridwidth = GridBagConstraints.REMAINDER; gridbag.setConstraints( designacaoText, constraints ); add( designacaoText ); } private void setupComponentsHashtable() { components = new ComponentsHashtable(); components.putComponent( provider.T_EMPRESAS + "." + provider.DESIGNACAO_SOCIAL, designacaoSocialText ); components.put( provider.T_EMPRESAS + "." + provider.SERVICO_SAUDE_TIPO, servicoSaudeTipoPanel ); components.putDummy( provider.T_EMPRESAS + "." + provider.SERVICO_SAUDE_DESIGNACAO ); components.put( provider.T_EMPRESAS + "." + provider.SERVICO_HIGIENE_TIPO, servicoHigieneTipoPanel ); components.putComponent( provider.T_EMPRESAS + "." + provider.SERVICO_HIGIENE_DESIGNACAO, designacaoText ); components.putComponent( provider.T_ESTABELECIMENTOS + "." + provider.NOME, estabelecimentoText ); components.putComponent( provider.T_ESTABELECIMENTOS + "." + provider.LOCALIDADE, localidadeText ); components.putDummy( provider.T_EMPRESAS + "." + provider.INACTIVO ); components.putDummy( provider.T_ESTABELECIMENTOS + "." + provider.EMPRESA_ID ); components.putDummy( provider.T_ESTABELECIMENTOS + "." + provider.INACTIVO ); } public void fill(Object value) { clear(); if( value != null ) { Integer empresaID = (Integer)((Object[])value)[0]; Integer estabelecimentoID = (Integer)((Object[])value)[1]; if( empresaID != null ) { try { empresa = provider.load( provider.EMPRESAS, new DBKey( empresaID ) ); DBField fields[] = provider.EMPRESAS.getInsertFields(); String empresaFields[] = new String[ fields.length ]; Hashtable data = new Hashtable(); for( int i = 0; i < empresaFields.length; ++i ) { empresaFields[ i ] = fields[ i ].FULL_NAME; Object fieldValue = empresa.getProperty( empresaFields[ i ] ); if( fieldValue != null ) { data.put( empresaFields[ i ], fieldValue ); } } ComponentController.fill( empresaFields, data, components ); if( estabelecimentoID != null ) { estabelecimento = provider.load( provider.ESTABELECIMENTOS, new DBKey( estabelecimentoID ) ); fields = provider.ESTABELECIMENTOS.getInsertFields(); String estabelecimentoFields[] = new String[ fields.length ]; for( int i = 0; i < estabelecimentoFields.length; ++i ) { estabelecimentoFields[ i ] = fields[ i ].FULL_NAME; Object fieldValue = estabelecimento.getProperty( estabelecimentoFields[ i ] ); if( fieldValue != null ) { data.put( estabelecimentoFields[ i ], fieldValue ); } } ComponentController.fill( estabelecimentoFields, data, components ); } } catch( Exception ex ) { DialogException.showExceptionMessage( ex, "Erro a carregar os dados da Empresa", true ); } } } } public Object save() { try { if( estabelecimento == null ) { estabelecimento = provider.createObject( provider.ESTABELECIMENTOS ); } if( empresa == null ) { empresa = provider.createObject( provider.EMPRESAS ); } DBField fields[] = provider.EMPRESAS.getInsertFields(); String empresaFields[] = new String[ fields.length ]; for( int i = 0; i < empresaFields.length; ++i ) { empresaFields[ i ] = fields[ i ].FULL_NAME; } Hashtable hash = new Hashtable(); ComponentController.save( empresaFields, hash, components ); Enumeration enum = hash.keys(); while( enum.hasMoreElements() ) { String name = ( String )enum.nextElement(); empresa.setProperty( name, hash.get( name ) ); } fields = provider.ESTABELECIMENTOS.getInsertFields(); String estabelecimentoFields[] = new String[ fields.length ]; for( int i = 0; i < estabelecimentoFields.length; ++i ) { estabelecimentoFields[ i ] = fields[ i ].FULL_NAME; } hash = new Hashtable(); ComponentController.save( estabelecimentoFields, hash, components ); enum = hash.keys(); while( enum.hasMoreElements() ) { String name = ( String )enum.nextElement(); estabelecimento.setProperty( name, hash.get( name ) ); } estabelecimento.setProperty( provider.R_ESTABELECIMENTO_EMPRESA, empresa ); empresa.save(); estabelecimento.save(); return estabelecimento; } 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 ); } }