forked from Coded/SIPRP
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.
269 lines
7.9 KiB
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();
|
|
}
|
|
|
|
}
|