Revision 44397

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DatabaseWorkspaceStoresRepository.java
1 1
package org.gvsig.fmap.dal.impl;
2 2

  
3
import java.io.File;
3 4
import org.gvsig.fmap.dal.DatabaseWorkspaceManager;
4 5
import java.util.HashMap;
5 6
import java.util.Map;
7
import org.gvsig.expressionevaluator.ExpressionUtils;
6 8
import org.gvsig.fmap.dal.AbstractStoresRepository;
7 9
import org.gvsig.fmap.dal.DALLocator;
8 10
import org.gvsig.fmap.dal.DataManager;
9
import org.gvsig.fmap.dal.DataServerExplorer;
10
import org.gvsig.fmap.dal.DataServerExplorerParameters;
11 11
import org.gvsig.fmap.dal.DataStoreParameters;
12
import org.gvsig.fmap.dal.DataTypes;
12 13
import org.gvsig.fmap.dal.StoresRepository;
13 14
import org.gvsig.fmap.dal.feature.Feature;
14 15
import org.gvsig.fmap.dal.feature.FeatureStore;
......
21 22
import org.slf4j.Logger;
22 23
import org.slf4j.LoggerFactory;
23 24
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.FIELD_REPOSITORY_PARAMETERS;
25
import org.gvsig.tools.dynobject.DynClass;
26
import org.gvsig.tools.dynobject.DynField;
24 27

  
25 28
/**
26 29
 *
......
33 36
    {
34 37
    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultDatabaseWorkspaceManager.class);
35 38

  
36
    private final DataServerExplorerParameters connection;
39
    private final DatabaseWorkspaceManager workspace;
37 40
    private Map<String,DataStoreParameters> repository;
38 41

  
39
    public DatabaseWorkspaceStoresRepository(String name, String label, DataServerExplorerParameters connection) {
42
    public DatabaseWorkspaceStoresRepository(String name, String label, DatabaseWorkspaceManager workspace) {
40 43
        super(name, label);
41
        this.connection = connection;
44
        this.workspace = workspace;
42 45
        this.repository = null;
43 46
    }
44 47

  
45
    private FeatureStore getTable() {
46
        String tableName = DatabaseWorkspaceManager.TABLE_REPOSITORY_NAME;
47
        try {
48
            DataManager dataManager = DALLocator.getDataManager();
49
            DataServerExplorer server = dataManager.openServerExplorer(
50
                    this.connection.getExplorerName(),
51
                    this.connection
52
            );
53
            DataStoreParameters params = server.get(tableName);
54
            if( params!=null ) {
55
                FeatureStore store = (FeatureStore) dataManager.openStore(
56
                        params.getDataStoreName(), 
57
                        params
58
                );
59
                return store;
48
    private void evaluateExpressionsInFiles(DataStoreParameters parameters) {
49
        DynClass dynClass = parameters.getDynClass();
50
        if( dynClass == null ) {
51
            return;
52
        }
53
        File theBaseFolder = this.workspace.getBaseFolder();
54
        if( theBaseFolder==null ) {
55
            return;
56
        }
57
        for (DynField dynField : dynClass.getDynFields()) {
58
            switch(dynField.getType()) {
59
                case DataTypes.FILE:
60
                case DataTypes.FOLDER:
61
                    File f = (File) parameters.getDynValue(dynField.getName());
62
                    if( ExpressionUtils.isDynamicFilename(f) ) {
63
                        parameters.setDynValue(dynField.getName(), ExpressionUtils.evaluateFilename(this.workspace, f));
64
                    }
65
                    break;
60 66
            }
61
        } catch (Exception ex) {
62
            LOGGER.warn("Can't open table '"+tableName+"'.",ex);
63 67
        }
64
        return null;
65 68
    }
66 69

  
67 70
    private void load() {
68 71
        try {
69 72
            this.repository = new HashMap<>();
70 73
            final DataManager dataManager = DALLocator.getDataManager();
71
            FeatureStore store = this.getTable();
74
            FeatureStore store = this.workspace.getTable(DatabaseWorkspaceManager.TABLE_REPOSITORY);
72 75
            store.accept(new Visitor() {
73 76
                @Override
74 77
                public void visit(Object obj) throws VisitCanceledException, BaseException {
......
80 83
                        LOGGER.warn("Can't restore parameters from repository entry '"+name+"'.");
81 84
                        return;
82 85
                    }
86
                    evaluateExpressionsInFiles(params);
83 87
                    repository.put(name, params);
84 88
                }
85 89
            });
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultDatabaseWorkspaceManager.java
1 1
package org.gvsig.fmap.dal.impl;
2 2

  
3 3
import java.io.File;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.Collections;
7
import java.util.List;
4 8
import org.gvsig.fmap.dal.DatabaseWorkspaceManager;
5 9
import org.apache.commons.lang3.StringUtils;
6 10
import org.apache.commons.lang3.mutable.Mutable;
7 11
import org.apache.commons.lang3.mutable.MutableObject;
8 12
import org.gvsig.expressionevaluator.ExpressionBuilder;
9 13
import org.gvsig.expressionevaluator.ExpressionUtils;
14
import org.gvsig.expressionevaluator.SymbolTable;
15
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
10 16
import org.gvsig.fmap.dal.DALLocator;
11 17
import org.gvsig.fmap.dal.DataManager;
12 18
import org.gvsig.fmap.dal.DataServerExplorer;
......
33 39
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES;
34 40
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES_NAME;
35 41
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
42
import org.gvsig.tools.dynobject.DynClass;
43
import org.gvsig.tools.dynobject.DynField;
44
import org.gvsig.tools.exception.BaseException;
36 45
import org.gvsig.tools.resourcesstorage.FilesResourcesStorage;
37 46
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
47
import org.gvsig.tools.util.FileTools;
48
import org.gvsig.tools.util.HasAFile;
49
import org.gvsig.tools.visitor.VisitCanceledException;
50
import org.gvsig.tools.visitor.Visitor;
38 51
import org.slf4j.Logger;
39 52
import org.slf4j.LoggerFactory;
40 53

  
......
44 57
 */
