You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/SIPRPSoft/src/siprp/Main.java

269 lines
7.9 KiB

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.SHSTTracker;
import shst.companydataloaders.SIPRPPropertiesLoader;
import shst.initializer.SHSTORMInitializer;
import shst.initializer.SHSTUIInitializer;
import shst.lembretes.LembretesDaemon;
import shst.update.SHSTUpdateList;
import siprp.initializer.SIPRPLoggerInit;
import com.evolute.module.updater.UpdateListener;
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 SHSTTracker shstTracker;
private static LoginWindow loginWindow;
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 SHSTUIInitializer().doInit();
SIPRPPropertiesLoader.getInstance().load();
dbase = (String) Singleton.getInstance( SHSTPropertiesConstants.LOCAL_DB_NAME );
Insert.setDefaultKeyRetriever( JDBCAutoKeyRetriever.DEFAULT );
UnicodeChecker.setUseDoubleSlash( true );
final String logoFileName = ( String ) Singleton.getInstance( SHSTPropertiesConstants.COMPANY_LOGO );
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,
(String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_USER ),
(String)Singleton.getInstance( SHSTPropertiesConstants.LOCAL_PASSWORD ) , 10, 8, 8, null );
Singleton.setInstance( Singleton.DEFAULT_DBMANAGER, dbm );
StatementExecuterFactory.initialize( new DBStatementExecuter( dbm.getSharedExecuter( Main.class ) ) );
Updater.getInstance().addUpdateListener( new UpdateListener()
{
@Override
public void updateStarted()
{
}
@Override
public void updateDone()
{
try
{
new SHSTORMInitializer().doInit();
Singleton.setInstance( Singleton.TODAY, new Date() );
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 ), null, 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( 600, 500 );
loginWindow.setExtendedState( loginWindow.getExtendedState() | LoginWindow.MAXIMIZED_BOTH );
loginWindow.setVisible( true );
SwingUtilities.invokeLater( new Runnable()
{
@Override
public void run()
{
try
{
loginWindow.expandAll();
}
catch ( Exception e )
{
ErrorLogger.logExceptionAndShow( new Exception( "Erro ao iniciar o SIPRPSoft", e ) );
}
}
} );
fopConfigFile = loadFopConfigFile();
}
catch( Exception e )
{
ErrorLogger.logExceptionAndShow( e );
}
}
} );
Updater.getInstance().executeUpdates( SHSTUpdateList.getUpdatesOnly() );
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "N\u00E3o foi poss\u00EDvel estabelecer a liga\u00E7\u00E3o \u00E0 base de dados.\n(" + url + ")", false );
}
}
private static File loadFopConfigFile()
{
try
{
InputStream is = ClassLoader.getSystemClassLoader()
.getResourceAsStream("shst/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 )
{
Singleton.setInstance( Singleton.USERNAME, user );
SIPRPLoggerInit.init();
shstTracker = SHSTTracker.getInstance();//new SIPRPTracker( avisos );
LembretesDaemon.go();
return true;
}
@Override
public boolean disconnect()
{
if( shstTracker.quit() )
{
shstTracker = 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
{
shstTracker.openWindow( ( String )node.getUserObject() );
}
catch( Exception ex )
{
DialogException.showException( ex );
}
}
@Override
public void exit()
{
if( shstTracker == null || shstTracker.quit() )
{
loginWindow.setVisible( false );
loginWindow.dispose();
System.exit( 0 );
}
}
@Override
public MutableTreeNode getTree()
{
return shstTracker.getRoot();
}
}