package siprp; import static shst.ProcessoConstants.ESTADO_PROCESSO_BY_CODE; import static shst.ProcessoConstants.PROCESSO_ABERTO_CODE; import static shst.ProcessoConstants.PROCESSO_ABERTO_DESCRIPTION; import static shst.ProcessoConstants.PROCESSO_CANCELADO_CODE; import static shst.ProcessoConstants.PROCESSO_CANCELADO_DESCRIPTION; import static shst.ProcessoConstants.PROCESSO_FECHADO_CODE; import static shst.ProcessoConstants.PROCESSO_FECHADO_DESCRIPTION; import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Date; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.plaf.ColorUIResource; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; import shst.SHSTPropertiesConstants; import shst.SHSTShutdownHook; import shst.companydataloaders.SIPRPPropertiesLoader; import shst.initializer.SHSTORMInitializer; import shst.lembretes.LembretesDaemon; import siprp.clientes.AvisosPanel; import siprp.initializer.SIPRPLoggerInit; import siprp.initializer.SIPRPUIInitializer; import siprp.update.UpdateList; import com.evolute.module.updater.Updater; import com.evolute.project.ProjectTools; import com.evolute.properties.EvoPropertyKey; import com.evolute.utils.Singleton; import com.evolute.utils.db.DBException; import com.evolute.utils.db.DBManager; import com.evolute.utils.db.JDBCManager; import com.evolute.utils.db.keyretrievers.JDBCAutoKeyRetriever; import com.evolute.utils.error.ErrorLogger; import com.evolute.utils.image.EvoImage; import com.evolute.utils.jdbc.DBStatementExecuter; import com.evolute.utils.jdbc.StatementExecuterFactory; import com.evolute.utils.sql.Insert; import com.evolute.utils.strings.UnicodeChecker; import com.evolute.utils.ui.DialogException; import com.evolute.utils.ui.window.LoginWindow; public class Main implements com.evolute.utils.ui.window.Connector { private static String dbase; private static SIPRPTracker siprpTracker; private static LoginWindow loginWindow; private static AvisosPanel avisos = null; public static File fopConfigFile; static { ESTADO_PROCESSO_BY_CODE.put( PROCESSO_ABERTO_CODE, PROCESSO_ABERTO_DESCRIPTION ); ESTADO_PROCESSO_BY_CODE.put( PROCESSO_FECHADO_CODE, PROCESSO_FECHADO_DESCRIPTION ); ESTADO_PROCESSO_BY_CODE.put( PROCESSO_CANCELADO_CODE, PROCESSO_CANCELADO_DESCRIPTION ); } public static void main( String args[] ) throws Exception { UIManager.put( "TextField.inactiveForeground", ColorUIResource.BLACK ); UIManager.put( "TextField.foreground", ColorUIResource.RED.darker() ); UIManager.put( "TextArea.inactiveForeground", ColorUIResource.BLACK ); UIManager.put( "TextArea.foreground", ColorUIResource.RED.darker() ); UIManager.put( "ComboBox.disabledForeground", ColorUIResource.BLACK ); UIManager.put( "ComboBox.foreground", ColorUIResource.RED.darker() ); UIManager.put( "FormattedTextField.inactiveForeground", ColorUIResource.BLACK ); UIManager.put( "FormattedTextField.foreground", ColorUIResource.RED.darker() ); new SHSTShutdownHook().init(); new SIPRPUIInitializer().doInit(); SIPRPPropertiesLoader.getInstance().load(); dbase = (String) Singleton.getInstance( SHSTPropertiesConstants.LOCAL_DB_NAME ); Insert.setDefaultKeyRetriever( JDBCAutoKeyRetriever.DEFAULT ); UnicodeChecker.setUseDoubleSlash( true ); avisos = new AvisosPanel(); String logoFileName = ( String ) Singleton.getInstance( SHSTPropertiesConstants.COMPANY_LOGO ); loginWindow = new LoginWindow( new Main(), logoFileName, new String[] { (String) Singleton.getInstance( SHSTPropertiesConstants.SOFTWARE_NAME ) }, new String[] { "Vers\u00E3o " + ProjectTools.getInstance().getVersion(), "(EVOLUTE 2004-2010)" }, "", (String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_USER ), (String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_PASSWORD ), avisos, false ); loginWindow.setTitle( (String) Singleton.getInstance( SHSTPropertiesConstants.SOFTWARE_NAME ) ); String iconPath = ( String ) Singleton.getInstance( EvoPropertyKey.APP.ICON_PATH ); if ( iconPath != null && ! "".equals( iconPath.trim() ) ) { loginWindow.setIconImage( new EvoImage( iconPath ).getImage() ); } loginWindow.getButtOK().setEnabled( false ); JPanel left = loginWindow.getLeftPanel(); left.setBackground( Color.white ); loginWindow.setSize( 1024, 510 ); loginWindow.setExtendedState(loginWindow.getExtendedState() | LoginWindow.MAXIMIZED_BOTH); loginWindow.setVisible( true ); SwingUtilities.invokeLater( new Runnable() { @Override public void run() { try { siprpTracker.setLoginWindow( loginWindow ); loginWindow.expandAll(); } catch ( Exception e ) { ErrorLogger.logExceptionAndShow( new Exception( "Erro ao iniciar o SIPRPSoft", e ) ); } } } ); fopConfigFile = loadFopConfigFile(); } private static File loadFopConfigFile() { try { InputStream is = ClassLoader.getSystemClassLoader() .getResourceAsStream("siprp/util/fop/fop.xconf"); if (is != null) { File tempFile = File.createTempFile("fop", ".xconf"); FileOutputStream fos = new FileOutputStream(tempFile); byte[] buf = new byte[256]; int read = 0; while ((read = is.read(buf)) > 0) { fos.write(buf, 0, read); } return tempFile; } return null; } catch (Exception e) { e.printStackTrace(); return null; } } @Override public boolean connect( String user, String passwd ) { String url = null; try { String server = null; if( server == null ) { server = (String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_URL ); } String prefix = (String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_URL_PREFIX ); url = prefix + server + "/" + dbase; DBManager dbm = new JDBCManager( url, user, passwd , 10, 8, 8, null ); Singleton.setInstance( Singleton.DEFAULT_DBMANAGER, dbm ); StatementExecuterFactory.initialize( new DBStatementExecuter( dbm.getSharedExecuter(this) ) ); Updater.getInstance().executeUpdates( UpdateList.getUpdates() ); new SHSTORMInitializer().doInit(); Singleton.setInstance( Singleton.TODAY, new Date() ); } catch( Exception ex ) { DialogException.showExceptionMessage( ex, "N\u00E3o foi poss\u00EDvel estabelecer" + " a liga\u00E7\u00E3o \u00E0 base de dados.\n(" + url + ")", false ); return false; } Singleton.setInstance( Singleton.USERNAME, user ); SIPRPLoggerInit.init(); siprpTracker = new SIPRPTracker( avisos ); avisos.refresh(); LembretesDaemon.go(); return true; } @Override public boolean disconnect() { if( siprpTracker.quit() ) { siprpTracker = null; try { ( ( DBManager )Singleton.getInstance( Singleton.DEFAULT_DBMANAGER ) ).close(); Singleton.clear(); } catch( DBException ex ) { DialogException.showException( ex ); } return true; } return false; } @Override public void executeAction( DefaultMutableTreeNode node ) { try { siprpTracker.openWindow( ( String )node.getUserObject() ); } catch( Exception ex ) { DialogException.showException( ex ); } } @Override public void exit() { if( siprpTracker == null || siprpTracker.quit() ) { // Thread exit = new Thread( new Runnable() // { // @Override // public void run() // { if ( siprpTracker != null && siprpTracker.getLoginWindow() != null ) { siprpTracker.getLoginWindow().setVisible( false ); siprpTracker.getLoginWindow().dispose(); } System.exit( 0 ); // } // }); // exit.setName( "Exit Thread" ); // exit.setDaemon( false ); // exit.start(); } } @Override public MutableTreeNode getTree() { return siprpTracker.getRoot(); } }