Example usage for javax.swing SwingWorker SwingWorker

List of usage examples for javax.swing SwingWorker SwingWorker

Introduction

In this page you can find the example usage for javax.swing SwingWorker SwingWorker.

Prototype

public SwingWorker() 

Source Link

Document

Constructs this SwingWorker .

Usage

From source file:org.yccheok.jstock.gui.OptionsNetworkJPanel.java

private SwingWorker getTestConnectionSwingWorker() {
    SwingWorker<Boolean, Void> worker = new SwingWorker<Boolean, Void>() {
        @Override/*from  www .  jav a2  s. c om*/
        public Boolean doInBackground() {
            // Store old proxy server and old proxy auth information.
            final String httpproxyHost = System.getProperties().getProperty("http.proxyHost");
            final String httpproxyPort = System.getProperties().getProperty("http.proxyPort");
            final String oldProxyAuthUsername = JStock.instance().getJStockOptions().getProxyAuthUserName();
            final String oldProxyAuthPassword = JStock.instance().getJStockOptions().getProxyAuthPassword();
            final boolean oldIsProxyAuthEnabled = JStock.instance().getJStockOptions().isProxyAuthEnabled();

            // Set new proxy auth information.
            final String newProxyAuthUsername = jTextField2.getText() != null ? jTextField2.getText() : "";
            final String newProxyAuthPassword = Utils.encrypt(new String(jPasswordField1.getPassword()));
            JStock.instance().getJStockOptions().setProxyAuthUserName(newProxyAuthUsername);
            JStock.instance().getJStockOptions().setProxyAuthPassword(newProxyAuthPassword);
            JStock.instance().getJStockOptions().setIsProxyAuthEnabled(jCheckBox1.isSelected());

            // Set new proxy server information.
            if ((jTextField1.getText().length() > 0)
                    && org.yccheok.jstock.engine.Utils.isValidPortNumber(jFormattedTextField1.getText())) {
                System.getProperties().put("http.proxyHost", jTextField1.getText());
                System.getProperties().put("http.proxyPort", jFormattedTextField1.getText());
            } else {
                System.getProperties().remove("http.proxyHost");
                System.getProperties().remove("http.proxyPort");
            }

            try {
                final String request = "http://www.google.com";
                // We are not interested at the returned content at all. We just want
                // to know whether there will be any exception being thrown, during
                // the process of getting respond.
                final boolean success = (null != org.yccheok.jstock.gui.Utils
                        .getResponseBodyAsStringBasedOnProxyAuthOption(request));

                return success;
            } catch (Exception exp) {
                log.error(null, exp);
            } finally {
                // Restore.
                JStock.instance().getJStockOptions().setProxyAuthUserName(oldProxyAuthUsername);
                JStock.instance().getJStockOptions().setProxyAuthPassword(oldProxyAuthPassword);
                JStock.instance().getJStockOptions().setIsProxyAuthEnabled(oldIsProxyAuthEnabled);

                if (httpproxyHost != null) {
                    System.getProperties().put("http.proxyHost", httpproxyHost);
                } else {
                    System.getProperties().remove("http.proxyHost");
                }

                if (httpproxyPort != null) {
                    System.getProperties().put("http.proxyPort", httpproxyPort);
                } else {
                    System.getProperties().remove("http.proxyPort");
                }
            }
            return false;
        }

        @Override
        public void done() {
            // The done Method: When you are informed that the SwingWorker 
            // is done via a property change or via the SwingWorker object's
            // done method, you need to be aware that the get methods can 
            // throw a CancellationException. A CancellationException is a 
            // RuntimeException, which means you do not need to declare it 
            // thrown and you do not need to catch it. Instead, you should 
            // test the SwingWorker using the isCancelled method before you 
            // use the get method.
            if (this.isCancelled()) {
                return;
            }

            Boolean status = null;
            try {
                status = get();
            } catch (InterruptedException ex) {
                log.error(null, ex);
            } catch (ExecutionException ex) {
                log.error(null, ex);
            } catch (CancellationException ex) {
                // Some developers suggest to catch this exception, instead of
                // checking on isCancelled. As I am not confident by merely
                // isCancelled check can prevent CancellationException (What
                // if cancellation is happen just after isCancelled check?),
                // I will apply both techniques.
                log.error(null, ex);
            }

            OptionsNetworkJPanel.this.updateGUIState();

            if (status == null || status == false) {
                JOptionPane.showMessageDialog(OptionsNetworkJPanel.this,
                        MessagesBundle.getString("warning_message_wrong_proxy_or_port"),
                        MessagesBundle.getString("warning_title_wrong_proxy_or_port"),
                        JOptionPane.WARNING_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(OptionsNetworkJPanel.this,
                        MessagesBundle.getString("info_message_correct_proxy_and_port"),
                        MessagesBundle.getString("info_title_correct_proxy_and_port"),
                        JOptionPane.INFORMATION_MESSAGE);
            }
        }
    };

    return worker;
}

From source file:org.yccheok.jstock.gui.OptionsUpdateJPanel.java

private SwingWorker getLatestNewsTaskSwingWorker() {
    SwingWorker<String, Void> worker = new SwingWorker<String, Void>() {

        @Override/*from   w ww.j  a  v a  2  s.c  om*/
        protected void done() {
            // The done Method: When you are informed that the SwingWorker
            // is done via a property change or via the SwingWorker object's
            // done method, you need to be aware that the get methods can
            // throw a CancellationException. A CancellationException is a
            // RuntimeException, which means you do not need to declare it
            // thrown and you do not need to catch it. Instead, you should
            // test the SwingWorker using the isCancelled method before you
            // use the get method.
            if (this.isCancelled()) {
                // Cancelled by user explicitly. Do not perform any GUI update.
                // No pop-up message.
                return;
            }

            String status = null;
            try {
                status = get();
            } catch (InterruptedException ex) {
                log.error(null, ex);
            } catch (ExecutionException ex) {
                log.error(null, ex);
            } catch (CancellationException ex) {
                // Some developers suggest to catch this exception, instead of
                // checking on isCancelled. As I am not confident by merely
                // isCancelled check can prevent CancellationException (What
                // if cancellation is happen just after isCancelled check?),
                // I will apply both techniques. 
                log.error(null, ex);
            }

            OptionsUpdateJPanel.this.updateGUIState();

            if (status == null) {
                JOptionPane.showMessageDialog(OptionsUpdateJPanel.this,
                        MessagesBundle.getString("error_message_error_in_getting_latest_news"),
                        MessagesBundle.getString("error_title_error_in_getting_latest_news"),
                        JOptionPane.ERROR_MESSAGE);
            } else {
                AutoUpdateNewsJDialog dialog = new AutoUpdateNewsJDialog(JStock.instance(), true);
                dialog.setNews(status);
                dialog.setVisible(true);
            }
        }

        @Override
        protected String doInBackground() {
            if (!isCancelled()) {
                final java.util.Map<String, String> map = Utils
                        .getUUIDValue(org.yccheok.jstock.network.Utils.getURL(Type.NEWS_INFORMATION_TXT));
                final String location = map.get("news_url");
                if (location == null) {
                    return null;
                }
                final String respond = org.yccheok.jstock.gui.Utils
                        .getResponseBodyAsStringBasedOnProxyAuthOption(location);
                if (respond == null) {
                    return null;
                }
                if (respond.indexOf(Utils.getJStockUUID()) < 0) {
                    return null;
                }
                return respond;
            }
            return null;
        }

    };
    return worker;
}

From source file:org.yccheok.jstock.gui.SaveToCloudJDialog.java

private SwingWorker<Boolean, Status> getSaveToCloudTask(final String username) {
    SwingWorker<Boolean, Status> worker = new SwingWorker<Boolean, Status>() {
        @Override/*  w w  w. j  a  v  a  2  s  .  c om*/
        protected void done() {
            boolean result = false;

            // Some developers suggest to catch this exception, instead of
            // checking on isCancelled. As I am not confident by merely
            // isCancelled check can prevent CancellationException (What
            // if cancellation is happen just after isCancelled check?),
            // I will apply both techniques. 
            if (this.isCancelled() == false) {
                try {
                    result = this.get();
                } catch (InterruptedException ex) {
                    log.error(null, ex);
                } catch (ExecutionException ex) {
                    log.error(null, ex);
                } catch (CancellationException ex) {
                    log.error(null, ex);
                }
            }

            jButton1.setEnabled(true);

            if (result == true) {
                JOptionPane.showMessageDialog(SaveToCloudJDialog.this,
                        GUIBundle.getString("SaveToCloudJDialog_Success"));

                // Close the dialog once cloud operation success.
                setVisible(false);
                dispose();
            }
        }

        @Override
        protected void process(java.util.List<Status> statuses) {
            for (Status status : statuses) {
                writeToMemoryLog(status.message);
                jLabel3.setText(status.message);
                jLabel4.setIcon(status.icon);
                jLabel3.setVisible(true);
                jLabel4.setVisible(true);
                if (status.icon == Icons.ERROR || status.icon == Icons.WARNING) {
                    jLabel3.setForeground(Color.RED);
                    jLabel5.setVisible(true);
                } else {
                    jLabel3.setForeground(Color.BLUE);
                    jLabel5.setVisible(false);
                }
            }
        }

        @Override
        protected Boolean doInBackground() {
            if (isCancelled()) {
                return false;
            }

            memoryLog.clear();

            publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_PreparingData..."), Icons.BUSY));

            JStock.instance().commitBeforeSaveToCloud();

            // Passing null. The file will be deleted automatically when the
            // app quit.
            final File zipFile = getJStockZipFile(null);

            // Place isCancelled check after time consuming operation.
            // Not the best way, but perhaps the easiest way to cancel
            // the operation.
            if (isCancelled()) {
                return false;
            }

            if (zipFile == null) {
                publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_PreparingDataFail"),
                        Icons.ERROR));
                return false;
            }

            publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_VerifyGoogleAccount..."),
                    Icons.BUSY));

            if (false == Utils.saveToGoogleDrive(credentialEx.first, zipFile)) {
                publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_VerifyGoogleAccountFail"),
                        Icons.ERROR));
                return false;
            }

            // To serve legacy Android app.
            if (false == Utils.saveToLegacyGoogleDrive(credentialEx.first, zipFile)) {
                publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_VerifyGoogleAccountFail"),
                        Icons.ERROR));
                return false;
            }

            publish(Status.newInstance(GUIBundle.getString("SaveToCloudJDialog_Success"), Icons.OK));

            return true;
        }
    };
    return worker;
}

