From c963142534bc259138df48d07d5cd9c28fa9efd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Sim=C3=A3o?= Date: Fri, 29 Feb 2008 11:57:03 +0000 Subject: [PATCH] Implementacao da janela de recepcao de resultados de exames Correccoes 'a janela de gestao de processos de trabalhadores git-svn-id: https://svn.coded.pt/svn/SIPRP@683 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/.classpath | 1 + trunk/SIPRPSoft/src/leaf/LeafInputField.java | 22 +- trunk/SIPRPSoft/src/leaf/LeafTableModel.java | 8 +- trunk/SIPRPSoft/src/leaf/LeafWindow.java | 79 ++++++- trunk/SIPRPSoft/src/leaf/OrderedMap.java | 21 ++ trunk/SIPRPSoft/src/siprp/SIPRPTracker.java | 11 + ...rabalhadoresConsultasDatasObservacoes.java | 2 +- .../cayenne/objects/TrabalhadoresEcd.java | 20 +- .../TrabalhadoresEcdsDatasObservacoes.java | 2 +- .../objects/TrabalhadoresFichasAptidao.java | 8 +- .../database/cayenne/providers/MainDAO.java | 7 + .../cayenne/providers/MedicinaDAO.java | 40 +++- .../exames/logic/RecepcaoExamesLogic.java | 55 +++++ .../exames/ui/RecepcaoExamesWindow.java | 201 ++++++++++++++++++ .../processo/logic/MedicinaProcessoLogic.java | 95 ++++++--- .../medicina/processo/mail/MailDialog.java | 27 ++- .../processo/ui/ProcessoAccoesPanel.java | 36 +++- .../processo/ui/ProcessoDadosPanel.java | 163 ++++++++++++-- .../processo/ui/ProcessoTreePanel.java | 13 ++ 19 files changed, 731 insertions(+), 80 deletions(-) create mode 100644 trunk/SIPRPSoft/src/siprp/medicina/exames/logic/RecepcaoExamesLogic.java create mode 100644 trunk/SIPRPSoft/src/siprp/medicina/exames/ui/RecepcaoExamesWindow.java diff --git a/trunk/.classpath b/trunk/.classpath index 1c3ff85a..40053403 100644 --- a/trunk/.classpath +++ b/trunk/.classpath @@ -28,5 +28,6 @@ + diff --git a/trunk/SIPRPSoft/src/leaf/LeafInputField.java b/trunk/SIPRPSoft/src/leaf/LeafInputField.java index 6d2d936b..6b82cc0b 100644 --- a/trunk/SIPRPSoft/src/leaf/LeafInputField.java +++ b/trunk/SIPRPSoft/src/leaf/LeafInputField.java @@ -121,13 +121,19 @@ public class LeafInputField extends JPanel implements F { if( object instanceof Map ) { - LeafOptionDialog optionDialog = new LeafOptionDialog( (Map) object, null ); - return optionDialog.getOption(); + if(((Map) object).size() > 0) + { + LeafOptionDialog optionDialog = new LeafOptionDialog( (Map) object, null ); + return optionDialog.getOption(); + } } else if( object instanceof OrderedMap ) { - LeafOptionDialog optionDialog = new LeafOptionDialog( (OrderedMap) object, null, null, null, null ); - return optionDialog.getOption(); + if(((OrderedMap) object).rows() > 0) + { + LeafOptionDialog optionDialog = new LeafOptionDialog( (OrderedMap) object, null, null, null, null ); + return optionDialog.getOption(); + } } return null; } @@ -568,8 +574,12 @@ public class LeafInputField extends JPanel implements F if( object instanceof Date ) { old = object; - setObject( (ObjClass) getDateFromUser() ); - firePropertyChange( PROPERTY_CHANGED_CONSTANT, old, object ); + ObjClass newDate = (ObjClass) getDateFromUser(); + if( newDate != null ) + { + setObject( newDate ); + firePropertyChange( PROPERTY_CHANGED_CONSTANT, old, object ); + } } else if( object instanceof Map && collapseOptions ) { diff --git a/trunk/SIPRPSoft/src/leaf/LeafTableModel.java b/trunk/SIPRPSoft/src/leaf/LeafTableModel.java index afe3a6d8..6b13fdad 100644 --- a/trunk/SIPRPSoft/src/leaf/LeafTableModel.java +++ b/trunk/SIPRPSoft/src/leaf/LeafTableModel.java @@ -4,6 +4,8 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import siprp.database.cayenne.objects.TrabalhadoresEcd; + import com.evolute.utils.tables.BaseTableModel; @@ -69,16 +71,16 @@ public class LeafTableModel extends BaseTableModel fireTableDataChanged(); } - public void setValues( OrderedMap map ) + public void setValues( OrderedMap map ) { - this.map = map; + this.map = (OrderedMap) map; fireTableDataChanged(); } @Override public void appendEmptyRow() { - map.putLast( map.rows(), null ); + map.putLast( map.rows(), (Object) null ); } @Override diff --git a/trunk/SIPRPSoft/src/leaf/LeafWindow.java b/trunk/SIPRPSoft/src/leaf/LeafWindow.java index 3ada5e2e..e363db9b 100755 --- a/trunk/SIPRPSoft/src/leaf/LeafWindow.java +++ b/trunk/SIPRPSoft/src/leaf/LeafWindow.java @@ -1,8 +1,12 @@ package leaf; +import static info.clearthought.layout.TableLayoutConstants.FILL; import static leaf.LeafLogic.ACTION_CANCEL; import static leaf.LeafLogic.ACTION_STARTUP; +import info.clearthought.layout.TableLayout; +import info.clearthought.layout.TableLayoutConstraints; + import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -21,8 +25,10 @@ import java.util.List; import java.util.Map; import java.util.Queue; +import javax.swing.BorderFactory; import javax.swing.DefaultListSelectionModel; import javax.swing.JButton; +import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTree; @@ -47,6 +53,10 @@ public class LeafWindow extends JFrame implements TrackableWindow, ListSelection private static final long serialVersionUID = 1L; + private static final int DEFAULT_HEIGHT = 480; + + private static final int DEFAULT_WIDTH = 640; + /** * Registers DataComponent in a list of actions * @@ -145,9 +155,10 @@ public class LeafWindow extends JFrame implements TrackableWindow, ListSelection * @throws IllegalArgumentException * @throws IllegalAccessException */ - public LeafWindow(LeafLogic logicController) throws IllegalArgumentException, IllegalAccessException + public LeafWindow(LeafLogic logicController) { super(); + setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); this.logicController = logicController; if( logicController != null ) { @@ -267,11 +278,45 @@ public class LeafWindow extends JFrame implements TrackableWindow, ListSelection loadFields(); loadMethods(); runAction( ACTION_STARTUP, null ); + setVisible( true ); } catch( Exception e ) { e.printStackTrace( System.out ); } } + + public static void setupTopBottomSimpleActionsPanel(JPanel where, JPanel top, JPanel bottom) + { + TableLayout layout = new TableLayout(new double[]{TableLayout.FILL}, new double[]{TableLayout.MINIMUM, TableLayout.FILL,TableLayout.MINIMUM}); + where.setLayout( layout ); + where.add( top, new TableLayoutConstraints(0,0) ); + where.add( new JPanel(), new TableLayoutConstraints(0,1) ); + where.add( bottom, new TableLayoutConstraints(0,2) ); + } + + public static void setupSimpleDataPanel( JPanel where, String name, JComponent... field ) + { + double[] cols = new double[] { + FILL + }; + double[] rows = new double[field.length]; + for( int i = 0; i < field.length; rows[i++] = TableLayout.PREFERRED ) + ; + rows[rows.length - 1] = FILL; + TableLayout layout = new TableLayout( cols, rows ); + layout.setHGap( 5 ); + layout.setVGap( 5 ); + where.setLayout( layout ); + if( name != null ) + { + where.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), name ) ); + } + + for( int i = 0; i < field.length; ++i ) + { + where.add( field[i], new TableLayoutConstraints( 0, i ) ); + } + } private void loadLeafs() throws IllegalArgumentException, IllegalAccessException { @@ -664,17 +709,41 @@ public class LeafWindow extends JFrame implements TrackableWindow, ListSelection { if( component instanceof BaseTable && ((BaseTable) component).getSelectionModel().equals( source ) ) { - int index = ((BaseTable) component).getSelectedRow(); - if( index > -1 ) + int [] indexes = ((BaseTable) component).getSelectedRows(); + if( indexes != null && indexes.length > 0 ) { TableModel model = ((BaseTable) component).getModel(); if( model instanceof VectorTableModel ) { - return ((ColumnizedMappable) ((VectorTableModel) model).getRowAt( index )).getID(); + if(indexes.length == 1 && indexes[0] > -1) + { + return ((ColumnizedMappable) ((VectorTableModel) model).getRowAt( indexes[0] )).getID(); + } + else + { + List allSelected = new ArrayList(); + for(int i = 0; i < indexes.length; ++i) + { + allSelected.add( ((ColumnizedMappable) ((VectorTableModel) model).getRowAt( indexes[0] )).getID() ); + } + return allSelected; + } } else if( model instanceof LeafTableModel ) { - return ((LeafTableModel) model).getKey( index ); + if(indexes.length == 1 && indexes[0] > -1) + { + return ((LeafTableModel) model).getKey( indexes[0] ); + } + else + { + List allSelected = new ArrayList(); + for(int i = 0; i < indexes.length; ++i) + { + allSelected.add( ((LeafTableModel) model).getKey( indexes[0] )); + } + return allSelected; + } } } } diff --git a/trunk/SIPRPSoft/src/leaf/OrderedMap.java b/trunk/SIPRPSoft/src/leaf/OrderedMap.java index 24aeb47a..6b8dbd61 100644 --- a/trunk/SIPRPSoft/src/leaf/OrderedMap.java +++ b/trunk/SIPRPSoft/src/leaf/OrderedMap.java @@ -132,7 +132,28 @@ public class OrderedMap implements Iterable } return result; } + + /** + * Adds arguments to the end of the row (on given order) + * @param key + * @param values + */ + public void putLast( KeyClass key, Object ... values) + { + if( values != null) + { + for( Object currentValue: values ) + { + putLast( key, currentValue ); + } + } + } + /** + * Adds argument to the end of the row + * @param key + * @param value + */ public void putLast( KeyClass key, Object value ) { List list; diff --git a/trunk/SIPRPSoft/src/siprp/SIPRPTracker.java b/trunk/SIPRPSoft/src/siprp/SIPRPTracker.java index d452249e..1e4deb26 100644 --- a/trunk/SIPRPSoft/src/siprp/SIPRPTracker.java +++ b/trunk/SIPRPSoft/src/siprp/SIPRPTracker.java @@ -19,6 +19,8 @@ import siprp.higiene.marcacoes.MarcacoesHigieneWindow; import siprp.impressaofichas.ImpressaoFichasWindow; import siprp.lembretes.LembretesWindow; import siprp.medicina.MedicinaWindow; +import siprp.medicina.exames.logic.RecepcaoExamesLogic; +import siprp.medicina.exames.ui.RecepcaoExamesWindow; import siprp.medicina.locais_analise.EnviarAnalisesWindow; import siprp.medicina.locais_realizacao.LocaisRealizacaoWindow; import siprp.medicina.presencas.RegistarPresencasWindow; @@ -185,6 +187,15 @@ public class SIPRPTracker extends WindowTracker return new EnviarAnalisesWindow(); } } ); + + medicinaNode.add( new DefaultMutableTreeNode( RecepcaoExamesWindow.TITLE ) ); + creators.put( RecepcaoExamesWindow.TITLE, new WindowCreator() { + public TrackableWindow create() + throws Exception + { + return new RecepcaoExamesWindow(); + } + } ); medicinaNode.add( new DefaultMutableTreeNode( MEDICINA_PRESENCAS ) ); creators.put( MEDICINA_PRESENCAS, new WindowCreator() { diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresConsultasDatasObservacoes.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresConsultasDatasObservacoes.java index c0a02fa7..c2172347 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresConsultasDatasObservacoes.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresConsultasDatasObservacoes.java @@ -32,7 +32,7 @@ public class TrabalhadoresConsultasDatasObservacoes extends _TrabalhadoresConsul @Override public void setObservacao( String nome ) { - super.setObservacao( UnicodeChecker.parseToUnicode( name ) ); + super.setObservacao( nome != null ? UnicodeChecker.parseToUnicode( nome ) : null ); getObservacao(); } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcd.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcd.java index 12d4a66f..de56eb86 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcd.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcd.java @@ -1,10 +1,28 @@ package siprp.database.cayenne.objects; import siprp.database.cayenne.objects.auto._TrabalhadoresEcd; +import siprp.medicina.MedicinaConstants; public class TrabalhadoresEcd extends _TrabalhadoresEcd { private static final long serialVersionUID = 1L; - + + @Override + public String toString() + { + PrtTiposElementosProtocolo exame = getToPrtTiposElementosProtocolo(); + String exameNome = exame == null ? null : exame.getDescricao(); + EcdOficial exameOficial = getToEcdOficial(); + String exameOficialNome = exameOficial == null ? null : exameOficial.getDescricao(); + String result = ""; + if(exameNome == null && exameOficialNome != null) + { + result = exameOficialNome + " [oficial]"; + }else if( exameNome != null ) + { + result = exameNome; + } + return result; + } } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatasObservacoes.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatasObservacoes.java index 012fd654..ffa5efd7 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatasObservacoes.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresEcdsDatasObservacoes.java @@ -33,7 +33,7 @@ public class TrabalhadoresEcdsDatasObservacoes extends _TrabalhadoresEcdsDatasOb @Override public void setObservacao( String nome ) { - super.setObservacao( UnicodeChecker.parseToUnicode( name ) ); + super.setObservacao( nome != null ? UnicodeChecker.parseToUnicode( nome ) : null ); getObservacao(); } diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresFichasAptidao.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresFichasAptidao.java index 10398899..8357aae9 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresFichasAptidao.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/objects/TrabalhadoresFichasAptidao.java @@ -5,7 +5,11 @@ import siprp.database.cayenne.objects.auto._TrabalhadoresFichasAptidao; public class TrabalhadoresFichasAptidao extends _TrabalhadoresFichasAptidao { private static final long serialVersionUID = 1L; + @Override + public String toString() + { + return getToTrabalhadoresProcesso().getDataFimString(); + } + } - - diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MainDAO.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MainDAO.java index 3d5c0c49..01045d54 100755 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MainDAO.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MainDAO.java @@ -1,7 +1,14 @@ package siprp.database.cayenne.providers; +import org.apache.cayenne.CayenneContext; import org.apache.cayenne.access.DataContext; +import org.apache.cayenne.access.QueryLogger; import org.apache.cayenne.conf.Configuration; +import org.apache.cayenne.conf.DefaultConfiguration; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.logging.impl.SimpleLog; + +import common.log.SimpleLogger; public class MainDAO { diff --git a/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MedicinaDAO.java b/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MedicinaDAO.java index ed7790c5..4829016e 100644 --- a/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MedicinaDAO.java +++ b/trunk/SIPRPSoft/src/siprp/database/cayenne/providers/MedicinaDAO.java @@ -1,6 +1,9 @@ package siprp.database.cayenne.providers; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.cayenne.DataObjectUtils; import org.apache.cayenne.PersistenceState; @@ -12,13 +15,16 @@ import siprp.database.cayenne.objects.Empresas; import siprp.database.cayenne.objects.Prestadores; import siprp.database.cayenne.objects.PrtGruposProtocolo; import siprp.database.cayenne.objects.Trabalhadores; +import siprp.database.cayenne.objects.TrabalhadoresEcd; +import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresProcesso; +import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ProcessoConstants; -public class MedicinaDAO extends MainDAO +public class MedicinaDAO extends MainDAO implements MedicinaConstants { // private static final String defaultPrestadorName = "SIPRP"; - private Prestadores defaultPrestador = null; + private Prestadores defaultPrestador = Prestadores.prestadorNulo; public Trabalhadores getTrabalhadorByID( Integer id ) { @@ -79,11 +85,35 @@ public class MedicinaDAO extends MainDAO public Prestadores getDefaultPrestador() { - if(defaultPrestador == null) + return defaultPrestador; + } + + public Collection getPendingExamesForAnalisador( Prestadores currentAnalisador ) + { + Map resultMap = new HashMap(); + SelectQuery query = new SelectQuery( TrabalhadoresEcdsDatas.class, /*ExpressionFactory.noMatchExp( TrabalhadoresEcdsDatas.DATA_ENVIO_PROPERTY, null ).andExp(*/ ExpressionFactory.matchExp(TrabalhadoresEcdsDatas.DATA_RECEPCAO_PROPERTY, null )/*)*/); + List all = context.performQuery( query ); + for( TrabalhadoresEcdsDatas data : all ) { - getAllPrestadores(); + if(new Integer(MedicinaConstants.ESTADO_REALIZADO).equals( data.getEstado())) + { + List ecds = data.getTrabalhadoresEcdArray(); + if( ecds != null ) + { + for(TrabalhadoresEcd ecd : ecds) + { + if(currentAnalisador.equals( ecd.getToAnalisador() )) + { + resultMap.put( ecd ,ecd ); + }else if( Prestadores.prestadorNulo.equals( currentAnalisador ) && ecd.getToAnalisador() == null ) + { + resultMap.put( ecd, ecd ); + } + } + } + } } - return defaultPrestador; + return resultMap.values(); } } diff --git a/trunk/SIPRPSoft/src/siprp/medicina/exames/logic/RecepcaoExamesLogic.java b/trunk/SIPRPSoft/src/siprp/medicina/exames/logic/RecepcaoExamesLogic.java new file mode 100644 index 00000000..c1a3b672 --- /dev/null +++ b/trunk/SIPRPSoft/src/siprp/medicina/exames/logic/RecepcaoExamesLogic.java @@ -0,0 +1,55 @@ +package siprp.medicina.exames.logic; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import leaf.LeafLogic; +import siprp.database.cayenne.objects.Prestadores; +import siprp.database.cayenne.objects.TrabalhadoresEcd; +import siprp.database.cayenne.providers.MedicinaDAO; +import siprp.medicina.processo.data.TrabalhadoresEcdData; + +public class RecepcaoExamesLogic extends LeafLogic +{ + + @Action(isSave=true) + public final static String ACTION_SELECT_ANALISADOR = "ACTION_SELECT_ANALISADOR"; + + @Action(isSave=false) + public final static String ACTION_SELECT_EXAME = "ACTION_SELECT_EXAME"; + + @Action(isSave=false) + public final static String ACTION_FILL_EXAMES = "ACTION_FILL_EXAMES"; + + @Action(isSave=true) + public final static String ACTION_RECEBER_EXAMES = "ACTION_RECEBER_EXAMES"; + + public Prestadores currentAnalisador = null; + + private MedicinaDAO dao = new MedicinaDAO(); + + @LeafLogicActionBinding(actions=ACTION_SELECT_ANALISADOR) + public void getExamesForAnalisador(Prestadores analisador) + { + currentAnalisador = analisador; + if(analisador != null) + { + Collection result = dao.getPendingExamesForAnalisador(currentAnalisador); + runAction( ACTION_FILL_EXAMES, result ); + } + } + + @LeafLogicActionBinding(actions=ACTION_RECEBER_EXAMES) + public void receberExames(List ecds) + { + if(ecds != null) + { + for( TrabalhadoresEcd ecd : ecds ) + { + dao.saveObject( ecd ); + } + } + } + +} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/exames/ui/RecepcaoExamesWindow.java b/trunk/SIPRPSoft/src/siprp/medicina/exames/ui/RecepcaoExamesWindow.java new file mode 100644 index 00000000..a89880b7 --- /dev/null +++ b/trunk/SIPRPSoft/src/siprp/medicina/exames/ui/RecepcaoExamesWindow.java @@ -0,0 +1,201 @@ +package siprp.medicina.exames.ui; + +import static com.evolute.utils.strings.UnicodeLatin1Map.atilde; +import static com.evolute.utils.strings.UnicodeLatin1Map.ccedil; +import info.clearthought.layout.TableLayout; +import info.clearthought.layout.TableLayoutConstraints; + +import java.awt.Dimension; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; + +import leaf.LeafButton; +import leaf.LeafInputField; +import leaf.LeafTableModel; +import leaf.LeafWindow; +import leaf.OrderedMap; +import leaf.LeafLogic.LeafUIActionBinding; +import siprp.database.cayenne.objects.Empresas; +import siprp.database.cayenne.objects.Estabelecimentos; +import siprp.database.cayenne.objects.Prestadores; +import siprp.database.cayenne.objects.Trabalhadores; +import siprp.database.cayenne.objects.TrabalhadoresEcd; +import siprp.database.cayenne.objects.TrabalhadoresEcds; +import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; +import siprp.medicina.exames.logic.RecepcaoExamesLogic; + +import com.evolute.utils.tables.BaseTable; + +public class RecepcaoExamesWindow extends LeafWindow +{ + private static final long serialVersionUID = 1L; + + public static final String TITLE = "Recep" + ccedil + atilde + "o de ECDs"; + + public final JLabel labelAnalisador = new JLabel( "Analisador" ); + + @ActionActivation(onSelect = RecepcaoExamesLogic.ACTION_SELECT_EXAME, onChange = "") + public BaseTable examesTable; + public LeafTableModel examesModel; + public JScrollPane examesScroll; + + @ActionActivation(onSelect = "", onChange = RecepcaoExamesLogic.ACTION_SELECT_ANALISADOR) + public final LeafInputField> fieldAnalisador = new LeafInputField>(); + + public final JLabel labelData = new JLabel( "Data de recep" + ccedil + atilde + "o" ); + public final LeafInputField fieldData = new LeafInputField(); + + @ActionActivation(onSelect=RecepcaoExamesLogic.ACTION_RECEBER_EXAMES, onChange="") + public final LeafButton buttonReceber = new LeafButton( "Receber" ); + + public final JPanel pane = new JPanel(); + + public RecepcaoExamesWindow() + { + super( new RecepcaoExamesLogic() ); + setTitle( TITLE ); + setupLayout(); + setupComponents(); + placeComponents(); + completeSetup(); + } + + private void setupLayout() + { + double[] cols = new double[] { + TableLayout.PREFERRED, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL, TableLayout.MINIMUM, TableLayout.PREFERRED + }; + double[] rows = new double[] { + TableLayout.PREFERRED, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL, TableLayout.PREFERRED + }; + TableLayout layout = new TableLayout( cols, rows ); + layout.setHGap( 5 ); + layout.setVGap( 5 ); + pane.setLayout( layout ); + } + + private void setupComponents() + { + setContentPane( pane ); + examesModel = new LeafTableModel( new String[] { + "Empresa", "Estabelecimento", "Trabalhador", "Exame (tipo)" + } ); + examesTable = new BaseTable( examesModel ); + examesTable.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + examesTable.setNonResizableNorReordable(); + examesScroll = new JScrollPane( examesTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); + } + + private JPanel createMargin(boolean horizontal, int marginSize) + { + JPanel result = new JPanel(); + Dimension dim = new Dimension(horizontal ? 0 : marginSize, horizontal ? marginSize: 0 ); + result.setPreferredSize( dim ); + result.setSize( dim ); + return result; + } + + private void placeComponents() + { + pane.add( createMargin(true, 20), new TableLayoutConstraints(0,0,0,5)); + pane.add( createMargin(true, 20), new TableLayoutConstraints(6,0,6,5)); + pane.add( createMargin(false, 20), new TableLayoutConstraints(0,0,6,0)); + pane.add( createMargin(false, 20), new TableLayoutConstraints(0,5,6,5)); + pane.add( labelAnalisador, new TableLayoutConstraints( 1, 1, 2, 1 ) ); + pane.add( fieldAnalisador, new TableLayoutConstraints( 1, 2, 4, 2 ) ); + pane.add( labelData, new TableLayoutConstraints( 1, 3 ) ); + pane.add( fieldData, new TableLayoutConstraints( 1, 4, 2, 4 ) ); + pane.add( buttonReceber, new TableLayoutConstraints( 4, 4 ) ); + pane.add( examesScroll, new TableLayoutConstraints( 1, 5, 4, 5 ) ); + } + + @LeafUIActionBinding(action = RecepcaoExamesLogic.ACTION_FILL_EXAMES) + public void fillExames(Collection exames) + { + examesTable.clearSelection(); + examesModel.clearAll(); + if(exames != null) + { + OrderedMap orderedMap = new OrderedMap(); + for( TrabalhadoresEcd current : exames ) + { + TrabalhadoresEcdsDatas exameMarcacao = current.getToTrabalhadoresEcdsDatas(); + Empresas empresa = null; + Estabelecimentos estabelecimento = null; + Trabalhadores trabalhador = null; + TrabalhadoresEcds exame = null; + if( exameMarcacao != null ) + { + exame = exameMarcacao.getToTrabalhadoresEcds(); + if( exame != null) + { + trabalhador = exame.getToTrabalhadores(); + if( trabalhador != null ) + { + estabelecimento = trabalhador.getToEstabelecimentos(); + if( estabelecimento != null ) + { + empresa = estabelecimento.getToEmpresas(); + } + } + } + } + orderedMap.putLast( current, empresa, estabelecimento, trabalhador, current); + } + examesModel.setValues( orderedMap ); + } + } + + @LeafUIActionBinding(action = RecepcaoExamesLogic.ACTION_SELECT_ANALISADOR) + public Prestadores selectAnalisador() + { + return (Prestadores)fieldAnalisador.getSelectedObject(); + } + + @LeafUIActionBinding(action = RecepcaoExamesLogic.ACTION_RECEBER_EXAMES) + public List receberExames() + { + List result = new ArrayList(); + int [] selectedRows = examesTable.getSelectedRows(); + if( selectedRows != null ) + { + for( int i = 0; i < selectedRows.length; ++i) + { + Object ecd = examesModel.getKey( i ); + if(ecd != null) + { + if( ecd instanceof TrabalhadoresEcd) + { + ((TrabalhadoresEcd) ecd ).getToTrabalhadoresEcdsDatas().setDataRecepcao( fieldData.getObject() ); + result.add( (TrabalhadoresEcd) ecd ); + } + } + } + } + runActionLater( RecepcaoExamesLogic.ACTION_SELECT_ANALISADOR ); + return result; + } + + @LeafUIActionBinding(action = RecepcaoExamesLogic.ACTION_STARTUP) + public void startup() + { + List prestadores = Prestadores.getAllPrestadores(); + Prestadores prestador = (prestadores == null || prestadores.size() == 0) ? null : prestadores.get( 0 ); + OrderedMap allPrestadores = new OrderedMap( prestadores ); + fieldAnalisador.setObject( allPrestadores, prestador ); + fieldAnalisador.setEditable( true ); + + fieldData.setObject( new Date() ); + fieldData.setEditable( true ); + + runActionLater( RecepcaoExamesLogic.ACTION_SELECT_ANALISADOR ); + } + +} diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java index e1701134..2eb0ebc2 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/logic/MedicinaProcessoLogic.java @@ -1,5 +1,6 @@ package siprp.medicina.processo.logic; +import java.awt.Dialog.ModalExclusionType; import java.util.Date; import java.util.List; @@ -20,8 +21,11 @@ import siprp.database.cayenne.objects.TrabalhadoresEcds; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasEmails; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasObservacoes; +import siprp.database.cayenne.objects.TrabalhadoresFichasAptidao; import siprp.database.cayenne.objects.TrabalhadoresProcesso; import siprp.database.cayenne.providers.MedicinaDAO; +import siprp.ficha.FichaAptidaoCreator; +import siprp.ficha.FichaWindow; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ProcessoConstants; import siprp.medicina.processo.estrutura.FichaAptidaoMutableTreeNode; @@ -76,6 +80,9 @@ public class MedicinaProcessoLogic extends LeafLogic @Action(isSave = false) public static final String CREATE_PROCESSO = "CREATE_PROCESSO"; + @Action(isSave = false) + public static final String CREATE_FICHA = "CREATE_FICHA"; + @Action(isSave = false) public static final String CREATE_CONSULTA = "CREATE_CONSULTA"; @@ -132,7 +139,7 @@ public class MedicinaProcessoLogic extends LeafLogic @Action(isSave = true) public static final String FECHAR_PROCESSO = "FECHAR_PROCESSO"; - + @Action(isSave = false) public static final String APAGAR_PROCESSO = "APAGAR_PROCESSO"; @@ -162,7 +169,7 @@ public class MedicinaProcessoLogic extends LeafLogic @Action(isSave = true) public static final String REALIZAR_EXAME_MARCACAO = "REALIZAR_EXAME_MARCACAO"; - + @Action(isSave = true) public static final String REALIZAR_PARCIAL_EXAME_MARCACAO = "REALIZAR_PARCIAL_EXAME_MARCACAO"; @@ -173,15 +180,17 @@ public class MedicinaProcessoLogic extends LeafLogic public static final String ANULAR_EXAME_MARCACAO = "ANULAR_EXAME_MARCACAO"; private MedicinaDAO provider = null; - + public Empresas currentEmpresa = null; - + public Estabelecimentos currentEstabelecimento = null; - @LeafObject (useWith=LOAD_TRABALHADOR) + @LeafObject(useWith = LOAD_TRABALHADOR) public Trabalhadores currentTrabalhador = null; - @LeafObject(useWith = { SAVE_PROCESSO, APAGAR_PROCESSO }) + @LeafObject(useWith = { + SAVE_PROCESSO, APAGAR_PROCESSO + }) public TrabalhadoresProcesso currentProcesso = null; @LeafObject(useWith = SAVE_CONSULTA) @@ -197,7 +206,7 @@ public class MedicinaProcessoLogic extends LeafLogic public TrabalhadoresConsultasDatasObservacoes currentConsultaMarcacaoObservacao = null; @LeafObject(useWith = SAVE_FICHA) - public FichaAptidaoMutableTreeNode currentFicha = null; + public TrabalhadoresFichasAptidao currentFicha = null; @LeafObject(useWith = SAVE_EXAME_MARCACAO_OBSERVACOES) public TrabalhadoresEcdsDatasObservacoes currentExameMarcacaoObservacao = null; @@ -205,7 +214,9 @@ public class MedicinaProcessoLogic extends LeafLogic @LeafObject(useWith = SAVE_EXAME_MARCACAO_EMAIL) public TrabalhadoresEcdsDatasEmails currentExameMarcacaoEmail = null; - @LeafObject(useWith = { SAVE_EXAME_MARCACAO, REALIZAR_PARCIAL_EXAME_MARCACAO }) + @LeafObject(useWith = { + SAVE_EXAME_MARCACAO, REALIZAR_PARCIAL_EXAME_MARCACAO + }) public TrabalhadoresEcdsDatas currentExameMarcacao = null; @LeafObject(useWith = SAVE_EXAME) @@ -233,7 +244,7 @@ public class MedicinaProcessoLogic extends LeafLogic @LeafLogicActionBinding(actions = { SELECT_EMPRESA }) - public Empresas setEmpresa(Empresas empresa) + public Empresas setEmpresa( Empresas empresa ) { currentEmpresa = empresa; return currentEmpresa; @@ -253,11 +264,11 @@ public class MedicinaProcessoLogic extends LeafLogic }) public Trabalhadores getDadosTrabalhador( Trabalhadores trabalhador ) { -// Trabalhadores result = null; -// if( id != null ) -// { -// result = provider.getTrabalhadorByID( id ); -// } + // Trabalhadores result = null; + // if( id != null ) + // { + // result = provider.getTrabalhadorByID( id ); + // } currentTrabalhador = trabalhador; return currentTrabalhador; } @@ -272,7 +283,7 @@ public class MedicinaProcessoLogic extends LeafLogic runActionLater( SAVE_PROCESSO ); } } - + @LeafLogicActionBinding(actions = APAGAR_PROCESSO) public void apagarProcesso() { @@ -372,7 +383,7 @@ public class MedicinaProcessoLogic extends LeafLogic runActionLater( SAVE_EXAME_MARCACAO ); } } - + @LeafLogicActionBinding(actions = REALIZAR_PARCIAL_EXAME_MARCACAO) public void realizarParcialExame() { @@ -444,12 +455,33 @@ public class MedicinaProcessoLogic extends LeafLogic else if( node instanceof FichaAptidaoMutableTreeNode ) { action = SELECT_FICHA; - currentFicha = (FichaAptidaoMutableTreeNode) node.getUserObject(); + currentFicha = (TrabalhadoresFichasAptidao) node.getUserObject(); } runAction( action, node.getUserObject() ); return node; } + @LeafLogicActionBinding(actions = { + CREATE_FICHA + }) + public void createFicha() + { + try + { + FichaWindow fichaWindow = FichaWindow.getWindow(); + if( fichaWindow != null ) + { + fichaWindow.editTrabalhador( currentTrabalhador.getId(), null ); + } + } catch( Exception e ) + { + e.printStackTrace(); + } +// currentFicha = new TrabalhadoresFichasAptidao(); +// currentFicha.setToTrabalhadoresProcesso( currentProcesso ); +// return currentFicha; + } + @LeafLogicActionBinding(actions = { CREATE_CONSULTA }) @@ -458,7 +490,7 @@ public class MedicinaProcessoLogic extends LeafLogic currentConsulta = new TrabalhadoresConsultas(); currentConsulta.setToTrabalhadores( currentTrabalhador ); currentConsulta.setToTrabalhadoresProcesso( currentProcesso ); - currentConsulta.setToPrestadores( getPrestador(true) ); + currentConsulta.setToPrestadores( getPrestador( true ) ); currentConsulta.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); return currentConsulta; } @@ -470,7 +502,7 @@ public class MedicinaProcessoLogic extends LeafLogic { currentConsultaMarcacao = new TrabalhadoresConsultasDatas(); currentConsultaMarcacao.setToTrabalhadoresConsultas( currentConsulta ); - currentConsultaMarcacao.setToPrestadores( getPrestador(true) ); + currentConsultaMarcacao.setToPrestadores( getPrestador( true ) ); currentConsultaMarcacao.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); runActionLater( SAVE_CONSULTA_MARCACAO ); return currentConsultaMarcacao; @@ -514,10 +546,10 @@ public class MedicinaProcessoLogic extends LeafLogic { currentExameMarcacao = new TrabalhadoresEcdsDatas(); currentExameMarcacao.setToTrabalhadoresEcds( currentExame ); - currentExameMarcacao.setToPrestadores( getPrestador(false) ); + currentExameMarcacao.setToPrestadores( getPrestador( false ) ); currentExameMarcacao.setToAnalisador( getAnalisador() ); currentExameMarcacao.porRealizar(); - + runActionLater( SAVE_EXAME_MARCACAO ); return currentExameMarcacao; } @@ -559,24 +591,29 @@ public class MedicinaProcessoLogic extends LeafLogic provider.saveObject( object ); runActionLater( REFRESH ); } - - @LeafLogicActionBinding(actions=ACTION_CANCEL) + + @LeafLogicActionBinding(actions = ACTION_CANCEL) public void abortAction() { provider.rollback(); runAction( LOAD_TRABALHADOR ); runAction( SELECT_TRABALHADOR ); } - - private Prestadores getPrestador(boolean consulta) + + private Prestadores getPrestador( boolean consulta ) { - if(currentTrabalhador != null && currentTrabalhador.getToEstabelecimentos() != null) + Prestadores result = null; + if( currentTrabalhador != null && currentTrabalhador.getToEstabelecimentos() != null ) { - return consulta ? currentTrabalhador.getToEstabelecimentos().getToPrestadores() : currentTrabalhador.getToEstabelecimentos().getToPrestadores1(); + result = consulta ? currentTrabalhador.getToEstabelecimentos().getToPrestadores() : currentTrabalhador.getToEstabelecimentos().getToPrestadores1(); + if(Prestadores.prestadorNulo.equals( result )) + { + result = null; + } } - return null; + return result; } - + private Prestadores getAnalisador() { return getPrestador( false ); diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/mail/MailDialog.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/mail/MailDialog.java index 6832f55b..732453c4 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/mail/MailDialog.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/mail/MailDialog.java @@ -109,11 +109,35 @@ public class MailDialog extends CustomJDialog System.exit( 0 ); } + public MailDialog( JFrame owner, String to, String bcc, String subject, String message ) + throws Exception + { + super( owner, true ); + this.owner = owner; + commonStartup(); + setTo( to ); + setBcc( bcc ); + setSubject( subject ); + setMessage( message ); + setModal( true ); + setSize( 1024, 768 ); + setVisible( true ); + } + public MailDialog( JFrame owner ) throws Exception { super( owner, true ); this.owner = owner; + commonStartup(); + setModal( true ); + setSize( 1024, 768 ); + setVisible( true ); + } + + private void commonStartup() + throws Exception + { setupComponents(); if( owner != null ) { @@ -123,9 +147,6 @@ public class MailDialog extends CustomJDialog { center(); } - setModal( true ); - setSize( 1024, 768 ); - setVisible( true ); } private void setupComponents() diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoAccoesPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoAccoesPanel.java index 08299b7e..087bb8b0 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoAccoesPanel.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoAccoesPanel.java @@ -44,6 +44,7 @@ import siprp.database.cayenne.objects.TrabalhadoresEcds; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasEmails; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasObservacoes; +import siprp.database.cayenne.objects.TrabalhadoresFichasAptidao; import siprp.database.cayenne.objects.TrabalhadoresProcesso; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ProcessoConstants; @@ -59,17 +60,19 @@ public class ProcessoAccoesPanel extends JPanel private static final String PANEL_TRABALHADOR_NAME = "TRABALHADOR_PANEL"; private static final String PANEL_PROCESSO_NAME = "PROCESSO_PANEL"; + + private static final String PANEL_FICHA_NAME = "PANEL_FICHA_NAME"; private static final String PANEL_CONSULTA_NAME = "PANEL_CONSULTA_NAME"; + private static final String PANEL_CONSULTA_MARCACAO_NAME = "PANEL_CONSULTA_MARCACAO_NAME"; private static final String PANEL_EXAME_NAME = "EXAME_PANEL"; + private static final String PANEL_EXAME_MARCACAO_NAME = "PANEL_EXAME_MARCACAO_NAME"; private final JPanel cardPanel = new JPanel(); - // private final JPanel controlPanel = new JPanel(); - private final CardLayout cardLayout = new CardLayout(); // panels @@ -80,6 +83,8 @@ public class ProcessoAccoesPanel extends JPanel private final JPanel panelConsultaMarcacao = new JPanel(); private final JPanel panelProcesso = new JPanel(); + + private final JPanel panelFicha = new JPanel(); private final JPanel panelTrabalhador = new JPanel(); @@ -92,10 +97,15 @@ public class ProcessoAccoesPanel extends JPanel // processo @ActionActivation(onSelect = FECHAR_PROCESSO, onChange = "") public final LeafButton buttonFecharProcesso = new LeafButton( "Fechar Processo" ); + + @ActionActivation(onSelect = CREATE_FICHA, onChange = "") + public final LeafButton buttonCriarFicha = new LeafButton( "Editar Ficha" ); + @ActionActivation(onSelect = { CREATE_CONSULTA, CREATE_CONSULTA_MARCACAO }, onChange = "") public final LeafButton buttonNovoProcessoConsulta = new LeafButton( "Nova Consulta" ); + @ActionActivation(onSelect = { CREATE_EXAME, CREATE_EXAME_MARCACAO }, onChange = "") @@ -189,6 +199,7 @@ public class ProcessoAccoesPanel extends JPanel setupStartPanel(); setupTrabalhadorPanel(); setupProcessoPanel(); + setupFichaPanel(); setupConsultaPanel(); setupConsultaMarcacaoPanel(); setupExamePanel(); @@ -200,6 +211,7 @@ public class ProcessoAccoesPanel extends JPanel cardPanel.add( panelStart, PANEL_START_NAME ); cardPanel.add( panelTrabalhador, PANEL_TRABALHADOR_NAME ); cardPanel.add( panelProcesso, PANEL_PROCESSO_NAME ); + cardPanel.add( panelFicha, PANEL_FICHA_NAME); cardPanel.add( panelConsulta, PANEL_CONSULTA_NAME ); cardPanel.add( panelConsultaMarcacao, PANEL_CONSULTA_MARCACAO_NAME ); cardPanel.add( panelExame, PANEL_EXAME_NAME ); @@ -257,6 +269,19 @@ public class ProcessoAccoesPanel extends JPanel cardLayout.show( cardPanel, PANEL_TRABALHADOR_NAME ); } } + + @LeafUIActionBinding(action = SELECT_FICHA) + public void setForFicha( TrabalhadoresFichasAptidao ficha) + { + if( ficha != null ) + { + cardLayout.show( cardPanel, PANEL_FICHA_NAME ); + } + else + { + cardLayout.show( cardPanel, PANEL_TRABALHADOR_NAME ); + } + } @LeafUIActionBinding(action = SELECT_CONSULTA) public void setForConsulta( TrabalhadoresConsultas consulta ) @@ -406,9 +431,14 @@ public class ProcessoAccoesPanel extends JPanel JPanel panelTopProcesso = new JPanel(); JPanel panelBottomProcesso = new JPanel(); setupSimpleActionsPanel( panelTopProcesso, buttonNovoProcessoConsulta, buttonNovoProcessoExame ); - setupSimpleActionsPanel( panelBottomProcesso, buttonFecharProcesso, buttonApagarProcesso ); + setupSimpleActionsPanel( panelBottomProcesso, buttonCriarFicha, buttonFecharProcesso, buttonApagarProcesso ); setupTopBottomSimpleActionsPanel( panelProcesso, panelTopProcesso, panelBottomProcesso ); } + + private void setupFichaPanel() + { + setupSimpleActionsPanel( panelFicha, new JPanel() ); + } private void setupConsultaPanel() { diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java index 73f4b4a4..9c88ff89 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoDadosPanel.java @@ -37,6 +37,7 @@ import info.clearthought.layout.TableLayout; import info.clearthought.layout.TableLayoutConstraints; import java.awt.CardLayout; +import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -49,6 +50,8 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import com.evolute.utils.Singleton; + import leaf.LeafCalendarDialog; import leaf.LeafInputField; import leaf.LeafOptionDialog; @@ -58,6 +61,12 @@ import leaf.OrderedMap; import leaf.LeafLogic.LeafUIActionBinding; import leaf.LeafWindow.ActionActivation; +import siprp.CompanyDataLoader; +import siprp.SingletonConstants; +import siprp.data.EstabelecimentoData; +import siprp.data.MarcacaoEstabelecimentoData; +import siprp.database.cayenne.objects.Contactos; +import siprp.database.cayenne.objects.Estabelecimentos; import siprp.database.cayenne.objects.Prestadores; import siprp.database.cayenne.objects.PrtGruposProtocolo; import siprp.database.cayenne.objects.Trabalhadores; @@ -70,6 +79,7 @@ import siprp.database.cayenne.objects.TrabalhadoresEcds; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasEmails; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasObservacoes; +import siprp.database.cayenne.objects.TrabalhadoresFichasAptidao; import siprp.database.cayenne.objects.TrabalhadoresProcesso; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.mail.MailDialog; @@ -85,6 +95,8 @@ public class ProcessoDadosPanel extends JPanel private static final String PANEL_PROCESSO_NAME = "PROCESSO_PANEL"; + private static final String PANEL_FICHA_NAME = "PANEL_FICHA_NAME"; + private static final String PANEL_CONSULTA_NAME = "PANEL_CONSULTA_NAME"; private static final String PANEL_CONSULTA_MARCACAO_NAME = "PANEL_CONSULTA_MARCACAO_NAME"; private static final String PANEL_CONSULTA_MARCACAO_EMAIL_NAME = "PANEL_CONSULTA_MARCACAO_EMAIL_NAME"; @@ -112,6 +124,8 @@ public class ProcessoDadosPanel extends JPanel private final JPanel panelTrabalhador = new JPanel(); + private final JPanel panelFicha = new JPanel(); + private final JPanel panelStart = new JPanel(); // trabalhador @@ -231,6 +245,7 @@ public class ProcessoDadosPanel extends JPanel setupStartPanel(); setupTrabalhadorPanel(); setupProcessoPanel(); + setupFichaPanel(); setupConsultaPanel(); setupConsultaMarcacaoPanel(); setupConsultaMarcacaoEmailPanel(); @@ -245,6 +260,7 @@ public class ProcessoDadosPanel extends JPanel { add( panelStart, PANEL_START_NAME ); add( panelTrabalhador, PANEL_TRABALHADOR_NAME ); + add( panelFicha, PANEL_FICHA_NAME ); add( panelProcesso, PANEL_PROCESSO_NAME ); add( panelConsulta, PANEL_CONSULTA_NAME ); add( panelConsultaMarcacao, PANEL_CONSULTA_MARCACAO_NAME ); @@ -255,11 +271,11 @@ public class ProcessoDadosPanel extends JPanel add( panelExameMarcacaoEmail, PANEL_EXAME_MARCACAO_EMAIL_NAME ); add( panelExameMarcacaoObservacao, PANEL_EXAME_MARCACAO_OBSERVACAO_NAME ); } - + private int getIdade( Date nascimento ) { int result = 0; - if(nascimento != null) + if( nascimento != null ) { Calendar now = Calendar.getInstance(); Calendar birth = Calendar.getInstance(); @@ -292,9 +308,9 @@ public class ProcessoDadosPanel extends JPanel inputTrabalhadorNacionalidade.setObject( trabalhador.getNacionalidade() ); inputTrabalhadorBI.setObject( trabalhador.getBi() ); inputTrabalhadorObservacoes.setObject( trabalhador.getObservacoesGestao() ); - inputTrabalhadorDataAdmissao.setObject(trabalhador.getDataAdmissao()); + inputTrabalhadorDataAdmissao.setObject( trabalhador.getDataAdmissao() ); labelTrabalhadorDataNascimento.setText( "Data de Nascimento (" + getIdade( trabalhador.getDataNascimento() ) + " anos)" ); - + cardLayout.show( this, PANEL_TRABALHADOR_NAME ); } else @@ -322,6 +338,19 @@ public class ProcessoDadosPanel extends JPanel } } + @LeafUIActionBinding(action = SELECT_FICHA) + public void setForFicha( TrabalhadoresFichasAptidao ficha ) + { + if( ficha != null ) + { + cardLayout.show( this, PANEL_FICHA_NAME ); + } + else + { + cardLayout.show( this, PANEL_TRABALHADOR_NAME ); + } + } + @LeafUIActionBinding(action = SELECT_CONSULTA) public void setForConsulta( TrabalhadoresConsultas consulta ) { @@ -534,17 +563,90 @@ public class ProcessoDadosPanel extends JPanel @LeafUIActionBinding(action = CREATE_CONSULTA_MARCACAO_EMAIL) public void setForNewConsultaMarcacaoEmail( TrabalhadoresConsultasDatasEmails email ) { - try - { - MailDialog mailDialog = new MailDialog( getParentFrame() ); - email.setSubject( mailDialog.getSubject() ); - email.setBody( mailDialog.getMessage() ); - } catch( Exception e ) + if(email != null) { - e.printStackTrace( System.out ); + TrabalhadoresConsultasDatas consultaMarcacao = email.getToTrabalhadoresConsultasDatas(); + if( consultaMarcacao != null ) + { + TrabalhadoresConsultas consulta = consultaMarcacao.getToTrabalhadoresConsultas(); + if( consulta != null ) + { + String[] subjectAndBody = sendMail(consulta.getToTrabalhadores(), consultaMarcacao.getData(), SingletonConstants.LETTER_CONSULTA ); + if( subjectAndBody != null ) + { + email.setSubject( subjectAndBody[0] ); + email.setBody( subjectAndBody[1] ); + } + else + { + parentWindow.abortAction( true ); + } + } + } } } + private String[] sendMail(Trabalhadores trabalhador, Date dataConsulta, String letter ) + { + String [] result = null; + if( trabalhador != null ) + { + Estabelecimentos estabelecimento = trabalhador.getToEstabelecimentos(); + if( estabelecimento != null ) + { + String to = ""; + String bcc = ""; + String subject = ""; + String body = ""; + + + String sedeNome = estabelecimento.getNome(); + subject = ( String ) Singleton.getInstance( SingletonConstants.SUBJECT_VISITA ); + if( subject == null) + { + subject = ""; + } + subject = subject.replaceAll( CompanyDataLoader.NOME, sedeNome ); + + String morada = estabelecimento.getMorada(); + String data = DateFormat.getDateInstance( DateFormat.SHORT ).format( dataConsulta ); + body = ( String ) Singleton.getInstance( letter ); + if( body == null) + { + body = ""; + } + body = body.replaceAll( CompanyDataLoader.DATA, data ); + body = body.replaceAll( CompanyDataLoader.NOME, sedeNome ); + body = body.replaceAll( CompanyDataLoader.MORADA, morada ); + body = body.replaceAll( "%0A", "
" ); + + Contactos estabelecimentoContacto = estabelecimento.getToContactos(); + if( estabelecimentoContacto != null ) + { + String estabelecimentoEmail = estabelecimentoContacto.getEmail(); + if( estabelecimentoEmail != null ) + { + to = estabelecimentoEmail; + try + { + MailDialog mailDialog = new MailDialog( getParentFrame(), to, bcc, subject, body ); + result = new String[2]; + result[0] = mailDialog.getSubject(); + result[1] = mailDialog.getMessage(); + } catch( Exception e ) + { + e.printStackTrace( System.out ); + e.printStackTrace(); + result = null; + } + } + } + } + } + return result; + } + + @LeafUIActionBinding(action = CREATE_CONSULTA_MARCACAO_OBSERVACOES) public void setForNewConsultaMarcacaoObservacoes( TrabalhadoresConsultasDatasObservacoes observacoes ) { @@ -592,14 +694,26 @@ public class ProcessoDadosPanel extends JPanel @LeafUIActionBinding(action = CREATE_EXAME_MARCACAO_EMAIL) public void setForNewExameMarcacaoEmail( TrabalhadoresEcdsDatasEmails email ) { - try + if(email != null) { - MailDialog mailDialog = new MailDialog( getParentFrame() ); - email.setSubject( mailDialog.getSubject() ); - email.setBody( mailDialog.getMessage() ); - } catch( Exception e ) - { - e.printStackTrace(); + TrabalhadoresEcdsDatas exameMarcacao = email.getToTrabalhadoresEcdsDatas(); + if( exameMarcacao != null ) + { + TrabalhadoresEcds exame = exameMarcacao.getToTrabalhadoresEcds(); + if( exame != null ) + { + String[] subjectAndBody = sendMail(exame.getToTrabalhadores(), exameMarcacao.getData(), SingletonConstants.LETTER_EXAMES ); + if( subjectAndBody != null ) + { + email.setSubject( subjectAndBody[0] ); + email.setBody( subjectAndBody[1] ); + } + else + { + parentWindow.abortAction( true ); + } + } + } } } @@ -611,9 +725,9 @@ public class ProcessoDadosPanel extends JPanel observacoes.setObservacao( text ); inputExameMarcacaoObsMensagem.setEditable( true ); } - + @LeafUIActionBinding(action = SAVE_PROCESSO) - public void updateToSaveProcesso( TrabalhadoresProcesso processo) + public void updateToSaveProcesso( TrabalhadoresProcesso processo ) { processo.setMotivo( (Integer) inputProcessoMotivo.getSelectedObject() ); } @@ -622,6 +736,7 @@ public class ProcessoDadosPanel extends JPanel public void updateToSaveConsultaMarcacao( TrabalhadoresConsultasDatas marcacao ) { Prestadores prestador = (Prestadores) inputConsultaMarcacaoPrestador.getSelectedObject(); + prestador = Prestadores.prestadorNulo.equals( prestador ) ? null : prestador; marcacao.setToPrestadores( prestador ); } @@ -635,6 +750,7 @@ public class ProcessoDadosPanel extends JPanel public void updateToSaveExameMarcacao( TrabalhadoresEcdsDatas marcacao ) { Prestadores prestador = (Prestadores) inputExameMarcacaoPrestador.getSelectedObject(); + prestador = Prestadores.prestadorNulo.equals( prestador ) ? null : prestador; marcacao.setToPrestadores( prestador ); List allEcd = marcacao.getTrabalhadoresEcdArray(); @@ -691,7 +807,7 @@ public class ProcessoDadosPanel extends JPanel private void setupTrabalhadorPanel() { - setupSimpleDataPanel( panelTrabalhador, "Trabalhador", labelTrabalhadorNome, inputTrabalhadorNome, labelTrabalhadorSexo, inputTrabalhadorSexo, labelTrabalhadorBI, inputTrabalhadorBI,labelTrabalhadorNacionalidade, inputTrabalhadorNacionalidade, labelTrabalhadorDataNascimento, inputTrabalhadorDataNascimento, labelTrabalhadorDataAdmissao, inputTrabalhadorDataAdmissao, labelTrabalhadorObservacoes, inputTrabalhadorObservacoes ); + setupSimpleDataPanel( panelTrabalhador, "Trabalhador", labelTrabalhadorNome, inputTrabalhadorNome, labelTrabalhadorSexo, inputTrabalhadorSexo, labelTrabalhadorBI, inputTrabalhadorBI, labelTrabalhadorNacionalidade, inputTrabalhadorNacionalidade, labelTrabalhadorDataNascimento, inputTrabalhadorDataNascimento, labelTrabalhadorDataAdmissao, inputTrabalhadorDataAdmissao, labelTrabalhadorObservacoes, inputTrabalhadorObservacoes ); } private void setupProcessoPanel() @@ -704,6 +820,11 @@ public class ProcessoDadosPanel extends JPanel setupSimpleDataPanel( panelConsulta, "Consulta", labelConsultaEstado, inputConsultaEstado, labelConsultaData, inputConsultaData, labelConsultaPrestador, inputConsultaPrestador, new JPanel() ); } + private void setupFichaPanel() + { + setupSimpleDataPanel( panelFicha, "Ficha de Aptid" + atilde + "o", new JPanel() ); + } + private void setupConsultaMarcacaoPanel() { setupSimpleDataPanel( panelConsultaMarcacao, "Marca" + ccedil + atilde + "o de Consulta", labelConsultaMarcacaoEstado, inputConsultaMarcacaoEstado, labelConsultaMarcacaoData, inputConsultaMarcacaoData, labelConsultaMarcacaoPrestador, inputConsultaMarcacaoPrestador, new JPanel() ); diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoTreePanel.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoTreePanel.java index 83190b5a..20a03f30 100755 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoTreePanel.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/ui/ProcessoTreePanel.java @@ -36,6 +36,7 @@ import siprp.database.cayenne.objects.TrabalhadoresEcds; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasEmails; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatasObservacoes; +import siprp.database.cayenne.objects.TrabalhadoresFichasAptidao; import siprp.database.cayenne.objects.TrabalhadoresProcesso; import siprp.medicina.MarcacaoConsultaExtendedPanel; import siprp.medicina.processo.ProcessoDataProvider; @@ -43,6 +44,7 @@ import siprp.medicina.processo.estrutura.ConsultaMutableTreeNode; import siprp.medicina.processo.estrutura.DataMutableTreeNode; import siprp.medicina.processo.estrutura.ECDsMutableTreeNode; import siprp.medicina.processo.estrutura.EstruturaProcessoRenderer; +import siprp.medicina.processo.estrutura.FichaAptidaoMutableTreeNode; import siprp.medicina.processo.estrutura.MailMutableTreeNode; import siprp.medicina.processo.estrutura.MarcacaoMutableTreeNode; import siprp.medicina.processo.estrutura.ObservacoesMutableTreeNode; @@ -144,6 +146,17 @@ public class ProcessoTreePanel extends JPanel addAndRefresh( node, rootNode ); } } + + @LeafUIActionBinding(action = CREATE_FICHA) + public void createFichaNode( ) + { +// if( ficha != null ) +// { +// FichaAptidaoMutableTreeNode node = new FichaAptidaoMutableTreeNode( ficha ); +// DefaultMutableTreeNode parentNode = nodeByObject.get( ficha.getToTrabalhadoresProcesso() ); +// addAndRefresh( node, parentNode ); +// } + } @LeafUIActionBinding(action = APAGAR_PROCESSO) public void removeProcessoNode( TrabalhadoresProcesso processo )