45 58
@SuppressWarnings("UseSpecificCatch")
46 59
public class DefaultDatabaseWorkspaceManager 
47
        implements DatabaseWorkspaceManager 
60
        extends AbstractSymbolTable
61
        implements DatabaseWorkspaceManager
48 62
    {
49 63
    
50 64
    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultDatabaseWorkspaceManager.class);
65

  
66
    private static final String CONFIG_NAME_BASEFOLDER = "BASEFOLDER";
67
    private static final String CONFIG_NAME_ALTERNATIVE_RESOURCES_PATH = "ALTERNATIVE_RESOURCES_PATH";
51 68
    
69
    private static abstract class CachedValue<T> {
70

  
71
        protected T value = null;
72
        private long lastAccess = 0;
73
        private final int millis;
74

  
75
        protected CachedValue(int millis) {
76
            this.millis = millis;
77
        }
78
        
79
        protected abstract void reload();
80

  
81
        public boolean isExpired() {
82
            long now = System.currentTimeMillis();
83
            return now - lastAccess > millis;
84
        }
85

  
86
        public T get() {
87
            if (isExpired()) {
88
                reload();
89
            }
90
            lastAccess = System.currentTimeMillis();
91
            return value;
92
        }
93
        
94
        public void set(T value) {
95
            this.value = value;
96
            lastAccess = System.currentTimeMillis();
97
        }
98
    }
99

  
100
    private class BaseFolder extends CachedValue<File> {
101
        public BaseFolder() {
102
            super(3000);
103
        }
104

  
105
        @Override
106
        protected void reload() {
107
            String s = DefaultDatabaseWorkspaceManager.this.get(CONFIG_NAME_BASEFOLDER);
108
            if( StringUtils.isBlank(s) ) {
109
                this.value = null;
110
            } else {
111
                this.value = new File(s);
112
            }
113
        }
114

  
115
        @Override
116
        public void set(File value) {
117
            DefaultDatabaseWorkspaceManager.this.set(CONFIG_NAME_BASEFOLDER, value.toString());
118
            super.set(value);
119
        }
120
    }
121
    
52 122
    private final DataServerExplorerParameters serverParameters;
53 123
    private Boolean existsConfiguration = null;
54 124
    private StoresRepository storesRepository;
55 125
    private Mutable<File> alternativeResourcesFolder = null;
126
    private BaseFolder baseFolder = null;
56 127
    
57
    
58 128
    public DefaultDatabaseWorkspaceManager(DataServerExplorerParameters serverParameters) {
59 129
        this.serverParameters = serverParameters;
130
        this.baseFolder = new BaseFolder();
60 131
    }
61 132

  
62 133
    @Override