From source file:org.yccheok.jstock.gui.StockServerFactoryJRadioButton.java

private void initSwingWorker() {
    SwingWorker worker = new SwingWorker<Health, Void>() {
        @Override//w ww  .j a  v  a2s  . co  m
        public Health doInBackground() {
            return getServerHealth();
        }

        @Override
        public void done() {
            // The done Method: When you are informed that the SwingWorker
            // is done via a property change or via the SwingWorker object's
            // done method, you need to be aware that the get methods can
            // throw a CancellationException. A CancellationException is a
            // RuntimeException, which means you do not need to declare it
            // thrown and you do not need to catch it. Instead, you should
            // test the SwingWorker using the isCancelled method before you
            // use the get method.
            if (this.isCancelled()) {
                return;
            }

            Health health = null;
            try {
                health = get();
            } catch (InterruptedException ex) {
                log.error(null, ex);
            } catch (ExecutionException ex) {
                log.error(null, ex);
            } catch (CancellationException ex) {
                // Some developers suggest to catch this exception, instead of 
                // checking on isCancelled. As I am not confident by merely 
                // isCancelled check can prevent CancellationException (What 
                // if cancellation is happen just after isCancelled check?),
                // I will apply both techniques.
                log.error(null, ex);
            }

            if (health == null || health.isGood() == false) {
                StockServerFactoryJRadioButton.this.setStatus(Status.Failed);
            } else {
                StockServerFactoryJRadioButton.this.setStatus(Status.Success);
            }
            StockServerFactoryJRadioButton.this.setToolTipText(toHTML(health));
        }
    };

    worker.execute();
}

