Revision 44397
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