......
289 360
                return null;
290 361
            }
291 362
            String value = feature.getString(FIELD_CONFIGURATION_VALUE);
363
            value = ExpressionUtils.evaluateDynamicText(this, value);
292 364
            return value;
293 365
            
294 366
        } catch (Exception ex) {
......
341 413
            this.storesRepository = new DatabaseWorkspaceStoresRepository(
342 414
                    id,
343 415
                    label,
344
                    this.serverParameters
416
                    this
345 417
            );
346 418
        }
347 419
        return this.storesRepository;
......
358 430
    }
359 431

  
360 432
    @Override
433
    public File getBaseFolder() {
434
        return this.baseFolder.get();
435
    }
436
    
437
    @Override
438
    public void setBaseFolder(File baseFolder) {
439
        this.baseFolder.set(baseFolder);
440
    }
441

  
442
    private DataStoreParameters replaceInFilesToUseBaseFolder(DataStoreParameters parameters) {
443
        DynClass dynClass = parameters.getDynClass();
444
        if( dynClass == null ) {
445
            return parameters;
446
        }
447
        File theBaseFolder = this.getBaseFolder();
448
        if( theBaseFolder==null ) {
449
            return parameters;
450
        }
451
        DataStoreParameters replaced = parameters;
452
        for (DynField dynField : dynClass.getDynFields()) {
453
            switch(dynField.getType()) {
454
                case DataTypes.FILE:
455
                case DataTypes.FOLDER:
456
                    File f = (File) parameters.getDynValue(dynField.getName());
457
                    if( f!=null ) {
458
                        File f2 = FileTools.relativizeFile(theBaseFolder, f);
459
                        if( f2!=f ) {
460
                            f = new File("<%="+CONFIG_NAME_BASEFOLDER+"%>/"+f2.getPath());
461
                            if( replaced == parameters ) {
462
                                replaced = (DataStoreParameters) replaced.getCopy();
463
                            }
464
                            replaced.setDynValue(dynField.getName(), f);
465
                        }
466
                    }
467
                    break;
468
            }
469
        }
470
        return replaced;
471
    }
472
    
473
    @Override