From source file:org.zaproxy.zap.extension.autoupdate.ExtensionAutoUpdate.java

boolean uninstallAddOnsWithView(final Window caller, final Set<AddOn> addOns, final boolean updates,
        final Set<AddOn> failedUninstallations) {
    if (addOns == null || addOns.isEmpty()) {
        return true;
    }//from  w  ww. j  av a2 s.  co  m

    if (!EventQueue.isDispatchThread()) {
        try {
            EventQueue.invokeAndWait(new Runnable() {

                @Override
                public void run() {
                    uninstallAddOnsWithView(caller, addOns, updates, failedUninstallations);
                }
            });
        } catch (InvocationTargetException | InterruptedException e) {
            logger.error("Failed to uninstall add-ons:", e);
            return false;
        }
        return failedUninstallations.isEmpty();
    }

    final Window parent = getWindowParent(caller);

    final UninstallationProgressDialogue waitDialogue = new UninstallationProgressDialogue(parent, addOns);
    waitDialogue.addAddOnUninstallListener(new AddOnUninstallListener() {

        @Override
        public void uninstallingAddOn(AddOn addOn, boolean updating) {
            if (updating) {
                String message = MessageFormat.format(
                        Constant.messages.getString("cfu.output.replacing") + "\n", addOn.getName(),
                        Integer.valueOf(addOn.getFileVersion()));
                getView().getOutputPanel().append(message);
            }
        }

        @Override
        public void addOnUninstalled(AddOn addOn, boolean update, boolean uninstalled) {
            if (uninstalled) {
                if (!update && addonsDialog != null) {
                    addonsDialog.notifyAddOnUninstalled(addOn);
                }

                String message = MessageFormat.format(
                        Constant.messages.getString("cfu.output.uninstalled") + "\n", addOn.getName(),
                        Integer.valueOf(addOn.getFileVersion()));
                getView().getOutputPanel().append(message);
            } else {
                if (addonsDialog != null) {
                    addonsDialog.notifyAddOnFailedUninstallation(addOn);
                }

                String message;
                if (update) {
                    message = MessageFormat.format(
                            Constant.messages.getString("cfu.output.replace.failed") + "\n", addOn.getName(),
                            Integer.valueOf(addOn.getFileVersion()));
                } else {
                    message = MessageFormat.format(
                            Constant.messages.getString("cfu.output.uninstall.failed") + "\n", addOn.getName(),
                            Integer.valueOf(addOn.getFileVersion()));
                }
                getView().getOutputPanel().append(message);
            }
        }

    });

    SwingWorker<Void, UninstallationProgressEvent> a = new SwingWorker<Void, UninstallationProgressEvent>() {

        @Override
        protected void process(List<UninstallationProgressEvent> events) {
            waitDialogue.update(events);
        }

        @Override
        protected Void doInBackground() {
            UninstallationProgressHandler progressHandler = new UninstallationProgressHandler() {

                @Override
                protected void publishEvent(UninstallationProgressEvent event) {
                    publish(event);
                }
            };

            for (AddOn addOn : addOns) {
                if (!uninstall(addOn, updates, progressHandler)) {
                    failedUninstallations.add(addOn);
                }
            }

            if (!failedUninstallations.isEmpty()) {
                logger.warn("Not all add-ons were successfully uninstalled: " + failedUninstallations);
            }

            return null;
        }
    };

    waitDialogue.bind(a);
    a.execute();
    waitDialogue.setSynchronous(updates);
    waitDialogue.setVisible(true);

    return failedUninstallations.isEmpty();
}

