From fa9cc83ce60e62cf680530bbe7da6bdd9be54d8a Mon Sep 17 00:00:00 2001 From: Diogo Neves Date: Tue, 7 Sep 2010 10:09:47 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@1473 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/SIPRPSoft/lib/shst.jar | Bin 1907925 -> 1907761 bytes trunk/SIPRPSoft/src/siprp/Main.java | 10 +- trunk/SIPRPSoft/src/siprp/SIPRPTracker.java | 4 +- .../src/siprp/SingletonConstants.java | 30 -- .../ClinicaAvenidaDataLoader.java | 13 +- .../companydataloaders/IBookDataLoader.java | 13 +- .../SIPRPPropertiesLoader.java | 13 +- .../src/siprp/ficha/FichaWindow.java | 2 +- .../src/siprp/ficha/TrabalhadorPanel.java | 2 +- .../src/siprp/importer/DataChooserWindow.java | 200 -------- .../src/siprp/importer/Importer.java | 369 --------------- .../siprp/impressaofichas/FichasPrinter.java | 174 ------- .../ImpressaoFichasDataProvider.java | 231 --------- .../ImpressaoFichasWindow.java | 445 ------------------ .../siprp/impressaofichas/lista_fichas.xsl | 63 --- .../externos/actions/TratarExternoAction.java | 4 +- ...ratarCriacaoProcessoTrabalhadorAction.java | 4 +- .../TratarMarcacaoTrabalhadorAction.java | 4 +- trunk/SIPRPSoft/src/siprp/ui/SIPRPIcon.java | 9 - 19 files changed, 33 insertions(+), 1557 deletions(-) delete mode 100644 trunk/SIPRPSoft/src/siprp/SingletonConstants.java delete mode 100644 trunk/SIPRPSoft/src/siprp/importer/DataChooserWindow.java delete mode 100644 trunk/SIPRPSoft/src/siprp/importer/Importer.java delete mode 100644 trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java delete mode 100644 trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasDataProvider.java delete mode 100644 trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasWindow.java delete mode 100644 trunk/SIPRPSoft/src/siprp/impressaofichas/lista_fichas.xsl delete mode 100644 trunk/SIPRPSoft/src/siprp/ui/SIPRPIcon.java diff --git a/trunk/SIPRPSoft/lib/shst.jar b/trunk/SIPRPSoft/lib/shst.jar index 1cebb2501cea8d79b490e49186d887ec5c1fb743..1d8fe57b04af0d05d3ecd85e223b2fe2efda1d63 100644 GIT binary patch delta 54438 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 delta 54646 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 0 ) - { - for( int j = 0; j < allItems.length; ++j ) - { - hash[ j ].put( labels[ i ], allItems[ j ][ combos[ i ].getSelectedIndex() ] ); - } - } - } - return hash; - } - -/* public static void main( String arg[] ) - { - String names[] = new String[] { "Nome:", "Morada:", "Telefone:" }; - String data[] = new String[] { "Joao Catita", "Damaiasdg sdfg sdf gsdfs hgf h", "nao tem", "so a noite", "" }; - DataChooserWindow dcw = new DataChooserWindow( null, names, data, new int[] { 3, 2 ,1 } ); - }*/ -} diff --git a/trunk/SIPRPSoft/src/siprp/importer/Importer.java b/trunk/SIPRPSoft/src/siprp/importer/Importer.java deleted file mode 100644 index 9427fcbb..00000000 --- a/trunk/SIPRPSoft/src/siprp/importer/Importer.java +++ /dev/null @@ -1,369 +0,0 @@ -package siprp.importer; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.Arrays; -import java.util.Hashtable; -import java.util.Vector; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; - -import shst.SHSTPropertiesConstants; - -import com.evolute.utils.Singleton; -import com.evolute.utils.arrays.Excel2DArray; -import com.evolute.utils.tables.BaseTable; -import com.evolute.utils.tables.Virtual2DTableModel; -import com.evolute.utils.ui.CustomJDialog; - -/** - * - * @author psantos - */ -public class Importer extends CustomJDialog -{ - - private static final long serialVersionUID = 1L; - public static final int TYPE_ADMISSAO = 0; - public static final int TYPE_DEMISSAO = 1; - - public static final String DATA_PREFIX = "Data "; - - public static final String NOME = "Nome do Funcion\u00e1rio"; - public static final String SEXO = "Sexo"; - public static final String NACIONALIDADE = "Nacionalidade"; - public static final String DATA_NASCIMENTO = DATA_PREFIX + "Nascimento"; - public static final String NUMERO_MECANOGRAFICO = "N\u00famero Mecanogr\u00e1fico"; - public static final String DATA_ADMISSAO = DATA_PREFIX + "Admiss\u00e3o"; - public static final String CATEGORIA = "Categoria"; - public static final String LOCAL_TRABALHO = "Local Trabalho"; - public static final String FUNCAO = "Fun\u00e7\u00e3o"; - public static final String DATA_ADMISSAO_FUNCAO = DATA_PREFIX + "Admiss\u00e3o na Fun\u00e7\u00e3o"; - public static final String DATA_DEMISSAO = DATA_PREFIX + "Demiss\u00e3o"; - - private JPanel panel; - private BaseTable table; - private Excel2DArray e2da; - private boolean canceled = false; - private DataChooserWindow dcw; - private Object vals[][]; - private int[] DEFAULT_SELECTION = new int[]{ 0, 2, 3, 1, -1, 4, 5, 7, 6, -1 }; - private int[] DEFAULT_SELECTION_DEMISSAO = new int[]{ 0, 1 }; - - public static final String NAMES[] = new String[]{ - NOME, - SEXO, - NACIONALIDADE, - DATA_NASCIMENTO, - NUMERO_MECANOGRAFICO, - DATA_ADMISSAO, - CATEGORIA, - LOCAL_TRABALHO, - FUNCAO, - DATA_ADMISSAO_FUNCAO - }; - - public static final String NAMES_DEMISSAO[] = new String[]{ - NOME, - DATA_DEMISSAO - }; - private final boolean multipleSelection; - protected final int type; - - /** Creates a new instance of Importer */ - public Importer( JFrame modalFrame, String filename, boolean multiple, int type ) - throws Exception - { - super( modalFrame, true ); - multipleSelection = multiple; - this.type = type; - - int []selection = ( int [] ) Singleton.getInstance( SHSTPropertiesConstants.EXCEL_FORMAT ); - if( selection != null ) - { - DEFAULT_SELECTION = selection; - } - int []selectionDemissao = ( int [] ) Singleton.getInstance( SHSTPropertiesConstants.EXCEL_FORMAT_DEMISSAO ); - if( selectionDemissao != null ) - { - DEFAULT_SELECTION_DEMISSAO = selectionDemissao; - } - setupComponents( filename ); - if( modalFrame == null ) - { - center(); - } - else - { - centerSuper(); - } - setVisible( true ); - } - - private void setupComponents( String filename ) - { - setSize( 800, 500 ); - - GridBagLayout gblGridBag = new GridBagLayout(); - GridBagConstraints gbcConstraints = new GridBagConstraints(); - - panel = ( JPanel ) getContentPane(); - - panel.setLayout( gblGridBag ); - - e2da = new Excel2DArray( filename ); - - String colNames[] = new String[ e2da.rowLength() ]; - for( int i = 0; i < colNames.length; i++ ) - { - colNames[ i ] = " "; - } - Virtual2DTableModel tm = new Virtual2DTableModel( colNames, null ); - tm.setValues( e2da ); - table = new BaseTable( tm ); - int col = 0; - switch( type ) - { - case TYPE_ADMISSAO: - col = DEFAULT_SELECTION[ 0 ]; - break; - - case TYPE_DEMISSAO: - col = DEFAULT_SELECTION_DEMISSAO[ 0 ]; - break; - } - table.getColumn( col ).setWidth( 200 ); - if( !multipleSelection ) - { - table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - } - else - { - table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION ); - } - table.getTableHeader().setResizingAllowed( true ); - table.getTableHeader().setReorderingAllowed( false ); - // table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); - - for( int i = 0; i < e2da.rowLength(); i++ ) - { - table.getColumn( i ).setMinWidth( 50 ); - //table.getColumn( i ).setResizable( true ); - } - - JScrollPane sp = new JScrollPane( table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - - gbcConstraints.anchor = GridBagConstraints.CENTER; - gbcConstraints.fill = GridBagConstraints.BOTH; - gbcConstraints.insets = new Insets(5, 5, 5, 5); - gbcConstraints.gridwidth = 3; - gbcConstraints.gridheight = 3; - gbcConstraints.weighty = 3; - gbcConstraints.gridx = 0; - gbcConstraints.gridy = 3; - gblGridBag.setConstraints( sp, gbcConstraints ); - - panel.add( sp ); - - JPanel jpButtons = new JPanel(); - final JButton jbOK = new JButton( "Escolher" ); - jbOK.setEnabled( false ); - jpButtons.add( jbOK ); - JButton jbCancel = new JButton( "Cancelar" ); - jpButtons.add( jbCancel ); - - gbcConstraints.gridheight = 1; - gbcConstraints.weightx = 1; - gbcConstraints.weighty = 0; - gbcConstraints.anchor = GridBagConstraints.SOUTH; - gbcConstraints.fill = GridBagConstraints.BOTH; - gbcConstraints.insets = new Insets( 2, 2, 2, 2 ); - gbcConstraints.gridwidth = 3; - gbcConstraints.gridx = 0; - gbcConstraints.gridy = 6; - gblGridBag.setConstraints( jpButtons, gbcConstraints ); - panel.add( jpButtons ); - - table.addMouseListener( new MouseAdapter() { - public void mouseClicked( MouseEvent e ) { - jbOK.setEnabled( true ); - if( e.getButton() == MouseEvent.BUTTON1 - && e.getClickCount() == 2 - && table.columnAtPoint( e.getPoint() ) != -1 - && table.rowAtPoint( e.getPoint() ) != -1 ) - { - acceptResult(); - } - } - public void mousePressed( MouseEvent e ) { - jbOK.setEnabled( true ); - } - }); - - jbOK.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent a ) { - acceptResult(); - } - }); - - jbCancel.addActionListener( new ActionListener() { - public void actionPerformed( ActionEvent a ) { - setVisible( false ); - dispose(); - canceled = true; - } - }); - - } - - private void acceptResult() - { - if( multipleSelection ) - { - int rows[] = table.getSelectedRows(); - vals = new Object[ rows.length ][]; - for( int i = 0; i < rows.length; ++i ) - { - Vector v = new Vector( Arrays.asList( e2da.getRow( rows[ i ] ) ) ); - v.add( "" ); - vals[ i ] = (Object[]) v.toArray( new Object[ v.size() ] ); - } - } - else - { - Vector v = new Vector( Arrays.asList( e2da.getRow( table.getSelectedRow() ) ) ); - v.add( "" ); - vals = new Object[][] { ( Object[] )v.toArray( new Object[ v.size() ] ) }; - } - -/* - System.out.println( "row: " + table.getSelectedRow() ); - System.out.print( "vals: " ); - for( int i = 0; i < vals.length; i++ ) - { - System.out.print( "[" + vals[ i ] + "]" ); - } - System.out.println(); -*/ - setVisible( false ); - dispose(); - - } - - public Hashtable getData() - { - if( NAMES == null || vals == null ) - { - return null; - } - dcw = new DataChooserWindow( null, NAMES, vals, DEFAULT_SELECTION ); - - if( canceled || ( dcw == null ) ) - { - return null; - } - - return dcw.getData(); - } - - public Hashtable[] getMultipleData() - { - switch( type ) - { - case TYPE_ADMISSAO: - if( NAMES == null || vals == null ) - { - return null; - } - dcw = new DataChooserWindow( null, NAMES, vals, DEFAULT_SELECTION ); - break; - - case TYPE_DEMISSAO: - if( NAMES_DEMISSAO == null || vals == null ) - { - return null; - } - dcw = new DataChooserWindow( null, NAMES_DEMISSAO, vals, DEFAULT_SELECTION_DEMISSAO ); - break; - } - - if( canceled || ( dcw == null ) ) - { - return null; - } - - return dcw.getMultipleData(); - } - - - public static void main( String args[] ) - { -// FileDialog fd = new FileDialog( null, "Escolha um ficheiro Excel:", FileDialog.LOAD ); -// fd.setDirectory( System.getProperty( "user.home" ) ); -// fd.setFilenameFilter( new FilenameFilter() { -// public boolean accept( File dir, String name ) -// { -// return (name!=null) && (name.indexOf( ".xls" ) != -1); -// } -// } ); -// fd.show(); - String filename = "c:\\teste_com_dados.xls"; - //String filename = fd.getFile(); - if( filename != null ) - { - //filename = fd.getDirectory() + File.separator + filename; - try - { - Importer importer = new Importer( null, filename, true, TYPE_ADMISSAO ); - Hashtable hash = importer.getData(); - if( hash != null ) - { - System.out.println( "Data: " + hash ); - } - } - catch( Exception ex ) - { - ex.printStackTrace(); - JOptionPane.showMessageDialog( null, "Erro a importar", "Erro...", JOptionPane.ERROR_MESSAGE ); - } - } -// Importer im = null; -// try -// { -// im = new Importer( null, -// "E:\\test.xls" -// "C:\\Documents and Settings\\psantos\\My Documents\\Devel\\teste.xls" -// "C:\\Documents and Settings\\psantos\\My Documents\\Devel\\Docs\\jexcelapi\\jxlrwtest.xls" -// ); -// -//System.out.println( "Escolhido: " + im.getData() ); -// -// } -// catch( Exception e ) -// { -// e.printStackTrace(); -// } - -// String[][] all = (String[][]) e.getObjects(); -// -// for( int j = 0; j < e.rowLength(); j++ ) -// { -// String[] r = e.getRow( j ); -// for( int i = 0; i < r.length; i++ ) -// { -// System.out.print( "[" + r[ i ] + "]" ); -// } -// System.out.println(); -// } - } -} \ No newline at end of file diff --git a/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java b/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java deleted file mode 100644 index 2be8c6cd..00000000 --- a/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * FichasPrinter.java - * - * Created on 20 de Fevereiro de 2006, 0:43 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.impressaofichas; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.text.DateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Hashtable; -import java.util.Locale; - -import javax.xml.transform.TransformerFactory; - -import shst.util.fop.FOPCreator; -import shst.util.fop.FOPPrinter; -import shst.util.fop.PDFCreator; -import siprp.printer.Printer; - -import com.evolute.utils.Singleton; -import com.evolute.utils.date.DateUtils; -import com.evolute.utils.strings.StringPlainer; -import com.evolute.utils.ui.DialogException; -import com.evolute.utils.xml.SimpleXMLElement; - -/** - * - * @author Frederico - */ -public class FichasPrinter extends Thread -{ - protected static final DateFormat D_F = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) ); - protected static final DateFormat D_F_L = DateFormat.getDateInstance( DateFormat.LONG, new Locale( "pt", "PT" ) ); - - private ImpressaoFichasDataProvider provider; - - protected Integer ids[]; - protected String printerName; - protected String listPath; - protected String nomeEmpresa; - protected String nomeEstabelecimento; - - /** Creates a new instance of FichasPrinter */ - public FichasPrinter( Integer ids[], String printerName, String listPath, - String nomeEmpresa, String nomeEstabelecimento ) - { - this.ids = ids; - this.printerName = printerName; - this.listPath = listPath; - this.nomeEmpresa = nomeEmpresa; - this.nomeEstabelecimento = nomeEstabelecimento; - } - - public void run() - { - try - { - SimpleXMLElement root = new SimpleXMLElement( "LISTA_FICHAS" ); - for( int n = 0; n < ids.length; n++ ) - { - print( ids[ n ] ); - Object dados[] = provider.getDadosForExameID( ids[ n ] ); - SimpleXMLElement linha = new SimpleXMLElement( "FICHA" ); - linha.addElement( new SimpleXMLElement( "NOME", ( String ) dados[ 0 ] ) ); - linha.addElement( new SimpleXMLElement( "DATA_EXAME", D_F.format( ( Date ) dados[ 1 ] ) ) ); - linha.addElement( new SimpleXMLElement( "DATA_PROXIMO_EXAME", dados[ 2 ] != null ? D_F.format( ( Date ) dados[ 2 ] ) : "n/d" ) ); - root.addElement( linha ); - - try - { - sleep( (n % 5 == 0 && n > 0) ? 3000 : 2000 ); - } - catch( InterruptedException iex ) - { - } - } - Date today = ( Date ) Singleton.getInstance( Singleton.TODAY ); - Calendar cal = Calendar.getInstance(); - cal.setTime( today ); - SimpleXMLElement data = new SimpleXMLElement( "DATA_EXTENSO", DateUtils.WEEKDAYS_FULL_PT[ cal.get( Calendar.DAY_OF_WEEK ) - Calendar.MONDAY ] - + ", " + D_F_L.format( today ) ); - root.addElement( data ); - TransformerFactory tFactory = TransformerFactory.newInstance(); - String xml = root.toString(); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - FOPCreator creator = FOPCreator.getFOPCreator(); - InputStream xmlIn = new ByteArrayInputStream( xml.getBytes() ); - creator.createFOfromXML( xmlIn, - FichasPrinter.class.getClassLoader().getResourceAsStream( - "siprp/impressaofichas/lista_fichas.xsl" ), - out ); - byte toPrint[] = out.toByteArray(); - ByteArrayInputStream in = new ByteArrayInputStream( toPrint ); - Hashtable printOptions = new Hashtable(); -//System.out.println( "OUT: " + out.toString() ); -// printOptions.put( FOPPrinterConstants.FOP_MANDATORY_PRINTER_NAME, printerName ); - FOPPrinter.getFOPPrinter().printFO( in, false, true, printOptions ); - byte []pdfData = PDFCreator.getPDFCreator().createPdfFromFo( toPrint ); - File dir = new File( new File( listPath ), StringPlainer.convertString( nomeEmpresa ).replace( ' ', '_' ) ); - if( !dir.exists() ) - { - dir.mkdir(); - } - String fileName = StringPlainer.convertString( nomeEstabelecimento ).replace( ' ', '_' ) - + "_" + DateUtils.plainFormatDate( today ) + ".pdf"; - FileOutputStream fos = new FileOutputStream( new File( dir, fileName ) ); - fos.write( pdfData ); - fos.close(); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a imprimir", true ); - } - ids = null; - } - - private void print( Integer exameID ) - throws Exception - { - if( provider == null ) - { - provider = ( ImpressaoFichasDataProvider ) ImpressaoFichasDataProvider.getProvider(); - } -// MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) ); -// ExameData exame = (ExameData) JDO.load( ExamesData.class, exameID ); -// byte pdf[] = (byte []) exame.get( ExamesData.PDF ); - - if( /* !printFO( exameID ) && */!printPDF( exameID ) ) - { - throw new Exception( "N\u00e3o existe exame" ); - } - } - - private boolean printFO(int exameID) throws Exception - { - boolean result = false; - byte[] fo = provider.getFO( exameID ); - if(fo != null) - { - Printer.printFO( fo ); - result = true; - } - return result; - } - - private boolean printPDF(int exameID) throws Exception - { - boolean result = false; - byte pdf[] = provider.getPDF( exameID ); - if( pdf != null ) - { - String nomeFicheiro = StringPlainer.convertString( provider.getNomeTrabalhadorForExameID( exameID ) ); - String split[] = nomeFicheiro.split( " " ); - nomeFicheiro = ""; - for( int n = 0; n < split.length; n++ ) - { - nomeFicheiro += split[n] + "_"; - } - Printer.printPDF( pdf, nomeFicheiro, printerName ); - result = true; - } - return result; - } -} diff --git a/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasDataProvider.java b/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasDataProvider.java deleted file mode 100644 index 8f186b67..00000000 --- a/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasDataProvider.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * HigieneDataProvider.java - * - * Created on February 1, 2006, 10:49 PM - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.impressaofichas; - -import java.text.DateFormat; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Date; -import java.util.Locale; -import java.util.Vector; - -import com.evolute.utils.Singleton; -import com.evolute.utils.arrays.Virtual2DArray; -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.Field; -import com.evolute.utils.sql.Select; -import com.evolute.utils.tables.ColumnizedMappable; - -/** - * - * @author fpalma - */ -public class ImpressaoFichasDataProvider extends MetaProvider -{ - private static final DateFormat DATE_FORMAT = - DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "PT", "pt" ) ); - - private static final Object LOCK = new Object(); - private static ImpressaoFichasDataProvider instance = null; - private final Executer executer; - - /** Creates a new instance of HigieneDataProvider */ - public ImpressaoFichasDataProvider() - 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 ImpressaoFichasDataProvider(); - } - } - return instance; - } - - 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 Object [][]getAllFichasForEstabelecimentoAndDatas( Integer estabelecimentoID, Date dataInicio, Date dataFim ) - throws Exception - { - Vector fichas = new Vector(); - Select select = - new Select( new String[]{ "trabalhadores" }, - new String[]{ "id", "nome", "nome_plain" }, - new Field( "estabelecimento_id" ).isEqual( estabelecimentoID ), - new String[]{ "nome_plain" }, - null ); - Virtual2DArray array = executer.executeQuery( select ); - for( int n = 0; n < array.columnLength(); n++ ) - { - Integer id = ( Integer ) array.get( n, 0 ); - String nome = ( String ) array.get( n, 1 ); - String nomePlain = ( String ) array.get( n, 2 ); - MappableObject fichasTrabalhador[] = getAllFichasForTrabalhadorAndDatas( id, dataInicio, dataFim ); - for( int f = 0; f < fichasTrabalhador.length; f++ ) - { - fichas.add( new Object[]{ fichasTrabalhador[ f ].getID(), nome, fichasTrabalhador[ f ].getValue(), nomePlain } ); - } - } - Object fichasArray[][] = ( Object[][] )fichas.toArray( new Object[ fichas.size() ][] ); - Arrays.sort( fichasArray, new Comparator< Object >(){ - public int compare( Object o1, Object o2 ) - { - Object arr1[] = ( Object[] )o1; - Object arr2[] = ( Object[] )o2; - int res = 0; - if( arr1[ 2 ] == null && arr2[ 2 ] == null ) - { - res = 0; - } - else if( arr1[ 2 ] == null ) - { - res = -1; - } - else if( arr2[ 2 ] == null ) - { - res = 1; - } - else - { - res = ( (Date)arr1[ 2 ]).compareTo( (Date)arr2[ 2 ] ); - } - - if( res == 0 ) - { - res = ( (String)arr1[ 3 ]).compareTo( (String)arr2[ 3 ] ); - } - return res; - } - } ); - for( int n = 0; n < fichasArray.length; n++ ) - { - fichasArray[ n ][ 2 ] = fichasArray[ n ][ 2 ] != null? DATE_FORMAT.format( (Date)fichasArray[ n ][ 2 ] ): ""; - } - return fichasArray; - } - - public MappableObject []getAllFichasForTrabalhadorAndDatas( Integer trabalhadorID, Date dataInicio, Date dataFim ) - throws Exception - { - Select select = - new Select( new String[]{ "exames" }, new String[]{ "MAX(id)", "data" }, - new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and( - new Field( "inactivo" ).isEqual( "n" ) ).and( - new Field( "data" ).between( new Object[]{ dataInicio, dataFim } ) ), - new String[]{ "data DESC" }, new String[]{ "data" } ); - Virtual2DArray array = executer.executeQuery( select ); - MappableObject exames[] = new MappableObject[ array.columnLength() ]; - for( int n = 0; n < exames.length; n++ ) - { - Date date = (Date)array.get( n, 1 ); - Integer id = new Integer( ((Number)array.get( n, 0 )).intValue() ); - exames[ n ] = new MappableObject( id, date ); - } - return exames; - } - - public byte[] getPDF( Integer exameID ) - throws Exception - { - Select select = - new Select( new String[]{ "exames" }, - new String[]{ "pdf" }, - new Field( "id" ).isEqual( exameID ) ); - Virtual2DArray array = executer.executeQuery( select ); - byte pdf[] = ( byte[] ) array.get( 0, 0 ); - return pdf; - } - - public byte[] getFO( Integer exameID ) - throws Exception - { - Select select = - new Select( new String[]{ "exames" }, - new String[]{ "fo" }, - new Field( "id" ).isEqual( exameID ) ); - Virtual2DArray array = executer.executeQuery( select ); - byte fo[] = ( byte[] ) array.get( 0, 0 ); - return fo; - } - - public String getNomeTrabalhadorForExameID( Integer exameID ) - throws Exception - { - Select select = - new Select( new String[]{ "exames", "trabalhadores" }, - new String[]{ "trabalhadores.nome_plain" }, - new Field( "exames.id" ).isEqual( exameID ).and( - new Field( "exames.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ) ) ); - Virtual2DArray array = executer.executeQuery( select ); - return ( String ) array.get( 0, 0 ); - } - - public Object[] getDadosForExameID( Integer exameID ) - throws Exception - { - Select select = - new Select( new String[]{ "exames", "trabalhadores" }, - new String[]{ "trabalhadores.nome", "exames.data", "exames.proximo_exame" }, - new Field( "exames.id" ).isEqual( exameID ).and( - new Field( "exames.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ) ) ); - Virtual2DArray array = executer.executeQuery( select ); - return array.getObjects()[ 0 ]; - } -} diff --git a/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasWindow.java b/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasWindow.java deleted file mode 100644 index 1c9949b2..00000000 --- a/trunk/SIPRPSoft/src/siprp/impressaofichas/ImpressaoFichasWindow.java +++ /dev/null @@ -1,445 +0,0 @@ -/* - * ImpressaoFichasUpperPanel.java - * - * Created on 19 de Fevereiro de 2006, 19:00 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package siprp.impressaofichas; - -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.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.Date; -import java.util.Properties; -import java.util.Vector; - -import javax.print.PrintService; -import javax.print.PrintServiceLookup; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JFileChooser; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextField; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import siprp.ui.SIPRPEditorWindow; - -import com.evolute.utils.properties.PropertyHandler; -import com.evolute.utils.tables.BaseTable; -import com.evolute.utils.tables.ColumnizedMappable; -import com.evolute.utils.tables.ColumnizedObjectArray; -import com.evolute.utils.tables.VectorTableModel; -import com.evolute.utils.ui.DialogException; -import com.evolute.utils.ui.calendar.JCalendarPanel; - -/** - * - * @author Frederico - */ -public class ImpressaoFichasWindow extends SIPRPEditorWindow - implements ListSelectionListener, ActionListener -{ - public final static String TITLE = "Impress\u00e3o de Fichas de Aptid\u00e3o"; - - protected final static String PATH_PROPERTY_SUFFIX = ".path"; - - private final static int iPermissionArray[][] = - new int[][]{ {} }; - - protected JCalendarPanel dataInicioPanel; - protected JCalendarPanel dataFimPanel; - protected VectorTableModel empresasModel; - protected BaseTable empresasTable; - protected VectorTableModel estabelecimentosModel; - protected BaseTable estabelecimentosTable; - protected VectorTableModel fichasModel; - protected BaseTable fichasTable; - protected JButton procurarButton; - protected JTextField pathText; - protected JButton pathButton; - protected JComboBox impressorasCombo; - protected JButton imprimirButton; - protected JButton imprimirTodasButton; - - protected ImpressaoFichasDataProvider provider; - protected PropertyHandler propertyHandler; - - /** Creates a new instance of ImpressaoFichasUpperPanel */ - public ImpressaoFichasWindow() - throws Exception - { - super( iPermissionArray ); - provider = ( ImpressaoFichasDataProvider ) ImpressaoFichasDataProvider.getProvider(); - propertyHandler = new PropertyHandler(); - setupComponents(); - } - - private void setupComponents() - throws Exception - { - setTitle( TITLE ); - 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 ); - fichasModel = new VectorTableModel( new String[]{ "trabalhador", "data" } ); - fichasTable = new BaseTable( fichasModel ); - fichasTable.fixColumnWidth( 1, 120 ); - fichasTable.setNonResizableNorReordable(); - fichasTable.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ); - fichasTable.getSelectionModel().addListSelectionListener( this ); - JScrollPane fichasScroll = new JScrollPane( fichasTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); - JLabel inicioLabel = new JLabel( "In\u00edcio" ); - dataInicioPanel = new JCalendarPanel( null ); - JLabel fimLabel = new JLabel( "Fim" ); - dataFimPanel = new JCalendarPanel( null ); - procurarButton = new JButton( "Carregar" ); - procurarButton.addActionListener( this ); - procurarButton.setEnabled( false ); - pathText = new JTextField(); - pathText.setEditable( false ); - pathButton = new JButton( "Escolher Direct\u00f3rio" ); - pathButton.addActionListener( this ); - impressorasCombo = new JComboBox(); - PrintService printers[] = PrintServiceLookup.lookupPrintServices( null, null ); - for( int n = 0; n < printers.length; n++ ) - { - impressorasCombo.addItem( printers[ n ].getName() ); - } - imprimirButton = new JButton( "Imprimir escolhidas" ); - imprimirButton.addActionListener( this ); - imprimirButton.setEnabled( false ); - imprimirTodasButton = new JButton( "Imprimir Todas" ); - imprimirTodasButton.addActionListener( this ); - imprimirTodasButton.setEnabled( false ); - JPanel upperPad = new JPanel(); - JPanel lowerPad = new JPanel(); - JPanel upperPanel = new JPanel(); - - GridBagLayout gridbag = new GridBagLayout(); - setLayout( gridbag ); - GridBagConstraints constraints = new GridBagConstraints(); - constraints.insets = new Insets( 1, 1, 1, 1 ); - constraints.fill = GridBagConstraints.BOTH; - constraints.gridheight = 1; - constraints.weighty = 0.35; - constraints.weightx = 1; - constraints.gridwidth = GridBagConstraints.REMAINDER; - gridbag.setConstraints( upperPanel, constraints ); - - constraints.gridwidth = 2; - constraints.weightx = 1; - constraints.weighty = 0.65; - constraints.gridheight = GridBagConstraints.REMAINDER; - gridbag.setConstraints( fichasScroll, constraints ); - - constraints.weighty = 0; - constraints.gridheight = 1; - constraints.weightx = 0; - constraints.gridwidth = GridBagConstraints.REMAINDER; - gridbag.setConstraints( inicioLabel, constraints ); - gridbag.setConstraints( dataInicioPanel, constraints ); - gridbag.setConstraints( fimLabel, constraints ); - gridbag.setConstraints( dataFimPanel, constraints ); - gridbag.setConstraints( procurarButton, constraints ); - gridbag.setConstraints( pathText, constraints ); - gridbag.setConstraints( pathButton, constraints ); - gridbag.setConstraints( impressorasCombo, constraints ); - gridbag.setConstraints( imprimirButton, constraints ); - gridbag.setConstraints( imprimirTodasButton, constraints ); - - constraints.weighty = 0.32; - gridbag.setConstraints( upperPad, constraints ); - gridbag.setConstraints( lowerPad, constraints ); - - add( upperPanel ); - add( fichasScroll ); - add( upperPad ); - add( inicioLabel ); - add( dataInicioPanel ); - add( fimLabel ); - add( dataFimPanel ); - add( procurarButton ); - add( lowerPad ); - add( pathButton ); - add( pathText ); - add( impressorasCombo ); - add( imprimirButton ); - add( imprimirTodasButton ); - - upperPanel.setLayout( new GridLayout( 1, 2 ) ); - upperPanel.add( empresasScroll ); - upperPanel.add( estabelecimentosScroll ); - ColumnizedMappable empresas[] = provider.getAllEmpresas(); - Vector values = empresasModel.getValues(); - values.addAll( Arrays.asList( empresas ) ); - empresasModel.setValues( values ); - - Properties properties = propertyHandler.load(); -System.out.println( properties ); - String path = (String) properties.get( getClass().getName() + PATH_PROPERTY_SUFFIX ); - if( path == null ) - { - setDirectorio( System.getProperty( "user.home" ) ); - } - else - { - pathText.setText( path ); - } - } - - 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() ) ) - { - procurarButton.setEnabled( estabelecimentosTable.getSelectedRow() != -1 ); - } - else if( source.equals( fichasTable.getSelectionModel() ) ) - { - imprimirButton.setEnabled( fichasTable.getSelectedRow() != -1 ); - } - } - - 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(); - } - } - } - - 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; - } - } - } - - public Object save() - { - int empresaSelected = empresasTable.getSelectedRow(); - int estabelecimentoSelected = estabelecimentosTable.getSelectedRow(); - return new Integer[]{ - empresaSelected == -1 ? null : ( ( ColumnizedMappable ) empresasModel.getRowAt( empresaSelected ) ).getID(), - estabelecimentoSelected == -1 ? null : ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( estabelecimentoSelected ) ).getID() - }; - } - - public void setEnabled( boolean enable ) - { - empresasTable.setEnabled( enable ); - estabelecimentosTable.setEnabled( enable ); - } - - public void actionPerformed( ActionEvent e ) - { - Object source = e.getSource(); - if( source.equals( procurarButton ) ) - { - procurar(); - } - else if( source.equals( imprimirButton ) ) - { - imprimir(); - } - else if( source.equals( imprimirTodasButton ) ) - { - imprimirTodas(); - } - else if( source.equals( pathButton ) ) - { - escolherDirectorio(); - } - } - - public void procurar() - { - int selected = estabelecimentosTable.getSelectedRow(); - Date dataInicio = dataInicioPanel.getDate(); - Date dataFim = dataFimPanel.getDate(); - if( selected == -1 || ( dataInicio == null && dataFim == null ) ) - { - JOptionPane.showMessageDialog( this, "Tem de escolher pelo menos uma data e um estabelecimento.", "Erro", - JOptionPane.ERROR_MESSAGE ); - return; - } - if( dataInicio == null ) - { - dataInicio = dataFim; - } - else if( dataFim == null ) - { - dataFim = dataInicio; - } - fichasModel.clearAll(); - try - { - Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selected ) ).getID(); - Object fichas[][] = provider.getAllFichasForEstabelecimentoAndDatas( estabelecimentoID, dataInicio, dataFim ); - Vector values = fichasModel.getValues(); - for( int n = 0; n < fichas.length; n++ ) - { - values.add( new ColumnizedObjectArray( fichas[ n ], true ) ); - } - fichasModel.setValues( values ); - } - catch( Exception ex ) - { - DialogException.showExceptionMessage( ex, "Erro a carregar a lista.", true ); - estabelecimentosModel.clearAll(); - } - imprimirTodasButton.setEnabled( fichasTable.getRowCount() > 0 ); - } - - public void imprimir() - { - imprimirLinhas( fichasTable.getSelectedRows() ); - } - - public void imprimirTodas() - { - int linhas[] = new int[ fichasTable.getRowCount() ]; - for( int n = 0; n < linhas.length; n++ ) - { - linhas[ n ] = n; - } - imprimirLinhas( linhas ); - } - - protected void imprimirLinhas( int linhas[] ) - { - try - { - File file = new File( pathText.getText().trim() ); - if( !file.exists() || !file.isDirectory() ) - { - throw new IOException( "Direct\u00f3rio inexistente ou indispon\u00edvel: " + pathText.getText().trim() ); - } - } - catch( IOException ioex ) - { - JOptionPane.showMessageDialog( this, ioex.getMessage(), "Erro...", - JOptionPane.ERROR_MESSAGE ); - return; - } - String impressora = ( String ) impressorasCombo.getSelectedItem(); - Integer ids[] = new Integer[ linhas.length ]; - for( int n = 0; n < ids.length; n++ ) - { - ids[ n ] = ( ( ColumnizedObjectArray )fichasModel.getRowAt( linhas[ n ] ) ).getID(); - } - int option = JOptionPane.showConfirmDialog( this, "Imprimir as " + ids.length + " fichas para a impressora " + impressora + "?", - "Imprimir", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); - if( option == 0 ) - { - System.out.println( "imprimir" ); - new FichasPrinter( ids, impressora, pathText.getText().trim(), - empresasModel.getRowAt( empresasTable.getSelectedRow() ).toString(), - estabelecimentosModel.getRowAt( estabelecimentosTable.getSelectedRow() ).toString() ).start(); - } - } - - protected void escolherDirectorio() - { - JFileChooser chooser = new JFileChooser(); - chooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); - int returnVal = chooser.showOpenDialog( this ); - if(returnVal == JFileChooser.APPROVE_OPTION) - { - setDirectorio( chooser.getSelectedFile().getAbsolutePath() ); - } - } - - protected void setDirectorio( String path ) - { - if( path != null ) - { - pathText.setText( path ); - Properties properties = propertyHandler.load(); - properties.setProperty( getClass().getName() + PATH_PROPERTY_SUFFIX, path ); - try - { - propertyHandler.save( properties ); - } - catch( IOException ioex ) - { - ioex.printStackTrace(); - } - } - } -} diff --git a/trunk/SIPRPSoft/src/siprp/impressaofichas/lista_fichas.xsl b/trunk/SIPRPSoft/src/siprp/impressaofichas/lista_fichas.xsl deleted file mode 100644 index 98b21d4b..00000000 --- a/trunk/SIPRPSoft/src/siprp/impressaofichas/lista_fichas.xsl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - RELAÇÃO DE FICHAS DE APTIDÃO ENVIADAS - - - - - - - - - - NOME - - - DATA EXAME - - - PRÓXIMO EXAME - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/trunk/SIPRPSoft/src/siprp/lembretes/externos/actions/TratarExternoAction.java b/trunk/SIPRPSoft/src/siprp/lembretes/externos/actions/TratarExternoAction.java index ea2c2d45..b5b50fa2 100755 --- a/trunk/SIPRPSoft/src/siprp/lembretes/externos/actions/TratarExternoAction.java +++ b/trunk/SIPRPSoft/src/siprp/lembretes/externos/actions/TratarExternoAction.java @@ -17,13 +17,13 @@ import java.util.List; import javax.swing.AbstractAction; import javax.swing.JOptionPane; +import shst.SHSTPropertiesConstants; import shst.data.outer.EmpresasData; import shst.data.outer.EstabelecimentosData; import shst.data.outer.TrabalhadoresData; import shst.data.provider.MedicinaDataProvider; import shst.medicina.multi.MultiMarcacoesWindow; import siprp.SIPRPTracker; -import siprp.SingletonConstants; import siprp.lembretes.Lembrete; import siprp.lembretes.LembretesDataProvider; @@ -67,7 +67,7 @@ public class TratarExternoAction extends AbstractAction { try { - tracker = (SIPRPTracker) Singleton.getInstance( SingletonConstants.SIPRP_TRACKER ); + tracker = (SIPRPTracker) Singleton.getInstance( SHSTPropertiesConstants.SHST_TRACKER /*SingletonConstants.SIPRP_TRACKER*/ ); Lembrete lembrete = lembretesProvider.getLembreteByID( lembreteID ); if( lembrete == null ) { diff --git a/trunk/SIPRPSoft/src/siprp/lembretes/marcacoes/actions/TratarCriacaoProcessoTrabalhadorAction.java b/trunk/SIPRPSoft/src/siprp/lembretes/marcacoes/actions/TratarCriacaoProcessoTrabalhadorAction.java index 11913280..df985db3 100644 --- a/trunk/SIPRPSoft/src/siprp/lembretes/marcacoes/actions/TratarCriacaoProcessoTrabalhadorAction.java +++ b/trunk/SIPRPSoft/src/siprp/lembretes/marcacoes/actions/TratarCriacaoProcessoTrabalhadorAction.java @@ -17,13 +17,13 @@ import java.util.List; import javax.swing.AbstractAction; import javax.swing.JOptionPane; +import shst.SHSTPropertiesConstants; import shst.data.outer.EmpresasData; import shst.data.outer.EstabelecimentosData; import shst.data.outer.TrabalhadoresData; import shst.data.provider.MedicinaDataProvider; import shst.medicina.multi.MultiMarcacoesWindow; import siprp.SIPRPTracker; -import siprp.SingletonConstants; import siprp.lembretes.Lembrete; import siprp.lembretes.LembretesDataProvider; @@ -71,7 +71,7 @@ public class TratarCriacaoProcessoTrabalhadorAction extends AbstractAction { try { - tracker = ( SIPRPTracker ) Singleton.getInstance( SingletonConstants.SIPRP_TRACKER ); + tracker = ( SIPRPTracker ) Singleton.getInstance( SHSTPropertiesConstants.SHST_TRACKER /*SingletonConstants.SIPRP_TRACKER*/ ); Lembrete lembrete = lembretesProvider.getLembreteByID( lembreteID ); if( lembrete == null ) { diff --git a/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java b/trunk/SIPRPSoft/src/siprp/lembretes/remarcacoes/actions/TratarMarcacaoTrabalhadorAction.java index 01eb949d..2e779c8f 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.SHSTPropertiesConstants; import shst.data.outer.EmpresasData; import shst.data.outer.EstabelecimentosData; import shst.data.outer.MarcacoesTrabalhadorData; @@ -30,7 +31,6 @@ import shst.data.provider.BaseProvider; import shst.data.provider.MedicinaDataProvider; import shst.medicina.multi.MultiMarcacoesWindow; import siprp.SIPRPTracker; -import siprp.SingletonConstants; import siprp.lembretes.Lembrete; import siprp.lembretes.LembretesDataProvider; @@ -79,7 +79,7 @@ public class TratarMarcacaoTrabalhadorAction extends AbstractAction { try { - tracker = ( SIPRPTracker ) Singleton.getInstance( SingletonConstants.SIPRP_TRACKER ); + tracker = ( SIPRPTracker ) Singleton.getInstance( SHSTPropertiesConstants.SHST_TRACKER /*SingletonConstants.SIPRP_TRACKER*/ ); Lembrete lembrete = lembretesProvider.getLembreteByID( lembreteID ); if( lembrete == null ) { diff --git a/trunk/SIPRPSoft/src/siprp/ui/SIPRPIcon.java b/trunk/SIPRPSoft/src/siprp/ui/SIPRPIcon.java deleted file mode 100644 index 8f82f794..00000000 --- a/trunk/SIPRPSoft/src/siprp/ui/SIPRPIcon.java +++ /dev/null @@ -1,9 +0,0 @@ -package siprp.ui; - - - - -public class SIPRPIcon -{ - -}