361 474
    public boolean writeStoresRepositoryEntry(String name, DataStoreParameters parameters) {
362 475
        try {
476
            parameters = this.replaceInFilesToUseBaseFolder(parameters);
363 477
            byte[] data = parameters.toByteArray();
364 478
            if( data == null ) {
365 479
                throw new RuntimeException("Can't convert parameters to byte array.");
......
417 531
    public ResourcesStorage getAlternativeResourcesStorage(String tableName) {
418 532
        if( this.alternativeResourcesFolder==null ) {
419 533
            this.alternativeResourcesFolder = new MutableObject<>(null);
420
            String resourcesPath = this.get("ALTERNATIVE_RESOURCES_PATH");
534
            String resourcesPath = this.get(CONFIG_NAME_ALTERNATIVE_RESOURCES_PATH);
421 535
            if( !StringUtils.isBlank(resourcesPath) ) {
422 536
                try {
423 537
                    resourcesPath = (String) ExpressionUtils.evaluate(resourcesPath);
......
467 581
        this.set(CONFIG_NAME_STORESREPOSITORYID,id);
468 582
        this.set(CONFIG_NAME_STORESREPOSITORYLABEL,description);
469 583
        this.set(CONFIG_CAN_ANONYMOUS_USER_WRITE_IN_THE_TABLES,"true");
470
        this.set("ALTERNATIVE_RESOURCES_PATH","");
584
        this.set(CONFIG_NAME_ALTERNATIVE_RESOURCES_PATH,"");
585
        File theBaseFolder = this.getBaseFolder();
586
        if( this.serverParameters instanceof HasAFile && theBaseFolder==null ) {
587
            File f = ((HasAFile)this.serverParameters).getFile();
588
            if( f != null ) {
589
                theBaseFolder = f.getParentFile();
590
                this.setBaseFolder(theBaseFolder);
591
            } else {
592
                this.set(CONFIG_NAME_BASEFOLDER,"");
593
            }
594
        } else {
595
            this.set(CONFIG_NAME_BASEFOLDER,"");
596
        }
471 597
    }
598

  
599
    @Override
600
    public boolean exists(String name) {
601
        try {
602
            if (this.existsConfiguration()) {
603
                FeatureStore store = this.getTable(TABLE_CONFIGURATION);
604
                if (store != null) {
605
                    ExpressionBuilder builder = ExpressionUtils.createExpressionBuilder();
606
                    String filter = builder.eq(
607
                            builder.column(FIELD_CONFIGURATION_NAME),
608
                            builder.constant(name)
609
                    ).toString();
610
                    Feature feature = store.findFirst(filter);
611
                    if (feature != null) {
612
                        return true;
613
                    }
614
                }
615
            }
616
            return super.exists(name);
617
        } catch (Exception ex) {
618
            LOGGER.warn("Can't read configuration value '" + name + "'", ex);
619
            return false;
620
        }
621
    }
622

  
623
    @Override
624
    public Object value(String name) {
625
        String v = this.get(name);
626
        if( v!=null ) {
627
            return v;
628
        }
629
        return super.value(name);
630
    }
631

  
632
    @Override
633
    public Collection<String> localvariables() {
634
        try {
635
            final List<String> theVars = new ArrayList<>();
636
            if (this.existsConfiguration()) {
637
                FeatureStore store = this.getTable(TABLE_CONFIGURATION);
638
                if (store != null) {
639
                    store.accept(new Visitor() {
640
                        @Override
641
                        public void visit(Object obj) throws VisitCanceledException, BaseException {
642
                            Feature feature = (Feature) obj;
643
                            theVars.add(feature.getString(FIELD_CONFIGURATION_NAME));
644
                        }
645
                    });
646
                }
647
            }
648
            return theVars;
649
        } catch (Exception ex) {
650
            LOGGER.warn("Can't read configuration variables", ex);
651
            return Collections.EMPTY_LIST;
652
        }
653
    }
654

  
655
    
472 656
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/DatabaseWorkspaceManager.java
1 1
package org.gvsig.fmap.dal;
2 2

  
3
import java.io.File;
3 4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.expressionevaluator.SymbolTable;
4 6
import org.gvsig.fmap.dal.feature.FeatureStore;
5 7
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
6 8
import org.gvsig.tools.util.LabeledValue;
......
9 11
 *
10 12
 * @author jjdelcerro
11 13
 */
12
public interface DatabaseWorkspaceManager extends LabeledValue<DatabaseWorkspaceManager>{
14
public interface DatabaseWorkspaceManager 
15
        extends LabeledValue<DatabaseWorkspaceManager>, SymbolTable 
16
    {
13 17
    
14 18
    public static final String CONFIG_CAN_ANONYMOUS_USER_WRITE_IN_THE_TABLES = "CanAnonymousUserWriteInTheTables";
15 19

  
......
173 177
    public void create(String id, String description);
174 178

  
175 179
    public void drop();
180
    
181
    public File getBaseFolder();
182
    
183
    public void setBaseFolder(File baseFolder);
184
        
176 185
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionEvaluatorManager.java
103 103
    }
104 104

  
105 105
    @Override
106
    public String evaluatePage(String source) {
107
        return evaluatePage(null, source);
106
    public String evaluateDynamicText(String source) {
107
        return evaluateDynamicText(null, source);
108 108
    }
109 109
    
110 110
    @Override
111
    public String evaluatePage(SymbolTable symbolTable, String source) {
111
    public boolean isDynamicText(String source) {
112 112
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
113 113
        if( ArrayUtils.isEmpty(sources) ) {
114
            return false;
115
        }
116
        return true;
117
    }
118
    
119
    @Override
120
    public String evaluateDynamicText(SymbolTable symbolTable, String source) {
121
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
122
        if( ArrayUtils.isEmpty(sources) ) {
114 123
            return source;
115 124
        }
116 125
        String[] values = new String[sources.length];
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/test/java/org/gvsig/expresionevaluator/impl/TestEvaluatePage.java
41 41
    public void testSimple1() {
42 42
        
43 43
        SymbolTable symbolTable = createSymbolTable();
44
        String s = ExpressionUtils.evaluatePage(symbolTable, "el precion es <%=precio%>");
44
        String s = ExpressionUtils.evaluateDynamicText(symbolTable, "el precion es <%=precio%>");
45 45

  
46 46
        assertEquals("el precion es 200", s);
47 47
    }
48 48
    
49 49
    public void testSimple2() {
50
        String s = ExpressionUtils.evaluatePage("el home es <%=HOME()%>");
50
        String s = ExpressionUtils.evaluateDynamicText("el home es <%=HOME()%>");
51 51

  
52 52
        assertEquals("el home es "+ToolsLocator.getFoldersManager().getHome().toString(), s);
53 53
    }
54 54

  
55 55
    public void testSimple3() {
56
        String s = ExpressionUtils.evaluatePage("un fichero temporal <%=UNIQUETEMPORARYFILE('nombre.txt')%>");
56
        String s = ExpressionUtils.evaluateDynamicText("un fichero temporal <%=UNIQUETEMPORARYFILE('nombre.txt')%>");
57 57
        
58 58
        // El resultado viene a ser algo como:
59 59
        //   "un fichero temporal /tmp/tmp-gvsig/nombre-1-16d2f3e4f44.txt"
......
65 65
    public void test1() {
66 66
        
67 67
        SymbolTable symbolTable = createSymbolTable();
68
        String s = ExpressionUtils.evaluatePage(symbolTable, "el precion es <%=precio%> y PI*100 es <%=TOINTEGER(PI*100)%>");
68
        String s = ExpressionUtils.evaluateDynamicText(symbolTable, "el precion es <%=precio%> y PI*100 es <%=TOINTEGER(PI*100)%>");
69 69

  
70 70
        assertEquals("el precion es 200 y PI*100 es 314", s);
71 71
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionEvaluatorManager.java
2 2
package org.gvsig.expressionevaluator;
3 3

  
4 4
import java.util.Collection;
5
import org.apache.commons.lang3.ArrayUtils;
6
import org.apache.commons.lang3.StringUtils;
5 7
import org.gvsig.tools.bookmarksandhistory.Bookmarks;
6 8
import org.gvsig.tools.bookmarksandhistory.History;
7 9
import org.gvsig.tools.script.ScriptManager;
......
15 17
    
16 18
    public Object evaluate(SymbolTable symbolTable, Code code);
17 19
    
18
    public String evaluatePage(String source);    
20
    public String evaluateDynamicText(String source);    
19 21
    
20
    public String evaluatePage(SymbolTable symbolTable, String source);    
22
    public String evaluateDynamicText(SymbolTable symbolTable, String source);    
21 23
    
24
    public boolean isDynamicText(String source);
25
    
22 26
    public Code compile(String source);
23 27
    
24 28
    public Code compile(LexicalAnalyzer lex, String source);
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionUtils.java
1 1
package org.gvsig.expressionevaluator;
2 2

  
3 3
import java.io.File;
4
import org.apache.commons.lang3.ArrayUtils;
4 5
import org.apache.commons.lang3.StringUtils;
5 6
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
6 7
import org.gvsig.tools.script.Script;
......
168 169
        MutableSymbolTable symbolTable = manager.createSymbolTable();
169 170
        return symbolTable;
170 171
    }
172
    
173
    public static boolean isDynamicText(String source) {
174
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
175
        if( ArrayUtils.isEmpty(sources) ) {
176
            return false;
177
        }
178
        return true;
179
    }
171 180

  
172
    public static String evaluatePage(String source) {
181
    public static String evaluateDynamicText(String source) {
173 182
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
174
        return manager.evaluatePage(source);
183
        return manager.evaluateDynamicText(source);
175 184
    }
176 185
    
177
    public static String evaluatePage(SymbolTable symbolTable, String source) {
186
    public static String evaluateDynamicText(SymbolTable symbolTable, String source) {
178 187
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
179
        return manager.evaluatePage(symbolTable, source);
188
        return manager.evaluateDynamicText(symbolTable, source);
180 189
    }
181 190

  
182 191
    public static File evaluateFilename(File source) {
183 192
        return evaluateFilename(null, source);
184 193
    }
194

  
195
    public static boolean isDynamicFilename(File source) {
196
        if( source == null ) {
197
            return false;
198
        }
199
        return isDynamicText(source.getPath());
200
    }
185 201
    
186 202
    @SuppressWarnings("StringEquality")
187 203
    public static File evaluateFilename(SymbolTable symbolTable, File source) {
188 204
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
189 205
        String src =  source.getPath();
190
        String r = manager.evaluatePage(symbolTable, src);
206
        String r = manager.evaluateDynamicText(symbolTable, src);
191 207
        if( r == src ) { // !!! I compare that it is the same pointer, it is what I want.
192 208
            return source;
193 209
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/ExpressionEvaluatorSwingLibraryImpl.java
37 37
            new String[] { "element", "expressionbuilder-element-function-sql" },
38 38
            new String[] { "element", "expressionbuilder-element-group" },
39 39
            new String[] { "element", "expressionbuilder-element" },
40
            new String[] { "action", "expressionbuilder-filter-values" },
40
            new String[] { "action", "common-filter" },
41 41
            new String[] { "action", "expressionbuilder-insert-text" },
42
            new String[] { "action", "expressionbuilder-sortdown" },
43
            new String[] { "action", "expressionbuilder-sortup" },
42
            new String[] { "action", "common-sortdown" },
43
            new String[] { "action", "common-sortup" },
44 44
            new String[] { "action", "expressionbuilder-history" },
45 45
            new String[] { "action", "expressionbuilder-bookmarks" },
46 46
            new String[] { "action", "expressionbuilder-time-limit" }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionBuilderView2.java
249 249
        btnSimpleElementInsert.setBorder(emptyborder2x2);
250 250

  
251 251
        btnSimpleElementSortDown.setActionCommand("+");
252
        btnSimpleElementSortDown.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/expressionbuilder-sortdown.png"));
252
        btnSimpleElementSortDown.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/common-sortdown.png"));
253 253
        btnSimpleElementSortDown.setName("btnSimpleElementSortDown");
254 254
        btnSimpleElementSortDown.setBorder(emptyborder2x2);
255 255

  
256 256
        btnSimpleElementSortUp.setActionCommand("+");
257
        btnSimpleElementSortUp.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/expressionbuilder-sortup.png"));
257
        btnSimpleElementSortUp.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/common-sortup.png"));
258 258
        btnSimpleElementSortUp.setName("btnSimpleElementSortUp");
259 259
        btnSimpleElementSortUp.setBorder(emptyborder2x2);
260 260

  
......
268 268
        txtSimpleElementFilter.setName("txtSimpleElementFilter");
269 269

  
270 270
        btnSimpleElementFilter.setActionCommand("+");
271
        btnSimpleElementFilter.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/expressionbuilder-filter-values.png"));
271
        btnSimpleElementFilter.setIcon(loadImage("datos/devel/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/resources/org/gvsig/expressionevaluator/swing/impl/common-filter.png"));
272 272
        btnSimpleElementFilter.setName("btnSimpleElementFilter");
273 273
        btnSimpleElementFilter.setBorder(emptyborder2x2);
274 274

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/FilteredListModel.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.expressionevaluator.swing.impl;
7 2

  
8 3
import java.util.ArrayList;
......
55 50
    }
56 51

  
57 52
    public void setFilter(String filter) {
58
        if (StringUtils.isEmpty(filter)) {
53
        if (StringUtils.isBlank(filter)) {
59 54
            this.filter = null;
60 55
            this.filteredElements = this.elements;
61 56
        } else {
......
88 83
    }
89 84

  
90 85
    public void sort(final boolean ascending) {
91
//        this.sortForeground(ascending);
92 86
        this.sortBackground(ascending);
93 87
    }
94 88
    
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.impl/src/main/java/org/gvsig/export/swing/impl/ExportSwingLibraryImpl.java
23 23
 */
24 24
package org.gvsig.export.swing.impl;
25 25

  
26
import java.net.URL;
26 27
import org.gvsig.export.swing.ExportSwingLibrary;
27 28
import org.gvsig.export.swing.ExportSwingLocator;
28 29
import org.gvsig.tools.library.AbstractLibrary;
29 30
import org.gvsig.tools.library.LibraryException;
31
import org.gvsig.tools.swing.api.ToolsSwingLocator;
32
import org.gvsig.tools.swing.icontheme.IconTheme;
30 33

  
31 34
/**
32 35
 * Library for Swing API initialization and configuration.
......
49 52

  
50 53
    @Override
51 54
    protected void doPostInitialize() throws LibraryException {
55
        String[][] iconNames = new String[][] {
56
            new String[] { "action", "common-filter" },
57
            new String[] { "action", "common-sortdown" },
58
            new String[] { "action", "common-sortup" },
59
            new String[] { "action", "common-check-on" },
60
            new String[] { "action", "common-check-off" }
61
        };
62
        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
63
        for (String[] icon : iconNames) {
64
            URL url = this.getClass().getResource("/images/export-to/"+icon[1]+".png");
65
            theme.registerDefault("Export", icon[0], icon[1], null, url);
66
        }
67
        
52 68
    }
53 69

  
54 70
}

Also available in: Unified diff