From 55272cdee6419c880fd79043f312d7b8e74fcf44 Mon Sep 17 00:00:00 2001 From: Diogo Neves Date: Wed, 25 Aug 2010 16:45:31 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@1428 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/SIPRPSoft/lib/shst.jar | Bin 1469654 -> 1470727 bytes .../src/siprp/FichaDataProvider.java | 6 +- .../src/siprp/clientes/AvisosPanel.java | 2 +- .../src/siprp/clientes/MarcacaoPanel.java | 2 +- .../src/siprp/data/AvisoConstants.java | 18 - .../SIPRPSoft/src/siprp/data/BaseObject.java | 97 +-- trunk/SIPRPSoft/src/siprp/data/Marcacao.java | 2 +- .../data/MarcacaoTrabalhadorConstants.java | 17 - .../src/siprp/data/outer/AvisosData.java | 2 +- .../data/outer/MarcacoesTrabalhadorData.java | 2 +- .../src/siprp/ficha/FichaWindow.java | 2 +- .../TratarMarcacaoTrabalhadorAction.java | 10 +- .../MarcacaoConsultaExtendedPanel.java | 30 - .../siprp/medicina/MarcacaoConsultaPanel.java | 321 -------- .../siprp/medicina/MarcacaoExamePanel.java | 281 ------- .../medicina/MarcacoesMedicinaHandler.java | 95 --- .../siprp/medicina/MedicinaDataProvider.java | 479 ------------ .../siprp/medicina/MedicinaUpperPanel.java | 261 ------- .../src/siprp/medicina/MedicinaWindow.java | 706 ------------------ trunk/SIPRPSoft/src/siprp/medicina/Test.java | 37 - .../presencas/PresencasDataProvider.java | 6 +- .../presencas/RegistarPresencasWindow.java | 3 +- .../presencas/actions/RealizouAction.java | 2 +- .../actions/RealizouParcialmenteAction.java | 2 +- 24 files changed, 22 insertions(+), 2361 deletions(-) delete mode 100644 trunk/SIPRPSoft/src/siprp/data/AvisoConstants.java delete mode 100644 trunk/SIPRPSoft/src/siprp/data/MarcacaoTrabalhadorConstants.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaExtendedPanel.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaPanel.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MarcacaoExamePanel.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MarcacoesMedicinaHandler.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MedicinaDataProvider.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MedicinaUpperPanel.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/MedicinaWindow.java delete mode 100644 trunk/SIPRPSoft/src/siprp/medicina/Test.java diff --git a/trunk/SIPRPSoft/lib/shst.jar b/trunk/SIPRPSoft/lib/shst.jar index 3944eec7712ef2579bc01c24fbd3f014f79de574..d8a5307915d98574fcdf46ab49d860ab70469eed 100644 GIT binary patch delta 33344 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%0Db_X3}&^G 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 delta 32069 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 diff --git a/trunk/SIPRPSoft/src/siprp/FichaDataProvider.java b/trunk/SIPRPSoft/src/siprp/FichaDataProvider.java index 1227313a..125f498a 100644 --- a/trunk/SIPRPSoft/src/siprp/FichaDataProvider.java +++ b/trunk/SIPRPSoft/src/siprp/FichaDataProvider.java @@ -8,8 +8,10 @@ package siprp; import java.text.DateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.Map; -import siprp.data.AvisoConstants; +import shst.data.AvisoConstants; import siprp.data.Marcacao; import siprp.data.outer.MarcacoesTrabalhadorData; @@ -28,8 +30,6 @@ import com.evolute.utils.sql.Update; import com.evolute.utils.strings.StringPlainer; import com.evolute.utils.ui.search.SearchDialog; import com.evolute.utils.ui.search.SearchExecuter; -import java.util.HashMap; -import java.util.Map; /** * diff --git a/trunk/SIPRPSoft/src/siprp/clientes/AvisosPanel.java b/trunk/SIPRPSoft/src/siprp/clientes/AvisosPanel.java index 0f7c7446..c2051ac2 100644 --- a/trunk/SIPRPSoft/src/siprp/clientes/AvisosPanel.java +++ b/trunk/SIPRPSoft/src/siprp/clientes/AvisosPanel.java @@ -28,9 +28,9 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import shst.clientes.AvisosPanelInterface; +import shst.data.AvisoConstants; import siprp.FichaDataProvider; import siprp.SIPRPTracker; -import siprp.data.AvisoConstants; import siprp.data.outer.AvisosData; import siprp.data.outer.EmpresasData; import siprp.data.outer.EstabelecimentosData; diff --git a/trunk/SIPRPSoft/src/siprp/clientes/MarcacaoPanel.java b/trunk/SIPRPSoft/src/siprp/clientes/MarcacaoPanel.java index 097f8dc1..d056ec8d 100644 --- a/trunk/SIPRPSoft/src/siprp/clientes/MarcacaoPanel.java +++ b/trunk/SIPRPSoft/src/siprp/clientes/MarcacaoPanel.java @@ -28,11 +28,11 @@ import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import shst.data.MarcacaoTrabalhadorConstants; import siprp.SingletonConstants; import siprp.companydataloaders.CompanyDataLoader; import siprp.data.Marcacao; import siprp.data.MarcacaoListLoader; -import siprp.data.MarcacaoTrabalhadorConstants; import siprp.data.outer.ContactosData; import siprp.data.outer.EstabelecimentosData; import siprp.data.outer.MarcacoesEstabelecimentoData; diff --git a/trunk/SIPRPSoft/src/siprp/data/AvisoConstants.java b/trunk/SIPRPSoft/src/siprp/data/AvisoConstants.java deleted file mode 100644 index 1f8ca61f..00000000 --- a/trunk/SIPRPSoft/src/siprp/data/AvisoConstants.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * AvisoConstants.java - * - * Created on 11 de Outubro de 2004, 13:03 - */ - -package siprp.data; - -/** - * - * @author fpalma - */ -public interface AvisoConstants -{ - public static final int TIPO_TRABALHADOR = 0; - public static final int TIPO_ESTABELECIMENTO = 1; - public static final int TIPO_EMPRESA = 2; -} diff --git a/trunk/SIPRPSoft/src/siprp/data/BaseObject.java b/trunk/SIPRPSoft/src/siprp/data/BaseObject.java index dc9da5b9..eefa7bfd 100644 --- a/trunk/SIPRPSoft/src/siprp/data/BaseObject.java +++ b/trunk/SIPRPSoft/src/siprp/data/BaseObject.java @@ -1,102 +1,7 @@ package siprp.data; -import java.sql.Timestamp; -import java.text.DateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; -import com.evolute.adt.Pair; -import com.evolute.entity.evo.EvoDataException; -import com.evolute.entity.evo.EvoDataObject; -import com.evolute.utils.strings.UnicodeChecker; - -public abstract class BaseObject extends EvoDataObject +public abstract class BaseObject extends shst.data.object.BaseObject { - static - { - UnicodeChecker.setUseDoubleSlash( true ); - } - - private static final long serialVersionUID = 1L; - - private static final String [] SOFT_DELETE_KEYS = new String[]{ "deleted_stamp", "deleted_date", "inactivo" }; - - public static final DateFormat DATE_FORMAT = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) ); - - protected static final String isNewMessage = " "; - - @Override - protected List fromReference(Class clazz, Integer id, String referingProperty, String... order) throws EvoDataException - { - List result = new LinkedList(); - for( Object o : super.fromReference(clazz, id, referingProperty, order) ) - { - Object inactivoString = ((EvoDataObject)o).get("inactivo"); - Object deletedDateValue = ((EvoDataObject)o).get("deleted_date"); - if( deletedDateValue == null && !"y".equals( inactivoString ) ) - { - result.add( o ); - } - } - return result; - } - - private Object getSoftDeleteObject( Class returnClass ) - { - Object result = null; - if( Timestamp.class.isAssignableFrom( returnClass ) ) - { - result = new Timestamp( System.currentTimeMillis() ); - } - else if( Date.class.isAssignableFrom( returnClass ) ) - { - result = new Date(); - } - else if( String.class.isAssignableFrom( returnClass ) ) - { - result = "y"; - } - else if( Boolean.class.isAssignableFrom( returnClass ) ) - { - result = true; - } - return result; - } - - private Pair getSoftDelete() - { - String resultKey = null; - Object resultObject = null; - List keys = Arrays.asList( getFieldNames() ); - for( String key : SOFT_DELETE_KEYS ) - { - if( keys.contains( key ) ) - { - resultKey = key; - resultObject = getSoftDeleteObject( getFieldClass( key ) ); - break; - } - } - return resultKey == null ? null : new Pair(resultKey,resultObject); - } - - @Override - public void delete() throws EvoDataException - { - Pair softDelete = getSoftDelete(); - if( softDelete != null ) - { - set( softDelete.getLeft(), softDelete.getRight() ); - save(); - } - else - { - super.delete(); - } - } - } diff --git a/trunk/SIPRPSoft/src/siprp/data/Marcacao.java b/trunk/SIPRPSoft/src/siprp/data/Marcacao.java index 5b8e7c03..d206a06b 100644 --- a/trunk/SIPRPSoft/src/siprp/data/Marcacao.java +++ b/trunk/SIPRPSoft/src/siprp/data/Marcacao.java @@ -10,6 +10,7 @@ import java.text.DateFormat; import java.util.Calendar; import java.util.Date; +import shst.medicina.MedicinaDataProvider; import siprp.data.outer.AvisosData; import siprp.data.outer.EmpresasData; import siprp.data.outer.EstabelecimentosData; @@ -17,7 +18,6 @@ import siprp.data.outer.MarcacoesEmpresaData; import siprp.data.outer.MarcacoesEstabelecimentoData; import siprp.data.outer.MarcacoesTrabalhadorData; import siprp.data.outer.TrabalhadoresData; -import siprp.medicina.MedicinaDataProvider; import com.evolute.entity.evo.EvoDataException; import com.evolute.utils.tables.ColumnizedObject; diff --git a/trunk/SIPRPSoft/src/siprp/data/MarcacaoTrabalhadorConstants.java b/trunk/SIPRPSoft/src/siprp/data/MarcacaoTrabalhadorConstants.java deleted file mode 100644 index e0096a87..00000000 --- a/trunk/SIPRPSoft/src/siprp/data/MarcacaoTrabalhadorConstants.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * MarcacaoTrabalhadorConstants.java - * - * Created on 11 de Outubro de 2004, 13:18 - */ - -package siprp.data; - -/** - * - * @author fpalma - */ -public interface MarcacaoTrabalhadorConstants -{ - public static final int TIPO_EXAMES = 0; - public static final int TIPO_CONSULTA = 1; -} diff --git a/trunk/SIPRPSoft/src/siprp/data/outer/AvisosData.java b/trunk/SIPRPSoft/src/siprp/data/outer/AvisosData.java index 5d261a82..33fbe9f7 100644 --- a/trunk/SIPRPSoft/src/siprp/data/outer/AvisosData.java +++ b/trunk/SIPRPSoft/src/siprp/data/outer/AvisosData.java @@ -7,7 +7,7 @@ */ package siprp.data.outer; -import siprp.data.AvisoConstants; +import shst.data.AvisoConstants; public final class AvisosData extends siprp.data.inner.Avisos implements AvisoConstants diff --git a/trunk/SIPRPSoft/src/siprp/data/outer/MarcacoesTrabalhadorData.java b/trunk/SIPRPSoft/src/siprp/data/outer/MarcacoesTrabalhadorData.java index 1c486b49..14c5ce75 100644 --- a/trunk/SIPRPSoft/src/siprp/data/outer/MarcacoesTrabalhadorData.java +++ b/trunk/SIPRPSoft/src/siprp/data/outer/MarcacoesTrabalhadorData.java @@ -7,7 +7,7 @@ */ package siprp.data.outer; -import siprp.data.MarcacaoTrabalhadorConstants; +import shst.data.MarcacaoTrabalhadorConstants; public final class MarcacoesTrabalhadorData extends siprp.data.inner.MarcacoesTrabalhador implements MarcacaoTrabalhadorConstants diff --git a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java index e522e70e..1e6e5e34 100644 --- a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java +++ b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java @@ -30,6 +30,7 @@ import org.jdom.Document; import org.jdom.Element; import org.jdom.output.XMLOutputter; +import shst.medicina.MarcacoesMedicinaHandler; import siprp.FichaDataProvider; import siprp.data.outer.EmpresasData; import siprp.data.outer.EstabelecimentosData; @@ -38,7 +39,6 @@ import siprp.data.outer.MedicosData; import siprp.data.outer.TrabalhadoresData; import siprp.importer.Importer; import siprp.lembretes.LembretesDataProvider; -import siprp.medicina.MarcacoesMedicinaHandler; import siprp.printer.Printer; import siprp.ui.SIPRPTabbedWindow; diff --git a/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java b/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java index ec05af23..2d67fb4f 100644 --- a/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java +++ b/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java @@ -17,6 +17,7 @@ import java.util.List; import javax.swing.AbstractAction; import javax.swing.JOptionPane; +import shst.data.provider.BaseProvider; import shst.medicina.multi.MultiMarcacoesWindow; import siprp.SIPRPTracker; import siprp.SingletonConstants; @@ -33,7 +34,7 @@ import siprp.data.provider.MedicinaDataProvider; import siprp.lembretes.Lembrete; import siprp.lembretes.LembretesDataProvider; -import com.evolute.entity.ProviderInterface; +import com.evolute.entity.evo.EvoDataProvider; import com.evolute.utils.Singleton; import com.evolute.utils.data.IDObject; import com.evolute.utils.ui.DialogException; @@ -46,7 +47,7 @@ public class TratarMarcacaoTrabalhadorAction extends AbstractAction { private static final long serialVersionUID = 1L; private LembretesDataProvider lembretesProvider; - private ProviderInterface JDO; + private EvoDataProvider evoProvider; private SIPRPTracker tracker; private Integer lembreteID; @@ -63,7 +64,8 @@ public class TratarMarcacaoTrabalhadorAction extends AbstractAction { lembreteID = lembrete.getID(); lembretesProvider = LembretesDataProvider.getProvider(); - JDO = (ProviderInterface) Singleton.getInstance( Singleton.DEFAULT_EVO_DATA_PROVIDER ); + evoProvider = BaseProvider.getInstance().getEvoProvider(); +// JDO = (ProviderInterface) Singleton.getInstance( Singleton.DEFAULT_EVO_DATA_PROVIDER ); medicinaDAO = MedicinaDataProvider.getProvider(); } @@ -89,7 +91,7 @@ public class TratarMarcacaoTrabalhadorAction extends AbstractAction if( lembrete.getMarcacaoTrabalhadorID() != null ) { // old model - MarcacoesTrabalhadorData marcacao = ( MarcacoesTrabalhadorData ) JDO.load( MarcacoesTrabalhadorData.class, lembrete.getMarcacaoTrabalhadorID() ); + MarcacoesTrabalhadorData marcacao = ( MarcacoesTrabalhadorData ) evoProvider.load( MarcacoesTrabalhadorData.class, lembrete.getMarcacaoTrabalhadorID() ); TrabalhadoresData trabalhador = marcacao.toTrabalhador_id(); EstabelecimentosData estabelecimento = trabalhador.toEstabelecimento_id(); EmpresasData empresa = estabelecimento.toEmpresa_id(); diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaExtendedPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaExtendedPanel.java deleted file mode 100644 index f92a2213..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaExtendedPanel.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * MarcacaoConsultaExtendedPanel.java - * - * Created on 13 de Fevereiro de 2007, 20:36 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.medicina; - -import javax.swing.JPanel; - -/** - * - * @author Frederico - */ -public class MarcacaoConsultaExtendedPanel extends JPanel -{ - - /** Creates a new instance of MarcacaoConsultaExtendedPanel */ - public MarcacaoConsultaExtendedPanel() - { - setupComponents(); - } - - private void setupComponents() - { - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaPanel.java deleted file mode 100644 index 7669b8a8..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoConsultaPanel.java +++ /dev/null @@ -1,321 +0,0 @@ -package siprp.medicina; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.util.Hashtable; -import java.util.Map; - -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import siprp.data.outer.MarcacoesTrabalhadorData; - -import com.evolute.utils.Singleton; -import com.evolute.utils.data.IDObject; -import com.evolute.utils.data.MappableObject; -import com.evolute.utils.data.PropertyObject; -import com.evolute.utils.dataui.ComponentController; -import com.evolute.utils.dataui.ComponentsHashtable; -import com.evolute.utils.dataui.ControllableComponent; -import com.evolute.utils.dataui.DataClassAware; -import com.evolute.utils.db.DBManager; -import com.evolute.utils.db.SQLExecuter; -import com.evolute.utils.ui.calendar.JCalendarPanel; -import com.evolute.utils.ui.panel.RadioButtonFixedPanel; -import com.evolute.utils.ui.text.StateTextArea; - -public class MarcacaoConsultaPanel - extends JPanel - implements ControllableComponent, DataClassAware -{ - - private static final long serialVersionUID = 1L; - private MarcacoesTrabalhadorData marcacaoTrabalhadoresData; - private final ComponentsHashtable components = new ComponentsHashtable(); - - protected final SQLExecuter EXECUTER; - - private final JLabel dataLabel = new JLabel( "Data da consulta", JLabel.RIGHT ); - private final JCalendarPanel dataPanel = new JCalendarPanel( null ); - private final JButton emailButton = new JButton( "Enviar Email" ); - private final JLabel dataFichaLabel = new JLabel( "Data da Ficha de Aptid\u00e3o", JLabel.RIGHT ); - private final JCalendarPanel dataFichaPanel = new JCalendarPanel( null ); - private RadioButtonFixedPanel tipoList; - private RadioButtonFixedPanel estadoList; - private final JScrollPane observacoesTextScroll = new JScrollPane(); - private final StateTextArea observacoesText = new StateTextArea(); - - public MarcacaoConsultaPanel() - throws Exception - { - DBManager dbm = ( DBManager )Singleton.getInstance( Singleton.DEFAULT_DBMANAGER ); - if( dbm != null ) - { - EXECUTER = ( SQLExecuter )dbm.getSharedExecuter( this ); - } - else - { - EXECUTER = null; - } - setupComponents(); - setupComponentsHashtable(); - place(); - } - - public void setupComponents() - throws Exception - { - dataPanel.setMinimumSize( new Dimension( 300, 20 ) ); - dataPanel.setPreferredSize( new Dimension( 100, 20 ) ); - - emailButton.setMinimumSize( new Dimension( 300, 20 ) ); - emailButton.setPreferredSize( new Dimension( 200, 20 ) ); - - dataFichaPanel.setMinimumSize( new Dimension( 300, 20 ) ); - dataFichaPanel.setPreferredSize( new Dimension( 100, 20 ) ); - - IDObject tipoListOptions[] = new IDObject[]{ - new MappableObject( new Integer( 1 ), "Admiss\u00e3o" ), - new MappableObject( new Integer( 2 ), "Peri\u00f3dico" ), - new MappableObject( new Integer( 5 ), "Peri\u00f3dico inicial" ), - new MappableObject( new Integer( 3 ), "Ocasional" ), - }; - tipoList = new RadioButtonFixedPanel( tipoListOptions, 4, 1, RadioButtonFixedPanel.ORIENTATION_VERTICAL, false, null ); - tipoList.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Tipo" ) ); - - IDObject estadoListOptions[] = new IDObject[]{ - new MappableObject( new Integer( 0 ), "Por realizar" ), - new MappableObject( new Integer( 2 ), "Realizada" ), - new MappableObject( new Integer( 3 ), "Desmarcada pelo trabalhador" ), - new MappableObject( new Integer( 4 ), "Desmarcada pela SIPRP" ), - new MappableObject( new Integer( 5 ), "Faltou" ), - }; - estadoList = new RadioButtonFixedPanel( estadoListOptions, 6, 1, RadioButtonFixedPanel.ORIENTATION_VERTICAL, false, null ); - estadoList.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Estado" ) ); - - observacoesText.setLineWrap( true ); - observacoesText.setWrapStyleWord( true ); - observacoesText.setRows( 5 ); - - } - - public void place() - { - JPanel MarcacaoConsultaPanel = this; - GridBagConstraints MarcacaoConsultaPanelGBC = new GridBagConstraints(); - MarcacaoConsultaPanelGBC.insets = new Insets( 1, 1, 1, 1 ); - GridBagLayout MarcacaoConsultaPanelLayout = new GridBagLayout(); - MarcacaoConsultaPanel.setLayout( MarcacaoConsultaPanelLayout ); - MarcacaoConsultaPanelGBC.gridx = 0; - MarcacaoConsultaPanelGBC.gridy = 0; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.0; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoConsultaPanelLayout.setConstraints( dataLabel, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( dataLabel ); - - MarcacaoConsultaPanelGBC.gridx = 1; - MarcacaoConsultaPanelGBC.gridy = 0; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.5; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoConsultaPanelLayout.setConstraints( dataPanel, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( dataPanel ); - - MarcacaoConsultaPanelGBC.gridx = 2; - MarcacaoConsultaPanelGBC.gridy = 0; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.5; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.NONE; - MarcacaoConsultaPanelLayout.setConstraints( emailButton, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( emailButton ); - - MarcacaoConsultaPanelGBC.gridx = 0; - MarcacaoConsultaPanelGBC.gridy = 1; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.0; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoConsultaPanelLayout.setConstraints( dataFichaLabel, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( dataFichaLabel ); - - MarcacaoConsultaPanelGBC.gridx = 1; - MarcacaoConsultaPanelGBC.gridy = 1; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.5; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoConsultaPanelLayout.setConstraints( dataFichaPanel, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( dataFichaPanel ); - - MarcacaoConsultaPanelGBC.gridx = 0; - MarcacaoConsultaPanelGBC.gridy = 2; - MarcacaoConsultaPanelGBC.gridwidth = 2; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.5; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.BOTH; - MarcacaoConsultaPanelLayout.setConstraints( tipoList, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( tipoList ); - - MarcacaoConsultaPanelGBC.gridx = 2; - MarcacaoConsultaPanelGBC.gridy = 2; - MarcacaoConsultaPanelGBC.gridwidth = 1; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 0.5; - MarcacaoConsultaPanelGBC.weighty = 0.0; - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.BOTH; - MarcacaoConsultaPanelLayout.setConstraints( estadoList, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( estadoList ); - - MarcacaoConsultaPanelGBC.gridx = 0; - MarcacaoConsultaPanelGBC.gridy = 3; - MarcacaoConsultaPanelGBC.gridwidth = 3; - MarcacaoConsultaPanelGBC.gridheight = 1; - MarcacaoConsultaPanelGBC.weightx = 1.0; - MarcacaoConsultaPanelGBC.weighty = 1.0; - observacoesTextScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - observacoesTextScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED ); - observacoesTextScroll.setViewportView( observacoesText ); - MarcacaoConsultaPanelGBC.fill = GridBagConstraints.BOTH; - - JPanel obsPanel = new JPanel( new BorderLayout() ); - obsPanel.setBorder( BorderFactory.createTitledBorder( "Observa\u00e7\u00f5es" ) ); - obsPanel.add( observacoesTextScroll, BorderLayout.CENTER ); - MarcacaoConsultaPanelLayout.setConstraints( obsPanel, MarcacaoConsultaPanelGBC ); - MarcacaoConsultaPanel.add( obsPanel ); - - } - - private void setupComponentsHashtable() - { - components.putComponent( MarcacoesTrabalhadorData.DATA, dataPanel ); - components.putComponent( MarcacoesTrabalhadorData.DATA_RELATORIO, dataFichaPanel ); - components.putComponent( MarcacoesTrabalhadorData.MOTIVO, tipoList ); - components.putComponent( MarcacoesTrabalhadorData.ESTADO, estadoList ); - components.putComponent( MarcacoesTrabalhadorData.OBSERVACOES, observacoesText ); - } - - public void fill( Object toFill ) - { - clear(); - if( toFill == null || !( toFill instanceof PropertyObject ) ) - { - return; - } - Map data = null; - if( toFill instanceof PropertyObject ) - { - data = ( (PropertyObject) toFill ).getHashData(); - if( toFill instanceof MarcacoesTrabalhadorData ) - { - marcacaoTrabalhadoresData = (MarcacoesTrabalhadorData) toFill; - } - } - else if( toFill instanceof Hashtable ) - { - data = (Hashtable) toFill; - } - else - { - return; - } - if( marcacaoTrabalhadoresData == null ) - { - marcacaoTrabalhadoresData = new MarcacoesTrabalhadorData(); - marcacaoTrabalhadoresData.setHashData( data ); - } - PropertyObject po = (PropertyObject) toFill; - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.fill( properties, po.getHashData(), components ); - } - - public Object save() - { - if( marcacaoTrabalhadoresData == null ) - { - marcacaoTrabalhadoresData = new MarcacoesTrabalhadorData(); - } - Map data = marcacaoTrabalhadoresData.getHashData(); - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.save( properties, data, components ); - if( !( marcacaoTrabalhadoresData instanceof PropertyObject ) ) - { - return data; - } - marcacaoTrabalhadoresData.setHashData( data ); - return marcacaoTrabalhadoresData; - } - - public void clear() - { - marcacaoTrabalhadoresData = null; - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.clear( properties, components ); - } - - public void setEnabled( boolean enable ) - { - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.setEnabled( properties, enable, components ); - } - - public Class getDataClass() - { - return MarcacoesTrabalhadorData.class; - } - - public JLabel getDataFichaLabel() - { - return dataFichaLabel; - } - - public JCalendarPanel getDataFichaPanel() - { - return dataFichaPanel; - } - - public JLabel getDataLabel() - { - return dataLabel; - } - - public JCalendarPanel getDataPanel() - { - return dataPanel; - } - - public JButton getEmailButton() - { - return emailButton; - } - - public RadioButtonFixedPanel getEstadoList() - { - return estadoList; - } - - public StateTextArea getObservacoesText() - { - return observacoesText; - } - - public RadioButtonFixedPanel getTipoList() - { - return tipoList; - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoExamePanel.java b/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoExamePanel.java deleted file mode 100644 index 4ca089a1..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MarcacaoExamePanel.java +++ /dev/null @@ -1,281 +0,0 @@ -package siprp.medicina; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.util.Hashtable; -import java.util.Map; - -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import siprp.data.outer.MarcacoesTrabalhadorData; - -import com.evolute.utils.Singleton; -import com.evolute.utils.data.IDObject; -import com.evolute.utils.data.MappableObject; -import com.evolute.utils.data.PropertyObject; -import com.evolute.utils.dataui.ComponentController; -import com.evolute.utils.dataui.ComponentsHashtable; -import com.evolute.utils.dataui.ControllableComponent; -import com.evolute.utils.dataui.DataClassAware; -import com.evolute.utils.dataui.wrappers.JPanelControllable; -import com.evolute.utils.db.DBManager; -import com.evolute.utils.db.SQLExecuter; -import com.evolute.utils.ui.calendar.JCalendarPanel; -import com.evolute.utils.ui.panel.RadioButtonFixedPanel; -import com.evolute.utils.ui.text.StateTextArea; - -public class MarcacaoExamePanel - extends JPanel - implements ControllableComponent, DataClassAware -{ - private MarcacoesTrabalhadorData marcacaoTrabalhadoresData; - private final ComponentsHashtable components = new ComponentsHashtable(); - - protected final SQLExecuter EXECUTER; - - private final JLabel dataLabel = new JLabel( "Data dos Exames", JLabel.RIGHT ); - private final JCalendarPanel dataPanel = new JCalendarPanel( null ); - private final JButton emailButton = new JButton( "Enviar Email" ); - private final JPanelControllable detalhesPanel = new JPanelControllable(); - private RadioButtonFixedPanel estadoList; - private final JScrollPane observacoesTextScroll = new JScrollPane(); - private final StateTextArea observacoesText = new StateTextArea(); - - public MarcacaoExamePanel() - throws Exception - { - DBManager dbm = ( DBManager )Singleton.getInstance( Singleton.DEFAULT_DBMANAGER ); - if( dbm != null ) - { - EXECUTER = ( SQLExecuter )dbm.getSharedExecuter( this ); - } - else - { - EXECUTER = null; - } - setupComponents(); - setupComponentsHashtable(); - place(); - } - - public void setupComponents() - throws Exception - { - JComponent MarcacaoExamePanel = this; - emailButton.setMinimumSize( new Dimension( 300, 20 ) ); - emailButton.setPreferredSize( new Dimension( 200, 20 ) ); - - detalhesPanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Detalhes" ) ); - - IDObject estadoListOptions[] = new IDObject[]{ - new MappableObject( new Integer( 0 ), "Por realizar" ), - new MappableObject( new Integer( 1 ), "Parcialmente realizados" ), - new MappableObject( new Integer( 2 ), "Realizados" ), - new MappableObject( new Integer( 3 ), "Desmarcados pelo trabalhador" ), - new MappableObject( new Integer( 4 ), "Desmarcados pela SIPRP" ), - new MappableObject( new Integer( 5 ), "Faltou" ), - }; - estadoList = new RadioButtonFixedPanel( estadoListOptions, 6, 1, RadioButtonFixedPanel.ORIENTATION_VERTICAL, false, null ); - estadoList.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Estado" ) ); - - observacoesText.setLineWrap( true ); - observacoesText.setWrapStyleWord( true ); - observacoesText.setRows( 5 ); - - } - - public void place() - { - JPanel MarcacaoExamePanel = this; - GridBagConstraints detalhesPanelGBC = new GridBagConstraints(); - detalhesPanelGBC.insets = new Insets( 1, 1, 1, 1 ); - GridBagLayout detalhesPanelLayout = new GridBagLayout(); - detalhesPanel.setLayout( detalhesPanelLayout ); - GridBagConstraints MarcacaoExamePanelGBC = new GridBagConstraints(); - MarcacaoExamePanelGBC.insets = new Insets( 1, 1, 1, 1 ); - GridBagLayout MarcacaoExamePanelLayout = new GridBagLayout(); - MarcacaoExamePanel.setLayout( MarcacaoExamePanelLayout ); - MarcacaoExamePanelGBC.gridx = 0; - MarcacaoExamePanelGBC.gridy = 0; - MarcacaoExamePanelGBC.gridwidth = 1; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 0.0; - MarcacaoExamePanelGBC.weighty = 0.0; - MarcacaoExamePanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoExamePanelLayout.setConstraints( dataLabel, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( dataLabel ); - - MarcacaoExamePanelGBC.gridx = 1; - MarcacaoExamePanelGBC.gridy = 0; - MarcacaoExamePanelGBC.gridwidth = 1; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 0.5; - MarcacaoExamePanelGBC.weighty = 0.0; - MarcacaoExamePanelGBC.fill = GridBagConstraints.HORIZONTAL; - MarcacaoExamePanelLayout.setConstraints( dataPanel, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( dataPanel ); - - MarcacaoExamePanelGBC.gridx = 2; - MarcacaoExamePanelGBC.gridy = 0; - MarcacaoExamePanelGBC.gridwidth = 1; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 0.5; - MarcacaoExamePanelGBC.weighty = 0.0; - MarcacaoExamePanelGBC.fill = GridBagConstraints.NONE; - MarcacaoExamePanelLayout.setConstraints( emailButton, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( emailButton ); - - MarcacaoExamePanelGBC.gridx = 0; - MarcacaoExamePanelGBC.gridy = 1; - MarcacaoExamePanelGBC.gridwidth = 2; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 0.5; - MarcacaoExamePanelGBC.weighty = 0.0; - MarcacaoExamePanelGBC.fill = GridBagConstraints.BOTH; - MarcacaoExamePanelLayout.setConstraints( detalhesPanel, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( detalhesPanel ); - - MarcacaoExamePanelGBC.gridx = 2; - MarcacaoExamePanelGBC.gridy = 1; - MarcacaoExamePanelGBC.gridwidth = 1; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 0.5; - MarcacaoExamePanelGBC.weighty = 0.0; - MarcacaoExamePanelGBC.fill = GridBagConstraints.BOTH; - MarcacaoExamePanelLayout.setConstraints( estadoList, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( estadoList ); - - MarcacaoExamePanelGBC.gridx = 0; - MarcacaoExamePanelGBC.gridy = 2; - MarcacaoExamePanelGBC.gridwidth = 3; - MarcacaoExamePanelGBC.gridheight = 1; - MarcacaoExamePanelGBC.weightx = 1.0; - MarcacaoExamePanelGBC.weighty = 1.0; - observacoesTextScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - observacoesTextScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED ); - observacoesTextScroll.setViewportView( observacoesText ); - MarcacaoExamePanelGBC.fill = GridBagConstraints.BOTH; - JPanel obsPanel = new JPanel( new BorderLayout() ); - obsPanel.add( observacoesTextScroll, BorderLayout.CENTER ); - obsPanel.setBorder( BorderFactory.createTitledBorder( "Observa\u00e7\u00f5es" ) ); - - MarcacaoExamePanelLayout.setConstraints( obsPanel, MarcacaoExamePanelGBC ); - MarcacaoExamePanel.add( obsPanel ); - - } - - private void setupComponentsHashtable() - { - components.putComponent( MarcacoesTrabalhadorData.DATA, dataPanel ); - components.putComponent( MarcacoesTrabalhadorData.ESTADO, estadoList ); - components.putComponent( MarcacoesTrabalhadorData.OBSERVACOES, observacoesText ); - } - - public void fill( Object toFill ) - { - clear(); - if( toFill == null || !( toFill instanceof PropertyObject ) ) - { - return; - } - Map data = null; - if( toFill instanceof PropertyObject ) - { - data = ( (PropertyObject) toFill ).getHashData(); - if( toFill instanceof MarcacoesTrabalhadorData ) - { - marcacaoTrabalhadoresData = (MarcacoesTrabalhadorData) toFill; - } - } - else if( toFill instanceof Hashtable ) - { - data = (Hashtable) toFill; - } - else - { - return; - } - if( marcacaoTrabalhadoresData == null ) - { - marcacaoTrabalhadoresData = new MarcacoesTrabalhadorData(); - marcacaoTrabalhadoresData.setHashData( data ); - } - PropertyObject po = (PropertyObject) toFill; - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.fill( properties, po.getHashData(), components ); - } - - public Object save() - { - if( marcacaoTrabalhadoresData == null ) - { - marcacaoTrabalhadoresData = new MarcacoesTrabalhadorData(); - } - Map data = marcacaoTrabalhadoresData.getHashData(); - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.save( properties, data, components ); - if( !( marcacaoTrabalhadoresData instanceof PropertyObject ) ) - { - return data; - } - marcacaoTrabalhadoresData.setHashData( data ); - return marcacaoTrabalhadoresData; - } - - public void clear() - { - marcacaoTrabalhadoresData = null; - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.clear( properties, components ); - } - - public void setEnabled( boolean enable ) - { - String properties[] = (String[]) components.keySet().toArray( new String[ 0 ] ); - ComponentController.setEnabled( properties, enable, components ); - } - - public Class getDataClass() - { - return MarcacoesTrabalhadorData.class; - } - - public JLabel getDataLabel() - { - return dataLabel; - } - - public JCalendarPanel getDataPanel() - { - return dataPanel; - } - - public JPanelControllable getDetalhesPanel() - { - return detalhesPanel; - } - - public JButton getEmailButton() - { - return emailButton; - } - - public RadioButtonFixedPanel getEstadoList() - { - return estadoList; - } - - public StateTextArea getObservacoesText() - { - return observacoesText; - } - -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MarcacoesMedicinaHandler.java b/trunk/SIPRPSoft/src/siprp/medicina/MarcacoesMedicinaHandler.java deleted file mode 100644 index bdca39fd..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MarcacoesMedicinaHandler.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * MarcacoesMedicinaHandler.java - * - * Created on 28 de Abril de 2006, 9:56 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.medicina; - -import java.util.Date; - -import siprp.data.Marcacao; -import siprp.data.outer.MarcacoesTrabalhadorData; -import siprp.data.outer.TrabalhadoresData; - -import com.evolute.entity.ProviderInterface; -import com.evolute.utils.Singleton; - -/** - * Classe auxiliar para tratamento de marcações de Medicina. - * - * @author Frederico - */ -public class MarcacoesMedicinaHandler -{ - /** Creates a new instance of MarcacoesMedicinaHandler */ - public MarcacoesMedicinaHandler() - { - } - - /** - * Ajusta os estado das marações corrente e seguinte para uma trabalhador. - * Este método é usado pelo sistema de marcaç&atild;o de fichas de aptidaão para ajustar - * as marcações existentes às escolhidas na ficha. - * - * @param trabalhadorID um inteiro que representa o trabalhador em questão - * @param motivoCorrente um inteiro que representa o motivo da marcação corrente (admissão/periódico/ocasional) - * @param dataCorrente a data que se pretende para a marcação corrente - * @param motivoSeguinte um inteiro que representa o motivo da marcação seguinte (admissão/periódico/ocasional) - * @param dataSeguinte a data que se pretende para a marcação seguinte - * @throws Exception se houver um erro na comunicação com a Base de Dados - */ - public void ajustarMarcacoes( Integer trabalhadorID, Integer motivoCorrente, Date dataCorrente, - Integer motivoSeguinte, Date dataSeguinte ) - throws Exception - { - Integer idCorrente; - Integer idSeguinte; - MedicinaDataProvider provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider(); - ProviderInterface JDO = ( ProviderInterface ) Singleton.getInstance( Singleton.DEFAULT_EVO_DATA_PROVIDER ); - TrabalhadoresData trabalhador = (TrabalhadoresData)JDO.load( TrabalhadoresData.class, trabalhadorID ); - - idCorrente = provider.getConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoCorrente, dataCorrente ); - MarcacoesTrabalhadorData consultaCorrente; - if( idCorrente == null ) - { - consultaCorrente = new MarcacoesTrabalhadorData(); - consultaCorrente.setToTrabalhador_id( trabalhador ); - consultaCorrente.set( MarcacoesTrabalhadorData.TIPO, new Integer( MarcacoesTrabalhadorData.TIPO_CONSULTA ) ); - consultaCorrente.set( Marcacao.DATA, dataCorrente ); - consultaCorrente.set( MarcacoesTrabalhadorData.MOTIVO, motivoCorrente ); - } - else - { - consultaCorrente = ( MarcacoesTrabalhadorData ) JDO.load( MarcacoesTrabalhadorData.class, idCorrente ); - } - consultaCorrente.set( Marcacao.REALIZADA, "y" ); - consultaCorrente.set( MarcacoesTrabalhadorData.ESTADO, new Integer( siprp.medicina.MedicinaDataProvider.ESTADO_REALIZADO ) ); - consultaCorrente.save(); - - idSeguinte = provider.getConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoSeguinte, dataSeguinte ); - if( idSeguinte == null ) - { - idSeguinte = provider.getProximaConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoSeguinte, dataCorrente ); - MarcacoesTrabalhadorData consultaSeguinte; - if( idSeguinte == null ) - { - consultaSeguinte = new MarcacoesTrabalhadorData(); - consultaSeguinte.setToTrabalhador_id( trabalhador ); - consultaSeguinte.set( MarcacoesTrabalhadorData.TIPO, new Integer( MarcacoesTrabalhadorData.TIPO_CONSULTA ) ); - consultaSeguinte.set( MarcacoesTrabalhadorData.MOTIVO, motivoSeguinte ); - consultaSeguinte.set( Marcacao.REALIZADA, "y" ); - consultaSeguinte.set( MarcacoesTrabalhadorData.ESTADO, new Integer( siprp.medicina.MedicinaDataProvider.ESTADO_POR_REALIZAR ) ); - } - else - { - consultaSeguinte = ( MarcacoesTrabalhadorData ) JDO.load( MarcacoesTrabalhadorData.class, idSeguinte ); - } - consultaSeguinte.set( Marcacao.DATA, dataSeguinte ); - consultaSeguinte.save(); - } - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaDataProvider.java b/trunk/SIPRPSoft/src/siprp/medicina/MedicinaDataProvider.java deleted file mode 100644 index 755be6a7..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaDataProvider.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * MedicinaDataProvider.java - * - * Created on January 29, 2006, 12:27 AM - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.medicina; - -import java.util.Date; -import java.util.HashMap; -import java.util.Vector; - -import siprp.MedicinaConstants; -import siprp.data.Marcacao; - -import com.evolute.utils.Singleton; -import com.evolute.utils.arrays.Virtual2DArray; -import com.evolute.utils.data.IDObject; -import com.evolute.utils.data.MappableObject; -import com.evolute.utils.db.DBManager; -import com.evolute.utils.db.Executer; -import com.evolute.utils.metadb.MetaProvider; -import com.evolute.utils.sql.Assignment; -import com.evolute.utils.sql.Delete; -import com.evolute.utils.sql.Expression; -import com.evolute.utils.sql.Field; -import com.evolute.utils.sql.Insert; -import com.evolute.utils.sql.Select; -import com.evolute.utils.sql.Select2; -import com.evolute.utils.tables.ColumnizedMappable; -/** - * - * @author fpalma - */ -public class MedicinaDataProvider extends MetaProvider - implements MedicinaConstants -{ - - - public static final String TIPOS_CONSULTAS[] = - new String[]{ "", MOTIVO_ADMISSAO_STR, MOTIVO_PERIODICO_STR, MOTIVO_OCASIONAL_STR, "", MOTIVO_PERIODICO_INICIAL_STR }; - - - public static final HashMap SUB_MOTIVOS_BY_ID = - new HashMap(); - - public static final HashMap SUB_MOTIVOS_IDS_BY_MOTIVO_ID = - new HashMap(); - -// public static final String ESTADOS_EXAME_STR[] = -// new String[]{ "Por realizar", "Parcialmente realizado", "Realizado", -// "Desmarcado trabalhador", -// "Desmarcado " + Singleton.getInstance( SingletonConstants.COMPANY_ACRONYM ), -// "Faltou" }; -// -// public static final String ESTADOS_CONSULTA_STR[] = -// new String[]{ "Por realizar", "Parcialmente realizada", "Realizada", -// "Desmarcada trabalhador", -// "Desmarcada " + Singleton.getInstance( SingletonConstants.COMPANY_ACRONYM ), -// "Faltou" }; - - private static final Object LOCK = new Object(); - private static MedicinaDataProvider instance = null; - - static - { - - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_APOS_DOENCA_INTEGER, SUB_MOTIVO_APOS_DOENCA_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_APOS_ACIDENTE_INTEGER, SUB_MOTIVO_APOS_ACIDENTE_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_PEDIDO_TRABALHADOR_INTEGER, SUB_MOTIVO_PEDIDO_TRABALHADOR_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_PEDIDO_SERVICO_INTEGER, SUB_MOTIVO_PEDIDO_SERVICO_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_MUDANCA_FUNCAO_INTEGER, SUB_MOTIVO_MUDANCA_FUNCAO_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_ALTERACAO_CONDICOES_INTEGER, SUB_MOTIVO_ALTERACAO_CONDICOES_STR ); - SUB_MOTIVOS_BY_ID.put( SUB_MOTIVO_OUTRO_INTEGER, SUB_MOTIVO_OUTRO_STR ); - - SUB_MOTIVOS_IDS_BY_MOTIVO_ID.put( MOTIVO_OCASIONAL_INTEGER, - new Integer[]{ SUB_MOTIVO_APOS_DOENCA_INTEGER, SUB_MOTIVO_APOS_ACIDENTE_INTEGER, - SUB_MOTIVO_PEDIDO_TRABALHADOR_INTEGER, SUB_MOTIVO_PEDIDO_SERVICO_INTEGER, - SUB_MOTIVO_MUDANCA_FUNCAO_INTEGER, SUB_MOTIVO_ALTERACAO_CONDICOES_INTEGER, - SUB_MOTIVO_OUTRO_INTEGER } ); - } - - private final Executer executer; - - public static HashMap getConsultaEstados() - { - HashMap result = new HashMap(); - for( int i = 0; i < MedicinaConstants.ESTADOS_CONSULTA_STR.length; ++i ) - { - if( MedicinaConstants.ESTADOS_CONSULTA_STR[i] != null) - { - result.put( new Integer( i ), MedicinaConstants.ESTADOS_CONSULTA_STR[i] ); - } - } - return result; - } - - /** Creates a new instance of MedicinaDataProvider */ - public MedicinaDataProvider() - throws Exception - { - DBManager dbm = ( DBManager ) Singleton.getInstance( Singleton.DEFAULT_DBMANAGER /*SingletonConstants.DBMANAGER*/ ); - executer = dbm.getSharedExecuter( this ); - } - - public static MetaProvider getProvider() - throws Exception - { - synchronized( LOCK ) - { - if( instance == null ) - { - instance = new MedicinaDataProvider(); - } - } - return instance; - } - - public String []getEmpresaEstabelecimento( Integer empresaID, Integer estabelecimentoID ) - throws Exception - { - String nomes[] = new String[ 2 ]; - Select select = new Select( new String[]{ "empresas" }, - new String[]{ "designacao_social" }, - new Field( "id" ).isEqual( empresaID ) ); - Virtual2DArray array = executer.executeQuery( select ); - nomes[ 0 ] = ( String ) array.get( 0, 0 ); - - select = new Select( new String[]{ "estabelecimentos" }, - new String[]{ "nome" }, - new Field( "id" ).isEqual( estabelecimentoID ) ); - array = executer.executeQuery( select ); - nomes[ 1 ] = ( String ) array.get( 0, 0 ); - - return nomes; - } - - public IDObject[] getDetalhesValidosTrabalhador( Integer empresaID, Integer trabalhadorID ) - throws Exception - { - Select select = - new Select( new String[]{ "trabalhadores" }, - new String[]{ "perfil" }, - new Field( "id" ).isEqual( trabalhadorID ) ); - Virtual2DArray array = executer.executeQuery( select ); - Integer perfil = ( Integer ) array.get( 0, 0 ); - if( perfil == null ) - { - return new IDObject[ 0 ]; - } - select = - new Select( new String[]{ "prt_elementos_protocolo", "prt_tipos_elementos_protocolo", - "prt_grupos_protocolo" }, - new String[]{ "prt_grupos_protocolo.id" , "prt_grupos_protocolo.descricao", - "prt_grupos_protocolo.ordem"}, - new Field( "prt_elementos_protocolo.empresa_id" ).isEqual( empresaID ).and( - new Field( "prt_elementos_protocolo.tipo_elemento_protocolo_id" ).isEqual( - new Field( "prt_tipos_elementos_protocolo.id" ) ) ).and( - new Field( "prt_tipos_elementos_protocolo.grupo_protocolo_id" ).isEqual( - new Field( "prt_grupos_protocolo.id" ) ) ).and( - new Field( "prt_elementos_protocolo.numero_perfil" ).isEqual( perfil ) ), - new String[]{ "prt_grupos_protocolo.ordem" }, - null ); - array = executer.executeQuery( select ); - Vector detalhes = new Vector(); - Integer oldID = null; - for( int n = 0; n < array.columnLength(); n++ ) - { - Integer id = ( Integer ) array.get( n, 0 ); - if( id.equals( oldID ) ) - { - continue; - } - oldID = id; - String descricao = ( String ) array.get( n, 1 ); - detalhes.add( new MappableObject( id, descricao ) ); - } - return ( IDObject[] ) detalhes.toArray( new IDObject[ detalhes.size() ] ); - } - - public void setDetalhesRealziadosForMarcacao( Integer marcacaoID, Integer detalhes[] ) - throws Exception - { - Delete delete = - new Delete( "marcacoes_grupos_realizados", - new Field( "marcacao_trabalhador_id" ).isEqual( marcacaoID ) ); - executer.executeQuery( delete ); - Insert insert = - new Insert( "marcacoes_grupos_realizados", - new Assignment[]{ - new Assignment( new Field( "marcacao_trabalhador_id" ), marcacaoID ), - new Assignment( new Field( "grupo_protocolo_id" ), detalhes ) } ); - executer.executeQuery( insert, null ); - } - - public Integer[] getDetalhesRealizadosForMarcacao( Integer marcacaoID ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_grupos_realizados" }, - new String[]{ "grupo_protocolo_id" }, - new Field( "marcacao_trabalhador_id" ).isEqual( marcacaoID ) ); - Virtual2DArray array = executer.executeQuery( select ); - Integer ids[] = new Integer[ array.columnLength() ]; - for( int n = 0; n < array.columnLength(); n++ ) - { - ids[ n ] = ( Integer ) array.get( n, 0 ); - } - return ids; - } - - public Integer[] getDetalhesRealizadosForEstadosMarcacao( Integer marcacaoID ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_grupos_realizados", "marcacoes_trabalhador_estados" }, - new String[]{ "grupo_protocolo_id" }, - new Field( "marcacoes_trabalhador_estados.marcacao_id" ).isEqual( marcacaoID ).and( - new Field( "marcacoes_trabalhador_estados.id" ).isEqual( - new Field( "marcacoes_grupos_realizados.marcacoes_trabalhador_estado_id" ) ) ) ); - Virtual2DArray array = executer.executeQuery( select ); - Integer ids[] = new Integer[ array.columnLength() ]; - for( int n = 0; n < array.columnLength(); n++ ) - { - ids[ n ] = ( Integer ) array.get( n, 0 ); - } - return ids; - } - - public void deleteDetalhesRealizadosForMarcacao( Integer marcacaoID ) - throws Exception - { - Delete delete = - new Delete( "marcacoes_grupos_realizados", - new Field( "marcacao_trabalhador_id" ).isEqual( marcacaoID ) ); - executer.executeQuery( delete ); - } - - public Object[][] getExamesTrabalhador( Integer trabalhadorID ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "id", "data", "estado" }, - new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES ) ) ), - new String[]{ "data desc" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - Object data[][] = array.getObjects(); - for( int n = 0; n < data.length; n++ ) - { - int estado = ( ( Integer ) data[ n ][ 2 ] ).intValue(); - data[ n ][ 2 ] = ESTADOS_EXAME_STR[ estado ]; - } - return data; - } - - public Object[][] getConsultasTrabalhador( Integer trabalhadorID ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "id", "data", "estado" }, - new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) ) ), - new String[]{ "data desc" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - Object data[][] = array.getObjects(); - for( int n = 0; n < data.length; n++ ) - { - int estado = ( ( Integer ) data[ n ][ 2 ] ).intValue(); - data[ n ][ 2 ] = ESTADOS_CONSULTA_STR[ estado ]; - } - - return data; - } - - public ColumnizedMappable[] getAllEmpresas() - throws Exception - { - Select select = - new Select( new String[]{ "empresas" }, - new String[]{ "id", "designacao_social", "designacao_social_plain" }, - new Field( "inactivo" ).isDifferent( "y" ), - new String[]{ "designacao_social_plain" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - ColumnizedMappable empresas[] = new ColumnizedMappable[ array.columnLength() ]; - for( int n = 0; n < empresas.length; n++ ) - { - Integer id = ( Integer ) array.get( n, 0 ); - String designacao = ( String ) array.get( n, 1 ); - empresas[ n ] = new ColumnizedMappable( id, designacao ); - } - return empresas; - } - - public ColumnizedMappable[] getAllEstabelecimentosForEmpresa( Integer empresaID ) - throws Exception - { - Select select = - new Select( new String[]{ "estabelecimentos" }, - new String[]{ "id", "nome", "nome_plain" }, - new Field( "empresa_id" ).isEqual( empresaID ).and( - new Field( "inactivo" ).isDifferent( "y" ) ), - new String[]{ "nome_plain" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - ColumnizedMappable estabelecimentos[] = new ColumnizedMappable[ array.columnLength() ]; - for( int n = 0; n < estabelecimentos.length; n++ ) - { - Integer id = ( Integer ) array.get( n, 0 ); - String nome = ( String ) array.get( n, 1 ); - estabelecimentos[ n ] = new ColumnizedMappable( id, nome ); - } - return estabelecimentos; - } - - public ColumnizedMappable[] getAllTrabalhadoresForEstabelecimento( Integer estabelecimentoID ) - throws Exception - { - Select select = - new Select( new String[]{ "trabalhadores" }, - new String[]{ "id", "nome", "nome_plain" }, - new Field( "estabelecimento_id" ).isEqual( estabelecimentoID ).and( - new Field( "inactivo" ).isDifferent( "y" ) ), - new String[]{ "nome_plain" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - ColumnizedMappable trabalhadores[] = new ColumnizedMappable[ array.columnLength() ]; - for( int n = 0; n < trabalhadores.length; n++ ) - { - Integer id = ( Integer ) array.get( n, 0 ); - String nome = ( String ) array.get( n, 1 ); - trabalhadores[ n ] = new ColumnizedMappable( id, nome ); - } - return trabalhadores; - } - - /** - * Devolve o identificador da consulta de um trabalhador para um dado motivo e dia. - * - * @param trabalhadorID o identificador do trabalhador - * @param motivo o identificador do motivo da marcacao - * @param data a data da marcacao - * @return o identificador da consulta ou null se não houver nenhuma - * @throws Exception se houver um erro na ligaço à Base de Dados - */ - public Integer getConsultaIDByTrabalhadorMotivoAndDate( Integer trabalhadorID, Integer motivo, Date data ) - throws Exception - { - Integer motivos[]; - if( motivo != null && ( motivo.intValue() == MOTIVO_PERIODICO || motivo.intValue() == MOTIVO_PERIODICO_INICIAL ) ) - { - motivos = new Integer[]{ MOTIVO_PERIODICO_INTEGER, MOTIVO_PERIODICO_INICIAL_INTEGER }; - } - else - { - motivos = new Integer[]{ motivo }; - } - Select select = - new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "id" }, - new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) ) ).and( - new Field( "data" ).isEqual( data ) ).and( - new Field( "motivo" ).in( motivos ) ) ); - Virtual2DArray array = executer.executeQuery( select ); - Integer id; - if( array.columnLength() == 0 || array.get( 0, 0 ) == null ) - { - id = null; - } - else - { - id = ( Integer ) array.get( 0, 0 ); - } - return id; - } - - /** - * Devolve o identificador da primeira consulta de um trabalhador n&ão realizada depois de um diapara um dado motivo. - * - * @param trabalhadorID o identificador do trabalhador - * @param motivo o identificador do motivo da marcacao - * @param data a data de início de procura - * @return o identificador da consulta ou null se não houver nenhuma - * @throws Exception se houver um erro na ligaço à Base de Dados - */ - public Integer getProximaConsultaIDByTrabalhadorMotivoAndDate( Integer trabalhadorID, Integer motivo, Date data ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "id", "data" }, - new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) ) ).and( - new Field( "data" ).isGreater( data ) ).and( - new Field( "motivo" ).isEqual( motivo ) ).and( - new Field( "estado" ).isEqual( new Integer( 0 ) ) ), - new String[]{ "data" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - Integer id; - if( array.columnLength() == 0 || array.get( 0, 0 ) == null ) - { - id = null; - } - else - { - id = ( Integer ) array.get( 0, 0 ); - } - return id; - } - - public Object[][] getListaConsultasByData( Date data ) - throws Exception - { - Select2 select = - new Select2( new String[]{ "marcacoes_trabalhador", "trabalhadores", "estabelecimentos", "empresas" }, - new Integer[]{ Select2.JOIN_INNER, Select2.JOIN_INNER, Select2.JOIN_INNER }, - new Expression[]{ - new Field( "marcacoes_trabalhador.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ), - new Field( "trabalhadores.estabelecimento_id" ).isEqual( new Field( "estabelecimentos.id" ) ), - new Field( "estabelecimentos.empresa_id" ).isEqual( new Field( "empresas.id" ) ) }, - new String[]{ "marcacoes_trabalhador.id", "trabalhadores.nome", "trabalhadores.nome_plain", - "empresas.designacao_social", "marcacoes_trabalhador.tipo", "prestador_id" }, - new Field( "marcacoes_trabalhador.data" ).isEqual( data ).and( - new Field( "marcacoes_trabalhador.estado" ).isEqual( - new Integer( Marcacao.ESTADO_POR_REALIZAR ) ) ).and( - new Field( "marcacoes_trabalhador.tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) ) ), - null, - null, - null, - null ); - Virtual2DArray array = executer.executeQuery( select ); - return array.getObjects(); - } - - public Object[][] getListaECDsByData( Date data ) - throws Exception - { - Select2 select = - new Select2( new String[]{ "marcacoes_trabalhador", "trabalhadores", "estabelecimentos", "empresas" }, - new Integer[]{ Select2.JOIN_INNER, Select2.JOIN_INNER, Select2.JOIN_INNER }, - new Expression[]{ - new Field( "marcacoes_trabalhador.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ), - new Field( "trabalhadores.estabelecimento_id" ).isEqual( new Field( "estabelecimentos.id" ) ), - new Field( "estabelecimentos.empresa_id" ).isEqual( new Field( "empresas.id" ) ) }, - new String[]{ "marcacoes_trabalhador.id", "trabalhadores.nome", "trabalhadores.nome_plain", - "empresas.designacao_social", "marcacoes_trabalhador.tipo", "prestador_id" }, - new Field( "marcacoes_trabalhador.data" ).isEqual( data ).and( - new Field( "marcacoes_trabalhador.estado" ).isEqual( - new Integer( Marcacao.ESTADO_POR_REALIZAR ) ) ).and( - new Field( "marcacoes_trabalhador.tipo" ).isEqual( new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES ) ) ), - null, - null, - null, - null ); - Virtual2DArray array = executer.executeQuery( select ); - return array.getObjects(); - } - - public Integer getTrabalhadorIDByMarcacaoID( Integer marcacaoID ) - throws Exception - { - Select select = - new Select( new String[]{ "marcacoes_trabalhador" }, - new String[]{ "trabalhador_id" }, - new Field( "id" ).isEqual( marcacaoID ) ); - Virtual2DArray array = executer.executeQuery( select ); - return ( Integer ) array.get( 0, 0 ); - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaUpperPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/MedicinaUpperPanel.java deleted file mode 100644 index 855c8fc0..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaUpperPanel.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * MedicinaUpperPanel.java - * - * Created on February 1, 2006, 6:48 PM - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.medicina; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.util.Arrays; -import java.util.Vector; - -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import com.evolute.utils.dataui.ControllableComponent; -import com.evolute.utils.tables.BaseTable; -import com.evolute.utils.tables.ColumnizedMappable; -import com.evolute.utils.tables.VectorTableModel; -import com.evolute.utils.ui.DialogException; - -/** - * - * @author fpalma - */ -public class MedicinaUpperPanel extends JPanel - implements ListSelectionListener, ControllableComponent -{ - protected BaseTable empresasTable; - protected VectorTableModel empresasModel; - protected BaseTable estabelecimentosTable; - protected VectorTableModel estabelecimentosModel; - protected BaseTable trabalhadoresTable; - protected VectorTableModel trabalhadoresModel; - - protected MedicinaDataProvider provider; - - protected final Vector listeners; - - protected boolean editing = false; - - /** Creates a new instance of MedicinaUpperPanel */ - public MedicinaUpperPanel() - throws Exception - { - provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider(); - listeners = new Vector(); - setupComponents(); - } - - private void setupComponents() - throws Exception - { - empresasModel = new VectorTableModel( new String[]{ "empresas" } ); - empresasTable = new BaseTable( empresasModel ); - empresasTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - empresasTable.setNonResizableNorReordable(); - JScrollPane empresasScroll = - new JScrollPane( empresasTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - empresasTable.getSelectionModel().addListSelectionListener( this ); - estabelecimentosModel = new VectorTableModel( new String[]{ "estabelecimentos" } ); - estabelecimentosTable = new BaseTable( estabelecimentosModel ); - estabelecimentosTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - estabelecimentosTable.setNonResizableNorReordable(); - JScrollPane estabelecimentosScroll = - new JScrollPane( estabelecimentosTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - estabelecimentosTable.getSelectionModel().addListSelectionListener( this ); - trabalhadoresModel = new VectorTableModel( new String[]{ "trabalhadores" } ); - trabalhadoresTable = new BaseTable( trabalhadoresModel ); - trabalhadoresTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - trabalhadoresTable.setNonResizableNorReordable(); - JScrollPane trabalhadoresScroll = - new JScrollPane( trabalhadoresTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - trabalhadoresTable.getSelectionModel().addListSelectionListener( this ); - - GridBagLayout gridbag = new GridBagLayout(); - setLayout( gridbag ); - GridBagConstraints constraints = new GridBagConstraints(); - constraints.insets = new Insets( 1, 1, 1, 1 ); - constraints.fill = GridBagConstraints.BOTH; - constraints.gridwidth = 1; - constraints.gridheight = 1; - constraints.weightx = 0.3; - constraints.weighty = 1; - - gridbag.setConstraints( empresasScroll, constraints ); - - gridbag.setConstraints( estabelecimentosScroll, constraints ); - - constraints.weightx = 0.4; - constraints.gridheight = GridBagConstraints.REMAINDER; - gridbag.setConstraints( trabalhadoresScroll, constraints ); - - add( empresasScroll ); - add( estabelecimentosScroll ); - add( trabalhadoresScroll ); - - ColumnizedMappable empresas[] = provider.getAllEmpresas(); - Vector values = empresasModel.getValues(); - values.addAll( Arrays.asList( empresas ) ); - empresasModel.setValues( values ); - } - - public void valueChanged( ListSelectionEvent e ) - { - Object source = e.getSource(); - if( e.getValueIsAdjusting() ) - { - return; - } - if( source.equals( empresasTable.getSelectionModel() ) ) - { - carregarEstabelecimentos(); - } - else if( source.equals( estabelecimentosTable.getSelectionModel() ) ) - { - carregarTrabalhadores(); - } - else if( source.equals( trabalhadoresTable.getSelectionModel() ) ) - { - notifyListeners( e ); - } - } - - protected void carregarEstabelecimentos() - { - estabelecimentosTable.clearSelection(); - int selected = empresasTable.getSelectedRow(); - estabelecimentosModel.clearAll(); - if( selected > -1 ) - { - try - { - Integer empresaID = ( ( ColumnizedMappable ) empresasModel.getRowAt( selected ) ).getID(); - ColumnizedMappable estabelecimentos[] = provider.getAllEstabelecimentosForEmpresa( empresaID); - Vector values = estabelecimentosModel.getValues(); - values.addAll( Arrays.asList( estabelecimentos ) ); - estabelecimentosModel.setValues( values ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar os estabelecimentos.", true ); - estabelecimentosModel.clearAll(); - } - } - } - - protected void carregarTrabalhadores() - { - trabalhadoresTable.clearSelection(); - int selected = estabelecimentosTable.getSelectedRow(); - trabalhadoresModel.clearAll(); - if( selected > -1 ) - { - try - { - Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selected ) ).getID(); - ColumnizedMappable trabalhadores[] = provider.getAllTrabalhadoresForEstabelecimento( estabelecimentoID ); - Vector values = trabalhadoresModel.getValues(); - values.addAll( Arrays.asList( trabalhadores ) ); - trabalhadoresModel.setValues( values ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar trabalhadores.", true ); - trabalhadoresModel.clearAll(); - } - } - } - - protected void notifyListeners( ListSelectionEvent e ) - { - for( int n = 0; n < listeners.size(); n++ ) - { - ListSelectionEvent event = - new ListSelectionEvent( this, e.getFirstIndex(), e.getLastIndex(), e.getValueIsAdjusting() ); - ( ( ListSelectionListener ) listeners.elementAt( n ) ).valueChanged( event ); - } - } - - public void addListSelectionListener( ListSelectionListener listener ) - { - listeners.add( listener ); - } - - public void removeSelectionListener( ListSelectionListener listener ) - { - listeners.remove( listener ); - } - - public void clear() - { -// empresasTable.clearSelection(); - } - - public void fill( Object value ) - { - if( value == null ) - { - clear(); - } - Integer ids[] = ( Integer [] ) value; - for( int n = 0; n < empresasTable.getRowCount(); n++ ) - { - if( ( ( ColumnizedMappable ) empresasModel.getRowAt( n ) ).getID().equals( ids[ 0 ] ) ) - { - empresasTable.setRowSelectionInterval( n, n ); - break; - } - } - - for( int n = 0; n < estabelecimentosTable.getRowCount(); n++ ) - { - if( ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( n ) ).getID().equals( ids[ 1 ] ) ) - { - estabelecimentosTable.setRowSelectionInterval( n, n ); - break; - } - } - - for( int n = 0; n < trabalhadoresTable.getRowCount(); n++ ) - { - if( ( ( ColumnizedMappable ) trabalhadoresModel.getRowAt( n ) ).getID().equals( ids[ 2 ] ) ) - { - trabalhadoresTable.setRowSelectionInterval( n, n ); - break; - } - } - } - - public Object save() - { - int empresaSelected = empresasTable.getSelectedRow(); - int estabelecimentoSelected = estabelecimentosTable.getSelectedRow(); - int trabalhadorSelected = trabalhadoresTable.getSelectedRow(); - return new Integer[]{ - empresaSelected == -1 ? null : ( ( ColumnizedMappable ) empresasModel.getRowAt( empresaSelected ) ).getID(), - estabelecimentoSelected == -1 ? null : ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( estabelecimentoSelected ) ).getID(), - trabalhadorSelected == -1 ? null : ( ( ColumnizedMappable ) trabalhadoresModel.getRowAt( trabalhadorSelected ) ).getID() - }; - } - - public void setEnabled( boolean enable ) - { - editing = !enable; - empresasTable.setEnabled( enable ); - estabelecimentosTable.setEnabled( enable ); - trabalhadoresTable.setEnabled( enable ); - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaWindow.java b/trunk/SIPRPSoft/src/siprp/medicina/MedicinaWindow.java deleted file mode 100644 index e47005ea..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/MedicinaWindow.java +++ /dev/null @@ -1,706 +0,0 @@ -/* - * MedicinaWindow.java - * - * Created on 17 de Janeiro de 2006, 19:43 - * - * To change this template, choose Tools | Options and locate the template under - * the Source Creation and Management node. Right-click the template and choose - * Open. You can then make changes to the template in the Source Editor. - */ - -package siprp.medicina; - -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.GridLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.text.DateFormat; -import java.util.Date; -import java.util.Locale; - -import javax.swing.BorderFactory; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import shst.SHSTTrackerInterface; -import shst.medicina.MedicinaWindowInterface; -import siprp.FichaDataProvider; -import siprp.SingletonConstants; -import siprp.clientes.AvisosPanel; -import siprp.companydataloaders.CompanyDataLoader; -import siprp.data.AvisoConstants; -import siprp.data.Marcacao; -import siprp.data.outer.ContactosData; -import siprp.data.outer.EstabelecimentosData; -import siprp.data.outer.MarcacoesTrabalhadorData; -import siprp.data.outer.TrabalhadoresData; -import siprp.ui.SIPRPTabbedWindow; - -import com.evolute.entity.ProviderInterface; -import com.evolute.utils.Singleton; -import com.evolute.utils.arrays.Object2DArray; -import com.evolute.utils.data.IDObject; -import com.evolute.utils.ui.DialogException; -import com.evolute.utils.ui.panel.CheckBoxPanel; -import com.evolute.utils.ui.panel.TableEditorPanel; -import com.evolute.utils.ui.text.CopyPasteHandler; -/** - * - * @author fpalma - */ -public class MedicinaWindow extends SIPRPTabbedWindow - implements ActionListener, ListSelectionListener, MedicinaWindowInterface -{ - private static int iPermissionArray[][] = - new int[][]{ {}, - { NEW_INDEX, EDIT_INDEX, SAVE_INDEX, DELETE_INDEX, CANCEL_INDEX }, - { NEW_INDEX, EDIT_INDEX, SAVE_INDEX, DELETE_INDEX, CANCEL_INDEX } }; - - private static final int TAB_CONSULTA = 0; - private static final int TAB_EXAME = 1; - - private static final int INDEX_MAIN = 0; - private static final int INDEX_CONSULTA = 1; - private static final int INDEX_EXAME = 2; - - private static final String tabNames[] = - new String[]{ "Consultas", "Exames" }; - - private static final DateFormat DATE_FORMAT = - DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "PT", "pt" ) ); - - protected MedicinaDataProvider provider; - protected FichaDataProvider fichaProvider; - protected ProviderInterface JDO; - protected SHSTTrackerInterface tracker; - - protected MedicinaUpperPanel upperPanel; - protected MarcacaoConsultaPanel marcacaoConsultaPanel; - protected TableEditorPanel marcacaoConsultaEditorPanel; - protected MarcacaoExamePanel marcacaoExamePanel; - protected TableEditorPanel marcacaoExameEditorPanel; - protected CheckBoxPanel detalhesExamePanel; - - protected Integer empresaID; - protected String empresa; - protected Integer estabelecimentoID; - protected String estabelecimento; - protected Integer trabalhadorID; - protected TrabalhadoresData trabalhador; - protected boolean estado[] = new boolean[]{ false, false }; - - /** Creates a new instance of MedicinaWindow */ - public MedicinaWindow() - throws Exception - { - super( new MedicinaUpperPanel(), tabNames, 0.7, createPermissions( iPermissionArray ) ); - upperPanel = ( MedicinaUpperPanel ) getUpperPanel(); - provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider(); - fichaProvider = ( FichaDataProvider ) FichaDataProvider.getProvider(); - JDO = ( ProviderInterface ) Singleton.getInstance( Singleton.DEFAULT_EVO_DATA_PROVIDER ); - setupComponents(); - maximizeOnNextActivate(); - } - - private void setupComponents() - throws Exception - { - setTitle( "Medicina" ); - setupConsultaComponents(); - setupExameComponents(); - upperPanel.addListSelectionListener( this ); - } - - private void setupConsultaComponents() - { - JPanel panel = getTab( TAB_CONSULTA ); - - panel.setBorder( - BorderFactory.createTitledBorder( - BorderFactory.createEtchedBorder(), "Consultas" ) ); - - changeGroupName( INDEX_CONSULTA, "Consultas" ); - setActionName( INDEX_CONSULTA, NEW_INDEX, "Nova" ); - setActionTooltip( INDEX_CONSULTA, NEW_INDEX, "Nova" ); - JPanel toolbar = getToolbarPanel( INDEX_CONSULTA ); - - GridBagLayout gridbag = new GridBagLayout(); - GridBagConstraints constraints = new GridBagConstraints(); - panel.setLayout( gridbag ); - constraints.insets = new Insets( 2, 2, 2, 2 ); - constraints.fill = GridBagConstraints.BOTH; - constraints.gridwidth = GridBagConstraints.REMAINDER; - constraints.weightx = 1.0; - - gridbag.setConstraints( toolbar, constraints ); - panel.add( toolbar ); - - constraints.gridheight = 1; - constraints.weighty = 1.0; - try - { - marcacaoConsultaEditorPanel = - new TableEditorPanel( new String[]{ "Data", - "Estado" }, - new int[]{0,2}, new int[]{0,0}, - 0.0, 1.0, new Dimension( 350, 100 ) ); - marcacaoConsultaPanel = new MarcacaoConsultaPanel(); - new CopyPasteHandler( marcacaoConsultaPanel.getObservacoesText() ); - marcacaoConsultaEditorPanel.addComponent( marcacaoConsultaPanel, - new int[]{0,2}, new int[]{1,2}, - 1.0, 1.0 ); - marcacaoConsultaEditorPanel.addListSelectionListener( new ListSelectionListener(){ - public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent) - { - if( marcacaoConsultaEditorPanel.getID() != null ) - { - reload(INDEX_CONSULTA); - select(INDEX_CONSULTA); - } - else - { - clear( INDEX_CONSULTA ); - } - } - }); - }catch( Exception ex ) - { - DialogException.showException( ex ); - return; - } - gridbag.setConstraints( marcacaoConsultaEditorPanel, constraints ); - panel.add( marcacaoConsultaEditorPanel ); - marcacaoConsultaPanel.getEmailButton().addActionListener( this ); - } - - private void setupExameComponents() - { - JPanel panel = getTab( TAB_EXAME ); - - panel.setBorder( - BorderFactory.createTitledBorder( - BorderFactory.createEtchedBorder(), "Exames" ) ); - - changeGroupName( INDEX_EXAME, "Exames" ); - JPanel toolbar = getToolbarPanel( INDEX_EXAME ); - - GridBagLayout gridbag = new GridBagLayout(); - GridBagConstraints constraints = new GridBagConstraints(); - panel.setLayout( gridbag ); - constraints.insets = new Insets( 2, 2, 2, 2 ); - constraints.fill = GridBagConstraints.BOTH; - constraints.gridwidth = GridBagConstraints.REMAINDER; - constraints.weightx = 1.0; - - gridbag.setConstraints( toolbar, constraints ); - panel.add( toolbar ); - - constraints.gridheight = 1; - constraints.weighty = 1.0; - try - { - marcacaoExameEditorPanel = - new TableEditorPanel( new String[]{ "Data", - "Estado" }, - new int[]{0,2}, new int[]{0,0}, - 0.0, 1.0, new Dimension( 350, 100 ) ); - marcacaoExamePanel = new MarcacaoExamePanel(); - new CopyPasteHandler( marcacaoExamePanel.getObservacoesText() ); - marcacaoExameEditorPanel.addComponent( marcacaoExamePanel, - new int[]{0,2}, new int[]{1,2}, - 1.0, 1.0 ); - marcacaoExameEditorPanel.addListSelectionListener( new ListSelectionListener(){ - public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent) - { - if( marcacaoExameEditorPanel.getID() != null ) - { - reload(INDEX_EXAME); - select(INDEX_EXAME); - } - else - { - clear( INDEX_EXAME ); - } - } - }); - }catch( Exception ex ) - { - DialogException.showException( ex ); - return; - } - gridbag.setConstraints( marcacaoExameEditorPanel, constraints ); - panel.add( marcacaoExameEditorPanel ); - marcacaoExamePanel.getEmailButton().addActionListener( this ); - } - - public boolean save(int index) - { - Date data; - switch( index ) - { - case INDEX_EXAME: - MarcacoesTrabalhadorData exame = ( MarcacoesTrabalhadorData ) marcacaoExamePanel.save(); - data = ( Date ) exame.get( MarcacoesTrabalhadorData.DATA ); - if( data == null ) - { - JOptionPane.showMessageDialog( this, "Tem de preencher uma data para os exames.", - "Erro", JOptionPane.ERROR_MESSAGE ); - return false; - } - exame.set( MarcacoesTrabalhadorData.TIPO, - new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES ) ); - exame.setToTrabalhador_id( trabalhador ); - try - { - exame.set( MarcacoesTrabalhadorData.REALIZADA, - ( ( Integer )exame.get( MarcacoesTrabalhadorData.ESTADO ) ).intValue() == - provider.ESTADO_REALIZADO ? "y" : "n" ); - exame.save(); - Integer exameID = ( Integer ) exame.get( MarcacoesTrabalhadorData.ID ); - Integer detalhesRealizados[] = detalhesExamePanel.getSelected(); - provider.setDetalhesRealziadosForMarcacao( exameID, detalhesRealizados ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a gravar", true ); - return false; - } - - break; - - case INDEX_CONSULTA: - MarcacoesTrabalhadorData consulta = ( MarcacoesTrabalhadorData ) marcacaoConsultaPanel.save(); - data = ( Date ) consulta.get( MarcacoesTrabalhadorData.DATA ); - if( data == null ) - { - JOptionPane.showMessageDialog( this, "Tem de preencher uma data para a consulta.", - "Erro", JOptionPane.ERROR_MESSAGE ); - return false; - } - consulta.set( MarcacoesTrabalhadorData.TIPO, - new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) ); - consulta.setToTrabalhador_id( trabalhador ); - try - { - consulta.set( MarcacoesTrabalhadorData.REALIZADA, - ( ( Integer )consulta.get( MarcacoesTrabalhadorData.ESTADO ) ).intValue() == - provider.ESTADO_REALIZADO ? "y" : "n" ); - consulta.save(); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a gravar", true ); - return false; - } - break; - } - reload( INDEX_MAIN ); - return true; - } - - public boolean delete(int index) - { - int option = JOptionPane.showConfirmDialog( this, "Tem a certeza que quer apagar a marca\u00e7\u00e3o?", - "Apagar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); - if( option == JOptionPane.OK_OPTION ) - { - switch( index ) - { - case INDEX_CONSULTA: - MarcacoesTrabalhadorData consulta = ( MarcacoesTrabalhadorData ) marcacaoConsultaPanel.save(); - try - { - consulta.delete(); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a apagar.", true ); - return false; - } - break; - - case INDEX_EXAME: - MarcacoesTrabalhadorData exame = ( MarcacoesTrabalhadorData ) marcacaoExamePanel.save(); - try - { - exame.delete(); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a apagar.", true ); - return false; - } - break; - } - reload( INDEX_MAIN ); - return true; - } - return false; - } - - public void clear(int index) - { - switch( index ) - { - case INDEX_MAIN: - empresaID = null; - empresa = null; - estabelecimentoID = null; - estabelecimento = null; - trabalhadorID = null; - trabalhador = null; - upperPanel.clear(); - marcacaoExameEditorPanel.clear(); - marcacaoConsultaEditorPanel.clear(); -// marcacaoExamePanel.getDetalhesPanel().removeAll(); - detalhesExamePanel = null; - break; - - case INDEX_CONSULTA: - marcacaoConsultaPanel.clear(); - marcacaoConsultaPanel.getEmailButton().setText( "Enviar email" ); - break; - - case INDEX_EXAME: - marcacaoExamePanel.clear(); - marcacaoExamePanel.getEmailButton().setText( "Enviar email" ); - if( detalhesExamePanel != null ) - { - detalhesExamePanel.clear(); - } - break; - } - } - - public void enableComponents(int index, boolean enable) - { - switch( index ) - { - case INDEX_MAIN: - - break; - - case INDEX_EXAME: - marcacaoExamePanel.setEnabled( enable ); - marcacaoExamePanel.getEmailButton().setEnabled( enable ); - if( detalhesExamePanel != null ) - { - detalhesExamePanel.setEnabled( enable ); - } - upperPanel.setEnabled( !enable ); - estado[ 0 ] = enable; - break; - - case INDEX_CONSULTA: - marcacaoConsultaPanel.setEnabled( enable ); - marcacaoConsultaPanel.getEmailButton().setEnabled( enable ); - upperPanel.setEnabled( !enable ); - estado[ 1 ] = enable; - break; - } - if( tracker != null ) - { - (( AvisosPanel )tracker.getAvisosPanel()).setEnabled( (!estado[ 0 ]) && (!estado[1]), - AvisoConstants.TIPO_TRABALHADOR ); - } - } - -// public boolean searchByName() -// { -// fichaProvider.setSearch( FichaDataProvider.SEARCH_EMPRESAS ); -// SearchDialog search; -// -// search = new SearchDialog( fichaProvider, null, false, null, true ); -// empresaID = ( Integer )search.getSelected(); -// -// if( empresaID == null ) -// { -// return false; -// } -// -// fichaProvider.setSearch( FichaDataProvider.SEARCH_ESTABELECIMENTOS ); -// fichaProvider.setSearchID( FichaDataProvider.SEARCH_EMPRESAS, empresaID.intValue() ); -// -// search = new SearchDialog( fichaProvider, null, false, null, true ); -// estabelecimentoID = ( Integer )search.getSelected(); -// -// if( estabelecimentoID == null ) -// { -// return false; -// } -// -// fichaProvider.setSearch( FichaDataProvider.SEARCH_TRABALHADORES ); -// fichaProvider.setSearchID( FichaDataProvider.SEARCH_ESTABELECIMENTOS, estabelecimentoID.intValue() ); -// search = new SearchDialog( fichaProvider, null, false, null, true ); -// trabalhadorID = ( Integer )search.getSelected(); -// -// if( trabalhadorID == null ) -// { -// return false; -// } -// reload(0); -// return true; -// } - - protected void enableSelect( int index, boolean select ) - { - switch( index ) - { - case INDEX_EXAME: - marcacaoExameEditorPanel.setEnabled( select ); - break; - - case INDEX_CONSULTA: - marcacaoConsultaEditorPanel.setEnabled( select ); - break; - } - } - - public void reload( int index ) - { - switch( index ) - { - case INDEX_MAIN: - try - { - String nomes[] = - provider.getEmpresaEstabelecimento( empresaID, estabelecimentoID ); - empresa = nomes[ 0 ]; - estabelecimento = nomes[ 1 ]; - trabalhador = ( TrabalhadoresData ) JDO.load( TrabalhadoresData.class, trabalhadorID ); -// upperPanel.getEmpresaText().setText( empresa ); -// upperPanel.getEstabelecimentoText().setText( estabelecimento ); -// upperPanel.getTrabalhadorText().setText( ( String ) trabalhador.get( TrabalhadoresData.NOME ) ); - IDObject detalhesExame[] = provider.getDetalhesValidosTrabalhador( empresaID, trabalhadorID ); - detalhesExamePanel = new CheckBoxPanel( detalhesExame ); - JPanel detalhesExameOuterPanel = marcacaoExamePanel.getDetalhesPanel(); - detalhesExameOuterPanel.setLayout( new GridLayout( 1, 1 ) ); - detalhesExameOuterPanel.removeAll(); - detalhesExameOuterPanel.add( detalhesExamePanel ); - detalhesExameOuterPanel.validate(); - Object examesTrabalhador[][] = provider.getExamesTrabalhador( trabalhadorID ); - Object consultasTrabalhador[][] = provider.getConsultasTrabalhador( trabalhadorID ); - if( examesTrabalhador.length > 0 ) - { - marcacaoExameEditorPanel.setData( new Object2DArray( examesTrabalhador ) ); - } - else - { - marcacaoExameEditorPanel.clear(); - } - if( consultasTrabalhador.length > 0 ) - { - marcacaoConsultaEditorPanel.setData( new Object2DArray( consultasTrabalhador ) ); - } - else - { - marcacaoConsultaEditorPanel.clear(); - } - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar os dados.", true ); - } - break; - - case INDEX_EXAME: - Integer exameID = marcacaoExameEditorPanel.getID(); - if( exameID == null ) - { - return; - } - try - { - MarcacoesTrabalhadorData exame = - ( MarcacoesTrabalhadorData ) JDO.load( MarcacoesTrabalhadorData.class, exameID ); - marcacaoExamePanel.fill( exame ); - Date dataEmailExame = ( Date ) exame.get( MarcacoesTrabalhadorData.DATA_EMAIL ); - if( dataEmailExame != null ) - { - marcacaoExamePanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( dataEmailExame ) + ")" ); - } - else - { - marcacaoExamePanel.getEmailButton().setText( "Enviar email" ); - } - Integer detalhesRealizados[] = provider.getDetalhesRealizadosForMarcacao( exameID ); - detalhesExamePanel.setSelected( detalhesRealizados ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar os dados do exame.", true ); - } - break; - - case INDEX_CONSULTA: - Integer consultaID = marcacaoConsultaEditorPanel.getID(); - if( consultaID == null ) - { - return; - } - try - { - MarcacoesTrabalhadorData consulta = - ( MarcacoesTrabalhadorData ) JDO.load( MarcacoesTrabalhadorData.class, consultaID ); - marcacaoConsultaPanel.fill( consulta ); - Date dataEmailConsulta = ( Date ) consulta.get( MarcacoesTrabalhadorData.DATA_EMAIL ); - if( dataEmailConsulta != null ) - { - marcacaoConsultaPanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( dataEmailConsulta ) + ")" ); - } - else - { - marcacaoConsultaPanel.getEmailButton().setText( "Enviar email" ); - } - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar os dados da consulta.", true ); - } - break; - } - } - - public void actionPerformed( ActionEvent e ) - { - Object source = e.getSource(); - if( source.equals( marcacaoExamePanel.getEmailButton() ) ) - { - enviarEmailExame(); - } - else if( source.equals( marcacaoConsultaPanel.getEmailButton() ) ) - { - enviarEmailConsulta(); - } - } - - protected void enviarEmailConsulta() - { - MarcacoesTrabalhadorData consulta = ( MarcacoesTrabalhadorData ) marcacaoConsultaPanel.save(); - - String subject = ( String ) Singleton.getInstance( SingletonConstants.SUBJECT_CONSULTA ); - String texto = ( String ) Singleton.getInstance( SingletonConstants.LETTER_CONSULTA ); - - Date today = new Date(); - marcacaoConsultaPanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( today ) + ")" ); - - try - { - enviarEmail( subject, texto, ( Date )consulta.get( MarcacoesTrabalhadorData.DATA ) ); - consulta.set( Marcacao.DATA_EMAIL, today ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a enviar mail", true ); - } - } - - protected void enviarEmailExame() - { - MarcacoesTrabalhadorData exame = ( MarcacoesTrabalhadorData ) marcacaoExamePanel.save(); - - String subject = ( String ) Singleton.getInstance( SingletonConstants.SUBJECT_EXAMES ); - String texto = ( String ) Singleton.getInstance( SingletonConstants.LETTER_EXAMES ); - - Date today = new Date(); - marcacaoExamePanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( today ) + ")" ); - - try - { - enviarEmail( subject, texto, ( Date )exame.get( MarcacoesTrabalhadorData.DATA ) ); - exame.set( Marcacao.DATA_EMAIL, today ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a enviar mail", true ); - } - } - - protected void enviarEmail( String subject, String texto, Date data ) - throws Exception - { - String nome = ( String ) trabalhador.get( TrabalhadoresData.NOME ); - String dataStr = DATE_FORMAT.format( data ); - - subject = subject.replaceAll( CompanyDataLoader.NOME, nome ); - texto = texto.replaceAll( CompanyDataLoader.DATA, dataStr ); - texto = texto.replaceAll( CompanyDataLoader.NOME, nome ); - - EstabelecimentosData estabelecimento = - ( EstabelecimentosData ) JDO.load( EstabelecimentosData.class, estabelecimentoID ); - ContactosData contacto = ( ContactosData ) estabelecimento.toContacto_id(); - String mail = ""; - if( contacto != null ) - { - mail = ( String )contacto.getEmail(); - } - - if( System.getProperty( "os.name" ).startsWith( "Windows" ) ) - { - mail = mail.replaceAll( " ", "%20" ); - subject = subject.replaceAll( " ", "%20" ); - texto = texto.replaceAll( " ", "%20" ); - Process proc = Runtime.getRuntime().exec( "cmd.exe /c start mailto:\"" + mail - + "?subject=" + subject + "&body=" - - + texto - ); - } - else - { - mail = mail.replaceAll( " ", "%20" ); - subject = subject.replaceAll( " ", "%20" ); - texto = texto.replaceAll( " ", "%20" ); - - Process proc = Runtime.getRuntime().exec( new String[]{ "/usr/bin/open", "/Applications/Mail.app", "mailto:" + mail - + "?subject=" + subject + "&body=" - + texto } ); - } - } - - public void valueChanged( ListSelectionEvent e ) - { - Object source = e.getSource(); - if( source.equals( upperPanel ) ) - { - Integer ids[] = ( Integer [] ) upperPanel.save(); - empresaID = ids[ 0 ]; - estabelecimentoID = ids[ 1 ]; - trabalhadorID = ids[ 2 ]; - if( ids[ 2 ] == null ) - { - clear( INDEX_MAIN ); - unselect( INDEX_MAIN ); - } - else - { - reload( INDEX_MAIN ); - select( INDEX_MAIN ); - } - } - } - - public void setEmpresaAndEstabelecimentoAndTrabalhador( Integer empresaID, Integer estabelecimentoID, Integer trabalhadorID ) - { - if( upperPanel.editing ) - { - JOptionPane.showMessageDialog( this, "Esta janela est\u00e1 em edi\u00e7\u00e3o.", "Erro...", - JOptionPane.ERROR_MESSAGE ); - } - else - { - upperPanel.fill( new Integer[]{ empresaID, estabelecimentoID, trabalhadorID } ); - } - } - - public void setTracker( SHSTTrackerInterface tracker ) - { - this.tracker = tracker; - - } -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/Test.java b/trunk/SIPRPSoft/src/siprp/medicina/Test.java deleted file mode 100644 index 97bf48a2..00000000 --- a/trunk/SIPRPSoft/src/siprp/medicina/Test.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Test.java - * - * Created on 17 de Janeiro de 2006, 18:37 - * - * To change this template, choose Tools | Options and locate the template under - * the Source Creation and Management node. Right-click the template and choose - * Open. You can then make changes to the template in the Source Editor. - */ - -package siprp.medicina; - -import siprp.ui.SIPRPTabbedWindow; -/** - * - * @author fpalma - */ -public class Test -{ - - public static void main( String args[] ) - throws Exception - { - SIPRPTabbedWindow frm = new MedicinaWindow(); -// frm.getContentPane().setLayout( new GridLayout() ); -// frm.getContentPane().add( new MedicinaUpperPanel() ); -// frm.setSize( new Dimension( 600, 600 ) ); - frm.setVisible( true ); - frm.setExtendedState(frm.getExtendedState() | frm.MAXIMIZED_BOTH); - } - - /** Creates a new instance of Test */ - public Test() - { - } - -} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/presencas/PresencasDataProvider.java b/trunk/SIPRPSoft/src/siprp/medicina/presencas/PresencasDataProvider.java index 07b033a5..6fe464e3 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/presencas/PresencasDataProvider.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/presencas/PresencasDataProvider.java @@ -11,10 +11,10 @@ package siprp.medicina.presencas; import java.util.Date; +import shst.medicina.MedicinaDataProvider; import siprp.MedicinaConstants; import siprp.lembretes.LembretesConstants; import siprp.lembretes.LembretesDataProvider; -import siprp.medicina.MedicinaDataProvider; import com.evolute.utils.Singleton; import com.evolute.utils.db.DBManager; @@ -151,7 +151,7 @@ public class PresencasDataProvider throws Exception { apagarDetalhesRealizacao( id ); - medicinaProvider.setDetalhesRealziadosForMarcacao( id, grupos ); + medicinaProvider.setDetalhesRealizadosForMarcacao( id, grupos ); Update update = new Update( "marcacoes_trabalhador", new Assignment[]{ @@ -167,7 +167,7 @@ public class PresencasDataProvider throws Exception { apagarDetalhesRealizacao( id ); - medicinaProvider.setDetalhesRealziadosForMarcacao( id, grupos ); + medicinaProvider.setDetalhesRealizadosForMarcacao( id, grupos ); Update update = new Update( "marcacoes_trabalhador", new Assignment[]{ diff --git a/trunk/SIPRPSoft/src/siprp/medicina/presencas/RegistarPresencasWindow.java b/trunk/SIPRPSoft/src/siprp/medicina/presencas/RegistarPresencasWindow.java index 48ae7311..00230e5a 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/presencas/RegistarPresencasWindow.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/presencas/RegistarPresencasWindow.java @@ -40,10 +40,9 @@ import org.jdom.Document; import org.jdom.Element; import org.jdom.output.XMLOutputter; +import shst.medicina.MedicinaDataProvider; import shst.medicina.prestadores.PrestadoresDataProvider; import siprp.clientes.ClientesDataProvider; -import siprp.medicina.MedicinaDataProvider; - import siprp.ui.SIPRPFrame; import siprp.util.fop.FOPCreator; import siprp.util.fop.FOPPrinter; diff --git a/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouAction.java b/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouAction.java index 971cec4e..b0c33d87 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouAction.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouAction.java @@ -15,8 +15,8 @@ import java.util.Vector; import javax.swing.AbstractAction; +import shst.medicina.MedicinaDataProvider; import siprp.clientes.ClientesDataProvider; -import siprp.medicina.MedicinaDataProvider; import siprp.medicina.presencas.DetalhesRealizacaoDialog; import siprp.medicina.presencas.Presenca; import siprp.medicina.presencas.PresencasDataProvider; diff --git a/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouParcialmenteAction.java b/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouParcialmenteAction.java index 3c669f3c..f852356a 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouParcialmenteAction.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/presencas/actions/RealizouParcialmenteAction.java @@ -15,9 +15,9 @@ import java.util.Vector; import javax.swing.AbstractAction; +import shst.medicina.MedicinaDataProvider; import siprp.clientes.ClientesDataProvider; import siprp.data.Marcacao; -import siprp.medicina.MedicinaDataProvider; import siprp.medicina.presencas.DetalhesRealizacaoDialog; import siprp.medicina.presencas.Presenca; import siprp.medicina.presencas.PresencasDataProvider;