From source file:org.zaproxy.zap.extension.plugnhack.MonitoredPagesManager.java

protected void setMonitorFlags() {
    // Do in a background thread in case the tree is huge ;)
    SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
        @Override//from  w ww .  ja v  a 2s .com
        protected Void doInBackground() throws Exception {
            logger.debug("Refreshing tree with monitor client flags");
            setMonitorFlags((SiteNode) Model.getSingleton().getSession().getSiteTree().getRoot(), false);
            return null;
        }
    };
    worker.execute();
}

From source file:pcgui.SetupParametersPanel.java

private void runModel() {

    //retrieve master configuration
    ArrayList<ArrayList<Object>> mod = model.getData();
    //create a new list and check for dependencies
    ArrayList<Symbol> list = new ArrayList<Symbol>();
    //independent variable list
    ArrayList<Symbol> ivList = new ArrayList<Symbol>();
    //step variable list
    ArrayList<Symbol> stepList = new ArrayList<Symbol>();
    //dependent list
    ArrayList<Symbol> depList = new ArrayList<Symbol>();
    //output tracking
    ArrayList<Symbol> trackedSymbols = new ArrayList<Symbol>();
    Symbol tempSym = null;// w w  w .j av  a 2s .c  o m
    //step variable counter to be used for making combinations
    int stepVarCount = 0;
    long stepCombinations = 1;
    TextParser textParser = new TextParser();
    compileSuccess = true;
    for (ArrayList<Object> rowData : mod) {
        tempSym = paramList.get(mod.indexOf(rowData));
        if ("Manual".equals((String) rowData.get(2))) {
            System.out.println("Found Customized Symbol : " + rowData.get(0));
            System.out.println("Value : " + rowData.get(3) + ": type=" + rowData.get(3).getClass());

            tempSym.mode = "Manual";
            String data = (String) rowData.get(3);

            //checking dependent variables
            if (data != null && !data.isEmpty()) {
                //dependent
                if (hashTable.containsKey(data)) {
                    tempSym.setDependent(true);
                    depList.add(tempSym);
                } else {
                    //independents
                    tempSym.setDependent(false);
                    tempSym.set(data);
                    ivList.add(tempSym);
                }
            }
        } else if ("External".equals((String) rowData.get(2))) {
            System.out.println("Found External Symbol : " + rowData.get(0));
            System.out.println("External : " + rowData.get(3) + ": type=" + rowData.get(3).getClass());

            if (!(((String) rowData.get(4)).isEmpty())) {

                tempSym.externalFile = (String) rowData.get(4);
                tempSym.set(tempSym.externalFile);
                tempSym.mode = "External";
                if (tempSym.externalFile.endsWith(".xls") || tempSym.externalFile.endsWith(".xlsx")) {

                    if (tempSym.excelFileRange.isEmpty()) {
                        // TODO show an error dialog
                        System.err.println("Error user missed excel range arguments");
                        JOptionPane.showMessageDialog(new JFrame(), "Error user missed excel range arguments");
                        return;
                    } else {
                        tempSym.excelFileRange = (String) rowData.get(5);
                        //'[Daten_10$B'+(i)+':B'+(5+n)+']'
                        //user has to add quote before the 1st + and after the last +
                        //the data file used should be inside Models/Data folder
                        tempSym.set("Models//Data//" + tempSym.externalFile + "::" + tempSym.excelFileRange);

                    }
                } else {
                    //for non excel files
                    tempSym.set("Models//Data//" + tempSym.externalFile);

                }
            } else {
                System.err.println("Error user missed excel file");
                JOptionPane.showMessageDialog(new JFrame(),
                        "Please enter external file for variable : " + tempSym.name);
                return;
            }
            ivList.add(tempSym);
            list.add(tempSym);
        } else if ("Randomized".equals((String) rowData.get(2))) {
            System.out.println("Found Randomized Symbol : " + rowData.get(0));
            System.out.println("Value : " + rowData.get(6));

            boolean isValid = textParser.validate((String) rowData.get(6));
            if (isValid) {

                //saving the array declaration parameters
                if (((String) rowData.get(1)).trim().startsWith("array")) {
                    System.out.println("Found randomized array : " + tempSym.name);
                    //found an array
                    tempSym.isArray = true;
                    List<String> arrayParams = parseArrayParam((String) rowData.get(1));
                    tempSym.arrayParams = arrayParams;
                    System.out.println("Param list : ");
                    for (Object obj : tempSym.arrayParams) {
                        //check if any of the param is symbol
                        if (hashTable.containsKey((String) obj)) {
                            tempSym.isDependentDimension = true;
                            depList.add(tempSym);
                            break;
                        }
                        System.out.println((String) obj);
                    }
                    //add to independent variable list if none of the dimension is based on variable
                    if (!tempSym.isDependentDimension) {
                        ivList.add(tempSym);
                    }

                }
                Distribution dist = textParser.getDistribution((String) rowData.get(6));
                if ("Step".equalsIgnoreCase(dist.getDistribution())) {
                    System.err.println("Error: User entered step distribution in Randomized variable");
                    JOptionPane.showMessageDialog(new JFrame(),
                            "Please enter random distribution only" + " for variable : " + tempSym.name);
                    return;
                }
                tempSym.setDistribution(dist);
                tempSym.mode = "Randomized";
                //check dependent variables
                List<String> distParamList = dist.getParamList();
                for (String param : distParamList) {
                    //TODO: if .contains work on Symbol
                    if (hashTable.containsKey(param) && !depList.contains(tempSym)) {
                        tempSym.setDependent(true);
                        depList.add(tempSym);
                        break;
                    }
                }
                //generate apache distribution object for independent vars
                if (!tempSym.isDependent()) {
                    Object apacheDist = generateDistribution(tempSym);
                    tempSym.setApacheDist(apacheDist);
                    if ("StepDistribution".equals(apacheDist.getClass().getSimpleName())) {
                        stepVarCount++;
                        StepDistribution stepDist = (StepDistribution) apacheDist;
                        stepCombinations *= stepDist.getStepCount();

                        tempSym.isStepDist = true;
                        tempSym.setStepDist(stepDist);
                        stepList.add(tempSym);
                    } else if (!ivList.contains(tempSym) && !tempSym.isDependentDimension) {
                        ivList.add(tempSym);
                    }
                }
                list.add(tempSym);
            } else {
                System.err.println("Error: User entered unknown distribution for randomized variable");
                JOptionPane.showMessageDialog(new JFrame(),
                        "Please enter random distribution only" + " for variable : " + tempSym.name);
                return;
            }
        } else if ("Step".equals((String) rowData.get(2))) {
            System.out.println("Found Step Symbol : " + rowData.get(0));
            System.out.println("Value : " + rowData.get(6));
            Distribution dist = textParser.getStepDistribution((String) rowData.get(6));
            if (dist == null || !"Step".equalsIgnoreCase(dist.getDistribution())) {
                System.err.println("Error: User entered unknown distribution for step variable");
                JOptionPane.showMessageDialog(new JFrame(),
                        "Please enter random distribution only" + " for variable : " + tempSym.name);
                return;
            }

            boolean isValid = textParser.validateStepDist((String) rowData.get(6));
            if (isValid) {

                //saving the array declaration parameters
                if (((String) rowData.get(1)).trim().startsWith("array")) {
                    //TODO: if this can work for step arrays
                    System.out.println("Found step array : " + tempSym.name);
                    //found an array
                    tempSym.isArray = true;
                    List<String> arrayParams = parseArrayParam((String) rowData.get(1));
                    tempSym.arrayParams = arrayParams;
                    System.out.println("Param list : ");
                    for (Object obj : tempSym.arrayParams) {
                        //check if any of the param is symbol
                        if (hashTable.containsKey((String) obj)) {
                            tempSym.isDependentDimension = true;
                            depList.add(tempSym);
                            break;
                        }
                        System.out.println((String) obj);
                    }
                    //add to independent variable list if none of the dimension is based on variable
                    if (!tempSym.isDependentDimension) {
                        ivList.add(tempSym);
                    }

                }
                tempSym.setDistribution(dist);
                tempSym.mode = "Randomized";
                //check dependent variables
                List<String> distParamList = dist.getParamList();
                for (String param : distParamList) {
                    if (hashTable.containsKey(param) && !depList.contains(tempSym)) {
                        tempSym.setDependent(true);
                        depList.add(tempSym);
                        break;
                    }
                }
                //generate apache distribution object for independent vars
                if (!tempSym.isDependent()) {
                    Object apacheDist = generateDistribution(tempSym);
                    tempSym.setApacheDist(apacheDist);
                    //dual safe check
                    if ("StepDistribution".equals(apacheDist.getClass().getSimpleName())) {
                        stepVarCount++;
                        StepDistribution stepDist = (StepDistribution) apacheDist;
                        stepCombinations *= stepDist.getStepCount();

                        tempSym.isStepDist = true;
                        tempSym.setStepDist(stepDist);
                        stepList.add(tempSym);
                    } else if (!ivList.contains(tempSym) && !tempSym.isDependentDimension) {
                        ivList.add(tempSym);
                    }
                }
                list.add(tempSym);
            } else {
                System.err.println("Error: User entered unknown distribution for randomized variable");
                JOptionPane.showMessageDialog(new JFrame(),
                        "Please enter random distribution only" + " for variable : " + tempSym.name);
                return;
            }
        }
        //add symbol to trackedSymbol list for output tracking
        if (tempSym != null && rowData.get(7) != null && (boolean) rowData.get(7)) {
            trackedSymbols.add(tempSym);
        }

    }

    System.out.println("Total step distribution variables =" + stepVarCount);
    System.out.println("Total step combinations =" + stepCombinations);
    System.out.println("====STEP VARIABLES====");
    for (Symbol sym : stepList) {
        System.out.println(sym.name);
    }

    //resolve dependencies and generate random distributions object
    //list for an instance of execution

    HashMap<String, Integer> map = new HashMap<String, Integer>();
    for (int i = 0; i < stepList.size(); i++) {
        map.put(stepList.get(i).name, getSteppingCount(stepList, i));
        System.out.println(stepList.get(i).name + " has stepping count =" + map.get(stepList.get(i).name));
    }
    int repeatitions = 0;
    try {
        repeatitions = Integer.parseInt(repeatCount.getText());
    } catch (NumberFormatException e) {
        System.err.println("Invalid repeat count");
        JOptionPane.showMessageDialog(new JFrame(), "Please enter integer value for repeat count");
        return;
    }
    //generate instances

    showProgressBar();

    final long totalIterations = repeatitions * stepCombinations;
    final long repeatitionsFinal = repeatitions;
    final long combinations = stepCombinations;

    SwingWorker<Void, Void> executionTask = new SwingWorker<Void, Void>() {

        @Override
        protected Void doInBackground() throws Exception {

            long itNum = 1;
            int itCount = 1;

            System.out.println("Total iterations: " + totalIterations);
            // TODO Auto-generated method stub
            for (int c = 1; c <= repeatitionsFinal; c++) {
                for (int i = 1; i <= combinations; i++) {

                    setProgress((int) (itNum * 100 / totalIterations));
                    //step variables first
                    for (Symbol sym : stepList) {
                        if (map.get(sym.name) == 1 || i % map.get(sym.name) - 1 == 0 || i == 1) {
                            sym.set(sym.getStepDist().sample());
                            hashTable.put(sym.name, sym);
                        }
                        //System.out.println(sym.name+" = "+sym.get());

                    }
                    //independent randomized variables
                    for (Symbol sym : ivList) {
                        if (sym.mode.equals("Randomized")) {
                            Object distObj = sym.getApacheDist();
                            switch (sym.getApacheDist().getClass().getSimpleName()) {
                            case "UniformIntegerDistribution":

                                //case "GeometricDistribution" :

                                //   case "BinomialDistribution"://not implemented yet
                                IntegerDistribution intDist = (IntegerDistribution) distObj;
                                if (sym.isArray) {
                                    //generate Stringified array
                                    String val = generateIndependentArray(sym, intDist);
                                    sym.set(val);
                                    hashTable.put(sym.name, sym);

                                }

                                break;

                            case "LogisticDistribution":

                            case "UniformRealDistribution":

                            case "ExponentialDistribution":

                            case "GammaDistribution":

                            case "NormalDistribution":
                                RealDistribution realDist = (RealDistribution) distObj;
                                if (sym.isArray) {
                                    //generate Stringified array
                                    String val = generateIndependentArray(sym, realDist);
                                    sym.set(val);
                                    hashTable.put(sym.name, sym);

                                }

                                break;

                            default:

                                System.err.println("Unknown distribution");
                                JOptionPane.showMessageDialog(new JFrame(),
                                        "Error occurred : Unknown distribution");
                                return null;
                            }

                        }
                        //System.out.println(sym.name+" = "+sym.get());
                        //other types of independent variable already have values
                    }

                    for (Symbol sym : depList) {

                        if (sym.mode != null && "Manual".equals(sym.mode)) {
                            //value depends on some other value
                            String ref = (String) sym.get();
                            Object val = (Object) hashTable.get(ref);
                            sym.set(val);
                            hashTable.put(sym.name, sym);

                        } else if (sym.mode != null && "Randomized".equals(sym.mode)) {

                            Object distObj = null;
                            //when a random distribution depends on another variable
                            Distribution dist = sym.getDistribution();
                            StringBuilder sb = new StringBuilder();
                            sb.append(dist.getDistribution());
                            sb.append("(");
                            for (String s : dist.getParamList()) {
                                //replacing a dependency by actual value of that variable
                                if (hashTable.containsKey(s)) {
                                    Symbol val = (Symbol) hashTable.get(s);
                                    sb.append((String) val.get());
                                } else {
                                    //this param is a number itself
                                    sb.append(s);
                                }
                                sb.append(",");
                            }
                            //check if param list length = 0
                            if (dist.getParamList() != null && dist.getParamList().size() >= 1) {
                                sb.deleteCharAt(sb.length() - 1);
                            }
                            sb.append(")");
                            if (sym.typeString != null && sym.typeString.contains("integer")) {
                                try {
                                    distObj = textParser.parseText(sb.toString(), TextParser.INTEGER);

                                    sym.setApacheDist(distObj);
                                } catch (Exception e) {
                                    System.err.println(
                                            "Exception occured when trying to get Random distribution for variable"
                                                    + sym.name + "\n" + e.getMessage());
                                    e.printStackTrace();
                                    JOptionPane.showMessageDialog(new JFrame(),
                                            "Error occurred : " + e.getMessage());
                                    return null;
                                }
                            } else {
                                try {
                                    distObj = textParser.parseText(sb.toString(), TextParser.REAL);
                                    sym.setApacheDist(distObj);
                                } catch (Exception e) {
                                    System.err.println(
                                            "Exception occured when trying to get Random distribution for variable"
                                                    + sym.name + "\n" + e.getMessage());
                                    e.printStackTrace();
                                    JOptionPane.showMessageDialog(new JFrame(),
                                            "Error occurred : " + e.getMessage());
                                    return null;
                                }
                            }
                            //generation of actual apache distribution objects

                            switch (distObj.getClass().getSimpleName()) {
                            case "UniformIntegerDistribution":

                                //case "GeometricDistribution" :

                                //case "BinomialDistribution":
                                IntegerDistribution intDist = (IntegerDistribution) distObj;
                                if (sym.isArray) {
                                    //generate Stringified array
                                    String val = generateDependentArray(sym, intDist);
                                    sym.set(val);
                                    hashTable.put(sym.name, sym);

                                }
                                break;

                            case "LogisticDistribution":

                            case "UniformRealDistribution":

                            case "ExponentialDistribution":

                            case "GammaDistribution":

                            case "NormalDistribution":
                                RealDistribution realDist = (RealDistribution) distObj;
                                if (sym.isArray) {
                                    //generate Stringified array
                                    String val = generateDependentArray(sym, realDist);
                                    sym.set(val);
                                    hashTable.put(sym.name, sym);

                                }
                                break;

                            default:

                                System.err.println("Unknown distribution");
                                JOptionPane.showMessageDialog(new JFrame(),
                                        "Error occurred : Unknown distribution");
                            }
                        }

                        //System.out.println(sym.name+" = "+sym.get());

                    }
                    ArrayList<Symbol> instanceList = new ArrayList<Symbol>();
                    instanceList.addAll(stepList);
                    instanceList.addAll(ivList);
                    instanceList.addAll(depList);
                    System.out.println("=======ITERATION " + itCount++ + "=======");
                    System.out.println("=======instanceList.size =" + instanceList.size() + " =======");
                    for (Symbol sym : instanceList) {
                        System.out.println(sym.name + " = " + sym.get());
                    }
                    //runModel here
                    try {

                        //TODO anshul: pass output variables to be written to excel
                        System.out.println("Tracked output symbols");
                        for (Symbol sym : trackedSymbols) {
                            System.out.println(sym.name);
                        }
                        HashMap<String, OutputParams> l = parser.changeModel(instanceList, trackedSymbols,
                                itNum);

                        if (l == null) {
                            compileSuccess = false;
                            break;
                        }
                    } catch (/*XPRMCompileException | */XPRMLicenseError | IOException e) {
                        e.printStackTrace();
                        JOptionPane.showMessageDialog(new JFrame(), "Error occurred : " + e.getMessage());
                        compileSuccess = false;
                        break;
                    }
                    itNum++;
                }
            }
            this.notifyAll();
            done();
            return null;
        }

        @Override
        protected void done() {

            super.done();
            //check if compilation was successful
            if (compileSuccess) {
                ModelSaver.saveModelResult();
                visPanel.setTrackedVariables(trackedSymbols);
                mapVisPanel.setTrackedVariables(trackedSymbols);
                JOptionPane.showMessageDialog(new JFrame("Success"),
                        "Model execution completed.\nOutput written to excel file : " + outputFile);

            } else {
                //Error popup should have been shown by ModelParser
                System.err.println("There was an error while running the model.");
                return;
            }
            if (progressFrame != null) {
                progressFrame.dispose();
            }
        }

    };

    executionTask.addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if ("progress" == evt.getPropertyName()) {
                int progress = (Integer) evt.getNewValue();
                if (pbar != null)
                    pbar.setValue(progress);
                if (taskOutput != null)
                    taskOutput.append(String.format("Completed %d%% of task.\n", executionTask.getProgress()));
            }
        }
    });
    executionTask.execute();

}

