Package LayoutMain

Source Code of LayoutMain.ActionManager

package LayoutMain;

import Common.ErrorConsoleManager;
import BugAnalyzer.Indexer;
import FileBugManager.BugUpdater;
import BugAnalyzer.StartAnalyze;
import DatabaseManager.SqliteDb;
import Test.Test;
import java.io.File;
import java.util.Hashtable;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.SwingWorker;
import XmlManager.ScriptClassification;

/**
* Classe Richiamata dal Layout la quale gestisce
* tutte le azioni da effettuare (Analisi, crazione
* database, ecc).
* Le azioni più onerose vengono avviate in un
* nuovo thread.
* @author Fabrizio Faustinoni, Giuseppe Falco
*/
public class ActionManager {

    public static final ActionManager ISTANCE = new ActionManager();
    private Layout layout = null;
    public static int ACTION_UPDATE_BUG = 1;
    public static int ACTION_START_ANALYZE = 2;
    public static int ACTION_CREATE_QUERY = 3;
    public static int ACTION_SAVE_SQL_FILE = 4;
    public static int ACTION_CREATE_DB = 5;
    public static int ACTION_DO_TEST = 6;
    public static int ACTION_ERROR_MODALITY = 7;
    public static int ACTION_DEFAULT_MODALITY = 8;
    private static Timer timer;

