Revision 1084 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.app/org.gvsig.scripting.app.mainplugin/src/main/java/org/gvsig/scripting/app/extension/ScriptingUtils.java

View differences:

ScriptingUtils.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6 1
package org.gvsig.scripting.app.extension;
7 2

  
8 3
import java.io.File;
......
24 19
import java.util.List;
25 20
import java.util.function.Predicate;
26 21
import javax.swing.JOptionPane;
22
import javax.swing.SwingUtilities;
27 23
import org.apache.commons.io.FileUtils;
28 24
import org.apache.commons.io.FilenameUtils;
29 25
import org.apache.commons.io.IOCase;
30 26
import org.apache.commons.lang3.BooleanUtils;
27
import org.gvsig.scripting.DataFolderFound;
31 28
import org.gvsig.scripting.ScriptingBaseScript;
32 29
import org.gvsig.scripting.ScriptingFolder;
33 30
import org.gvsig.scripting.ScriptingLocator;
......
42 39
import org.gvsig.tools.ToolsLocator;
43 40
import org.gvsig.tools.exception.BaseException;
44 41
import org.gvsig.tools.i18n.I18nManager;
42
import org.gvsig.tools.packageutils.PackageManager;
43
import org.gvsig.tools.packageutils.Version;
45 44
import org.gvsig.tools.swing.api.ToolsSwingLocator;
46 45
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
46
import org.gvsig.tools.swing.api.windowmanager.Dialog;
47 47
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
48
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
48 49
import org.gvsig.tools.task.SimpleTaskStatus;
49 50
import org.gvsig.tools.visitor.VisitCanceledException;
50 51
import org.gvsig.tools.visitor.Visitor;
51 52
import org.slf4j.Logger;
52 53
import org.slf4j.LoggerFactory;
53

  
54
import org.gvsig.tools.util.FolderSet;
55
import org.gvsig.tools.util.impl.DefaultFolderSet;
54 56
/**
55 57
 *
56 58
 * @author jjdelcerro
57 59
 */
60
@SuppressWarnings("UseSpecificCatch")
58 61
public class ScriptingUtils {
59 62
    
60 63
    public static final String SKIP_AUTORUNS = "skipAutoruns";
61 64
    
62
    private static final Logger logger = LoggerFactory.getLogger(ScriptingExtension.class);
65
    private static final Logger LOGGER = LoggerFactory.getLogger(ScriptingExtension.class);
63 66

  
64 67
    private boolean executingAutorunScripts = false;
65 68
    private static boolean composer_initialized = false;
......
84 87
    public static void log(int level, String message, Throwable th) {
85 88
        switch( level ) {
86 89
        case TRACE:
87
            logger.trace(message, th);
90
            LOGGER.trace(message, th);
88 91
            break;
89 92
        case ERROR:
90
            logger.error(message, th);
93
            LOGGER.error(message, th);
91 94
            break;
92 95
        case WARN:
93
            logger.warn(message, th);
96
            LOGGER.warn(message, th);
94 97
            break;
95 98
        default:
96 99
        case INFO:
97
            logger.info(message, th);
100
            LOGGER.info(message, th);
98 101
            break;
99 102
        }
100 103
    }
104
    private String appversion;
105
    private File pluginHomeFolder;
101 106

  
102 107
    public ScriptingUtils() {
103 108
        message = new MessageWait();
......
141 146
    
142 147
    public void initializaPaths(List<File> pluginsFolder, File installFolder, File pluginHoneFolder, String appversion) {
143 148

  
149
        this.appversion = appversion;
150
        this.pluginHomeFolder = pluginHoneFolder;
144 151
        ScriptingManager manager = ScriptingLocator.getManager();
145 152
        manager.setHomeFolder(getScriptsHomeFolder(pluginHoneFolder, appversion));
146 153

  
......
179 186
            try {
180 187
                FileUtils.forceMkdir(localAddonRepositoryFolder);
181 188
            } catch (IOException ex) {
182
                logger.info("Can't create addons folder in '" + localAddonRepositoryFolder.getAbsolutePath() + "'.", ex);
189
                LOGGER.info("Can't create addons folder in '" + localAddonRepositoryFolder.getAbsolutePath() + "'.", ex);
183 190
            }
184 191
        }
185 192
        File initAddonFile = new File(localAddonRepositoryFolder, "__init__.py");
......
187 194
            try {
188 195
                FileUtils.touch(initAddonFile);
189 196
            } catch (IOException ex) {
190
                logger.info("Can't create addons __init__ file in '" + localAddonRepositoryFolder.getAbsolutePath() + "'.", ex);
197
                LOGGER.info("Can't create addons __init__ file in '" + localAddonRepositoryFolder.getAbsolutePath() + "'.", ex);
191 198
            }
192 199
        }
193 200
    }
......
278 285
            status.add();
279 286
            final I18nManager i18nManager = ToolsLocator.getI18nManager();            