From source file:pl.exsio.ck.logging.presenter.LogPresenterImpl.java

@Override
public void log(final String msg) {
    SwingWorker worker = new SwingWorker() {

        @Override/*w  ww . ja  va  2s . c o  m*/
        protected Object doInBackground() throws Exception {

            view.getLogArea().append(sdf.format(new Date()) + ": " + msg + "\n");
            return null;
        }

    };
    worker.execute();
}

From source file:pl.exsio.ck.logging.presenter.LogPresenterImpl.java

@Override
public void clean() {
    SwingWorker worker = new SwingWorker() {

        @Override/* w w w. j av a2  s .  c  o  m*/
        protected Object doInBackground() throws Exception {
            view.getLogArea().setText("");
            return null;
        }

    };
    worker.execute();
}

From source file:pl.otros.vfs.browser.preview.PreviewListener.java

private void makePreview(final FileObject fileObjectToPreview) {
    if (worker != null) {
        worker.cancel(false);//from www .  j a  va2s  . c  o  m
    }
    worker = new SwingWorker<PreviewStatus, PreviewStatus>() {
        private int previewLimit = 20 * 1024;
        private String name = fileObjectToPreview.getName().getBaseName();

        @Override
        protected PreviewStatus doInBackground() throws Exception {
            publish(new PreviewStatus(State.NOT_STARTED, 0, 1, KB, name, EMPTY_BYTE_ARRAY));
            for (int i = 0; i < 5; i++) {
                Thread.sleep(100);
                if (isCancelled()) {
                    return new PreviewStatus(State.CANCELLED, 0, previewLimit / 1024, KB, name,
                            EMPTY_BYTE_ARRAY);
                }
            }
            ByteArrayOutputStream outputStreamRef = null;
            try {
                try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(previewLimit);
                        InputStream inputStream = fileObjectToPreview.getContent().getInputStream()) {
                    outputStreamRef = outputStream;
                    byte[] buff = new byte[512];
                    int read;
                    int max = inputStream.available();
                    max = max == 0 ? previewLimit : Math.min(max, previewLimit);
                    while ((read = inputStream.read(buff)) > 0 && outputStream.size() < previewLimit) {
                        if (isCancelled()) {
                            return new PreviewStatus(State.CANCELLED, 0, max / 1024, KB, name,
                                    EMPTY_BYTE_ARRAY);
                        }
                        outputStream.write(buff, 0, read);
                        publish(new PreviewStatus(State.LOADING, outputStream.size() / 1024, max / 1024, KB,
                                name, outputStream.toByteArray()));
                    }
                }
            } catch (Exception e) {
                LOGGER.error("Exception when downloading preview", e);
                return new PreviewStatus(State.ERROR, outputStreamRef.size() / 1024,
                        outputStreamRef.size() / 1024, KB, name, outputStreamRef.toByteArray());
            }

            return new PreviewStatus(State.FINISHED, outputStreamRef.size() / 1024,
                    outputStreamRef.size() / 1024, KB, name, outputStreamRef.toByteArray());
        }

        @Override
        protected void done() {
            try {
                if (!isCancelled()) {
                    PreviewStatus previewStatus = get();
                    previewComponent.setPreviewStatus(previewStatus);
                }
            } catch (Exception e) {
                LOGGER.error("Exception when getting result of preview downloading", e);
            }
        }

        @Override
        protected void process(List<PreviewStatus> chunks) {
            PreviewStatus previewStatus = chunks.get(chunks.size() - 1);
            previewComponent.setPreviewStatus(previewStatus);
        }
    };
    executor.execute(worker);

}