    /**
     * Richiamando questa funzione si effettuano
     * le azioni richieste in base al parametro
     * passato.
     * I possibili valori di tale parametro sono
     * memorizzati nelle varibili statiche di
     * tale classe:
     *              ACTION_UPDATE_BUG
     *              ACTION_START_ANALYZE
     *              ACTION_CREATE_QUERY
     *              ACTION_SAVE_SQL_FILE
     *              ACTION_CREATE_DB
     * @param Action
     */
    public void doAction(int Action) {
        switch (Action) {
            case 1: {
                // Aggiono i file dei bug
                if (layout != null) {
                    layout.disableAll();
                    layout.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
                }

                // Avvio thread
                SwingWorker worker = new SwingWorker() {

                    @Override
                    protected String doInBackground() throws InterruptedException {
                        BugUpdater bugUpdater = new BugUpdater();
                        bugUpdater.update(true);
                        return null;
                    }

                    @Override
                    protected void done() {
                        layout.enableAll();
                        layout.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
                    }
                };
                worker.execute();
                break;
            }
            case 2: {
                // Inizio l'analisi
                if (layout != null) {
                    layout.disableAll();
                    layout.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
                }
                SwingWorker worker = new SwingWorker() {

                    @Override
                    protected String doInBackground() throws InterruptedException {
                        StartAnalyze analyzer = new StartAnalyze();
                        analyzer.start(false);
                        return null;
                    }

                    @Override
                    protected void done() {
                        layout.enableAll();
                        layout.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
                    }
                };
                worker.execute();
                break;
            }
            case 3: {
                // Creo la query sql per creare il database
                if (layout != null) {
                    layout.disableAll();
                    layout.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
                }
                SwingWorker worker = new SwingWorker() {

                    @Override
                    protected String doInBackground() throws InterruptedException {
                        // Verifico l'esisteza di almeno un file da indicizzare
                        File f = new File(Indexer.path_for_data);
                        if ((!f.exists()) || (f.listFiles().length == 0)) {
                            Layout.log("Cartella da indicizzare " + f.getPath() + " vuota, aggiorno i file!!");
                            // Aggiorno i file di bug
                            BugUpdater bugUpdater = new BugUpdater();
                            bugUpdater.update(false);
                        }

                        // Se non avevo clacolato le priorità statiche lo faccio ora
                        if (StartAnalyze.finalPriority == null) {
                            StartAnalyze s = new StartAnalyze();
                            s.start(false);
                        }

                        Layout.clearLogger();
                        // Recupero le classificazioni degli script
                        ScriptClassification scriptClass = new ScriptClassification();
                        Hashtable classification = scriptClass.getClassification();
                        // Creo il database
                        SqliteDb db = new SqliteDb(false);

                        if (Layout.staticPriority.isSelected()) {
                            // Uso priorità statiche
                            db.createDbScript(StartAnalyze.finalPriority, classification);
                        } else {
                            // Inizializzo le priorità a 1
                            SqliteDb.setUseDefaultPriority(false);
                            db.createDbScript(StartAnalyze.finalPriority, classification);
                        }
                        return null;
                    }

                    @Override
                    protected void done() {
                        layout.enableAll();
                        layout.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
                    }
                };
                worker.execute();
                break;
            }
            case 4: {
                // Salvo il file Sql (forced)
                if (SqliteDb.query != null) {
                    if (Layout.staticPriority.isSelected()) {
                        // Uso priorità statiche
                        SqliteDb.saveQueryToFile(true);
                    } else {
                        SqliteDb.setUseDefaultPriority(false);
                        // Creo database con priorità a 1
                        SqliteDb.saveQueryToFile(true);
                    }
                }
                break;
            }
            case 5: {
                // Creo il database sql
                if (layout != null) {
                    layout.disableAll();
                    layout.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
                }
                // Se lo avvio come thread da un eccezzione: Database locked
                //SwingWorker worker = new SwingWorker() {
                //    @Override
                //    protected String doInBackground() throws InterruptedException {
                try {
                    if (Layout.staticPriority.isSelected()) {
                        // Priorità statiche
                        SqliteDb.createSqliteDb();
                    } else {
                        // Inizializzo a 1
                        SqliteDb.setUseDefaultPriority(false);
                        SqliteDb.createSqliteDb();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                //        return null;
                //    }
                //    @Override
                //    protected void done() {
                layout.enableAll();
                layout.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
                //    }
                // };
                // worker.execute();
                break;
            }
            case 6: {
                // Rieffetto i test
                // Effettuo tutti i test per verificare il corretto funzionamento
                // del programma
                Layout.clearLogger();
                Test test = new Test();
                test.doAllTest();
                break;
            }
            case 7: {
                // Setto la modalità errore del layout
                // Eseguo le istruzioni che mi permettono di settare
                // il layout in modalità "errore"
                if (timer == null) {
                    if (layout != null) {
                        timer = new Timer();
                        TimerTask task = new ErrorConsoleManager(layout);
                        timer.schedule(task, 0, 500);
                        layout.disableAll();
                    }
                }
                break;
            }
            case 8: {
                // Setto la modalità default del layout
                if (timer != null) {
                    timer.cancel();
                    Layout.setModalityConsole(true);
                    timer = null;
                    layout.enableAll();
                }
                break;
            }
            default: {
                System.out.println("Errore Action Manager code");
            }
        }
    }

    public void setLayout(Layout layout) {
        this.layout = layout;
    }

    /**
     * Effettua le stesse operazioni di doLayout in modalità test
     * Non posso effetture le operazioni in nuovi thread perchè
     * deve essere tutto sinronizzato
     * @return
     */
    public static Object doActionTest(int Action, Object params) {
        switch (Action) {
            case 1: {
                // Aggiono i file dei bug
                BugUpdater bugUpdater = new BugUpdater();
                bugUpdater.updateTest();
                break;
            }
            case 2: {
                // Analizzo i file
                StartAnalyze analyzer = new StartAnalyze();
                analyzer.start(true);
                break;
            }
            case 3: {
                // Creo il database
                // Creo la query sql per creare il database

                // Recupero le classificazioni degli script
                ScriptClassification scriptClass = new ScriptClassification();
                Hashtable classification = scriptClass.getClassification();
                // Creo il database
                SqliteDb db = new SqliteDb(true);

                Boolean staticPriority = (Boolean) params;

                // Inizializzo le priorità a 1
                SqliteDb.setUseDefaultPriority(staticPriority);
                db.createDbScript(StartAnalyze.finalPriority, classification);
                return null;
            }
            case 4: {
                // Slavo il file sql
                SqliteDb.saveQueryToFile(true);
                break;
            }
            case 5: {
                //Creao il database
                try {
                    SqliteDb.createSqliteDb();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                break;
            }
            default: {
                return null;
            }
        }
        return null;
    }
}
TOP

Related Classes of LayoutMain.ActionManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.