280 287
            try {
281
                logger.info("Searching "+title+" scripts...");
288
                LOGGER.info("Searching "+title+" scripts...");
282 289
                dialogs.message(
283 290
                    i18nManager.getTranslation("_Searching_autorun_scripts_Xhorizontal_ellipsisX"),
284 291
                    JOptionPane.INFORMATION_MESSAGE
......
296 303
                            if( script.isEnabled() ) {
297 304
                                scripts.add(script);
298 305
                            } else {
299
                                logger.info("Skip "+title+" script '" + script.getFile().getAbsolutePath() + "'.");
306
                                LOGGER.info("Skip "+title+" script '" + script.getFile().getAbsolutePath() + "'.");
300 307
                            }
301 308
                        }
302 309
                    }
......
318 325
                
319 326
            } finally {
320 327
                composer_initialized = true;
321
                logger.info("Running "+title+" scripts terminated.");
328
                LOGGER.info("Running "+title+" scripts terminated.");
322 329
                dialogs.message("", JOptionPane.INFORMATION_MESSAGE);
323 330
                status.terminate();
324 331
            }
......
421 428
                        status.setCurValue(n++);
422 429
                    }
423 430
                    try {
424
                        logger.info("running " + title + " script '" + script.getFile().getAbsolutePath() + "' (" + getScriptOrderKey(script) + ", " + script.getIsolationGroup() + ").");
431
                        LOGGER.info("running " + title + " script '" + script.getFile().getAbsolutePath() + "' (" + getScriptOrderKey(script) + ", " + script.getIsolationGroup() + ").");
425 432
                        dialogs.message(
426 433
                                i18nManager.getTranslation(
427 434
                                        "_Running_autorun_script_from_XnameX",
......
436 443
                    try {
437 444
                        script.run();
438 445
                    } catch (Exception ex) {
439
                        logger.warn("Can't execute " + title + " from '" + script.getFile().getAbsolutePath() + "'.", ex);
446
                        LOGGER.warn("Can't execute " + title + " from '" + script.getFile().getAbsolutePath() + "'.", ex);
440 447
                    }
441 448
                }
442 449
            }
......
488 495
                                if (script.isEnabled()) {
489 496
                                    scripts.add(script);
490 497
                                } else {
491
                                    logger.info("Skip " + title + " script '" + file.getAbsolutePath() + "'.");
498
                                    LOGGER.info("Skip " + title + " script '" + file.getAbsolutePath() + "'.");
492 499
                                }
493 500
                            }
494 501
                        }
......
506 513
                        Files.walkFileTree(Paths.get(folder.getFile().toURI()), opts, Integer.MAX_VALUE, visitor);
507 514
                    }
508 515
                } catch (Exception ex) {
509
                    logger.warn("Can't execute " + title + " in home.", ex);
516
                    LOGGER.warn("Can't execute " + title + " in home.", ex);
510 517
                }
511 518
                sortScripts(scripts);
512 519
                executeScripts(scripts, null);
513 520

  
514 521
            } finally {
515
                logger.info("Running " + title + " scripts terminated.");
522
                LOGGER.info("Running " + title + " scripts terminated.");
516 523
                dialogs.message("", JOptionPane.INFORMATION_MESSAGE);
517 524
                executingAutorunScripts = false;
518 525
            }
526
            checkDataFoldersVersions();
519 527
        }
520 528

  
521 529
    }
530
    
531
    private void checkDataFoldersVersions() {
532
        final ScriptingManager manager = ScriptingLocator.getManager();
533
        PackageManager versionFactory = ToolsLocator.getPackageManager();
534
        Version currentVersion = versionFactory.createVersion(this.appversion);
535
        FolderSet folders = new DefaultFolderSet();
536
        folders.add(this.pluginHomeFolder);
537
        final List<DataFolderFound> dataFoldersFound = manager.searchOldVersions(currentVersion, folders);
538
        if( dataFoldersFound == null || dataFoldersFound.isEmpty() ) {
539
            return;
540
        }
541
        Runnable askUser = new Runnable() {
542
            @Override
543
            public void run() {
544
                WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
545
                DataFoldersRecoverPanel panel = new DataFoldersRecoverPanel(dataFoldersFound);
546
                Dialog dialog = winManager.createDialog(
547
                        panel,
548
                        "Recuperacion de preferencias",
549
                        "Seleccione los complementos de los que recuperar las preferencias.",
550
                        WindowManager_v2.BUTTONS_OK_CANCEL
551
                );
552
                dialog.show(WindowManager.MODE.DIALOG);
553
                if (dialog.getAction() == WindowManager_v2.BUTTON_OK) {
554
                    List<DataFolderFound> toRestore = panel.getSelectedDataFolders();
555
                    for (DataFolderFound dataFolderFound : dataFoldersFound) {
556
                        if (toRestore.contains(dataFolderFound)) {
557
                            dataFolderFound.restore();
558
                        } else {
559
                            dataFolderFound.leave();
560
                        }
561
                    }
562
                }
563
            }
564
        };
565
        if( SwingUtilities.isEventDispatchThread() ) {
566
            askUser.run();
567
        } else {
568
            SwingUtilities.invokeLater(askUser);
569
        }
570
    }
522 571
}

Also available in: Unified diff