Revision 42200 trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/impl/DefaultPluginsManager.java

View differences:

DefaultPluginsManager.java
27 27
import java.io.IOException;
28 28
import java.lang.reflect.InvocationTargetException;
29 29
import java.util.ArrayList;
30
import java.util.Arrays;
30 31
import java.util.Collections;
31 32
import java.util.Enumeration;
32 33
import java.util.Iterator;
33 34
import java.util.List;
34 35

  
35 36
import javax.swing.SwingUtilities;
37

  
36 38
import org.apache.commons.io.FileUtils;
39
import org.jfree.util.Log;
37 40

  
38 41
import org.gvsig.andami.Launcher;
39 42
import org.gvsig.andami.PluginServices;
......
46 49
import org.gvsig.andami.plugins.Extension;
47 50
import org.gvsig.andami.plugins.IExtension;
48 51
import org.gvsig.andami.plugins.PluginClassLoader;
52
import org.gvsig.andami.plugins.status.IExtensionStatus;
53
import org.gvsig.andami.plugins.status.IUnsavedData;
49 54
import org.gvsig.installer.lib.api.PackageInfo;
50 55
import org.gvsig.installer.lib.api.Version;
51 56
import org.gvsig.tools.ToolsLocator;
52 57
import org.gvsig.tools.packageutils.PackageManager;
58

  
53 59
import org.slf4j.Logger;
54 60
import org.slf4j.LoggerFactory;
55 61

  
......
340 346
        return version;
341 347
    }
342 348

  
349
    public List<IUnsavedData> getUnsavedData() {
350
        List<IUnsavedData> unsavedDatas = new ArrayList<IUnsavedData>();
351
        Iterator<IExtension> extensions = getExtensions();
352
        while(extensions.hasNext()){
353
            IExtension extension = extensions.next();
354
            IExtensionStatus status = extension.getStatus();
355
            if(status != null && status.hasUnsavedData()){
356
              IUnsavedData[] unsavedData = status.getUnsavedData();
357
              if (unsavedData != null){
358
                  unsavedDatas.addAll(Arrays.asList(unsavedData));
359
              }
360
            }
361
        }
362
        return unsavedDatas;
363
    }
364

  
365
    public void saveUnsavedData(List<IUnsavedData> unsavedData) throws UnsavedDataException {
366
        List<IUnsavedData> errors = new ArrayList<IUnsavedData>();
367

  
368
        for (Iterator iterator = unsavedData.iterator(); iterator.hasNext();) {
369
            IUnsavedData itemUnsavedData = (IUnsavedData) iterator.next();
370
            try {
371
                itemUnsavedData.saveData();
372
            } catch (Exception e) {
373
                errors.add(itemUnsavedData);
374
                logger.warn("Can't save "+itemUnsavedData.getResourceName());
375
            }
376
        }
377
        if(!errors.isEmpty()){
378
            throw new UnsavedDataException(errors);
379
        }
380
    }
343 381
}

Also available in: Unified diff