Revision 43088

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVStoreParameters.java
31 31
import org.apache.commons.lang3.StringUtils;
32 32
import org.cresques.cts.IProjection;
33 33
import org.gvsig.fmap.dal.FileHelper;
34
import org.gvsig.fmap.dal.OpenDataStoreParameters;
34
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters;
35 35
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
36 36
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
37 37
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
......
45 45
import org.supercsv.quote.QuoteMode;
46 46

  
47 47
public class CSVStoreParameters extends AbstractDataParameters implements
48
        OpenDataStoreParameters, FilesystemStoreParameters {
48
        OpenFeatureStoreParameters, FilesystemStoreParameters {
49 49

  
50 50
    private static final Logger logger = LoggerFactory.getLogger(CSVStoreParameters.class);
51 51

  
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/DefaultDataManager.java
1 1
package org.gvsig.fmap.dal.impl;
2 2

  
3
import org.gvsig.fmap.dal.feature.spi.ExpressionEvaluatorBase;
3 4
import java.io.File;
4 5
import java.io.InputStream;
5 6
import java.net.URL;
......
21 22
import org.gvsig.fmap.dal.DataStoreProviderFactory;
22 23
import org.gvsig.fmap.dal.DataTypes;
23 24
import org.gvsig.fmap.dal.ExpressionBuilder;
25
import org.gvsig.fmap.dal.ExpressionEvaluator;
24 26
import org.gvsig.fmap.dal.NewDataStoreParameters;
25 27
import org.gvsig.fmap.dal.OpenErrorHandler;
26 28
import org.gvsig.fmap.dal.Register;
......
342 344
            throw new UnauthorizedException(READ_STORE_AUTHORIZATION, parameters, providerName);
343 345
        }
344 346

  
347
        parameters.validate();
348
        
345 349
        String storeName = this.getStoreName(parameters);
346 350

  
347 351
        DataStoreFactory_v2_4 storeFactory = (DataStoreFactory_v2_4) this.getStoreRegister().getFactory(storeName);
......
570 574
    }
571 575

  
572 576
    @Override
577
    public  ExpressionEvaluator createExpresion() {
578
        return new ExpressionEvaluatorBase();
579
    }
580
    
581
    @Override
573 582
    public FeaturePagingHelper createFeaturePagingHelper(
574 583
            FeatureStore featureStore, int pageSize) throws BaseException {
575 584
        return new FeaturePagingHelperImpl(featureStore, pageSize);
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/feature/impl/DefaultFeatureStore.java
46 46
import org.gvsig.fmap.dal.DataStoreNotification;
47 47
import org.gvsig.fmap.dal.DataStoreParameters;
48 48
import org.gvsig.fmap.dal.ExpressionBuilder;
49
import org.gvsig.fmap.dal.ExpressionEvaluator;
49 50
import org.gvsig.fmap.dal.exception.CloneException;
50 51
import org.gvsig.fmap.dal.exception.CloseException;
51 52
import org.gvsig.fmap.dal.exception.CreateException;
......
2255 2256
    }
2256 2257

  
2257 2258
    @Override
2258
    public ExpressionBuilder createExpressionBuilder() {
2259
    public ExpressionEvaluator createExpression() {
2259 2260
        if( this.provider instanceof FeatureStoreProvider_v2 ) {
2260
            return ((FeatureStoreProvider_v2)this.provider).createExpressionBuilder();
2261
            return ((FeatureStoreProvider_v2)this.provider).createExpression();
2261 2262
        }
2262 2263
        return new SQLBuilderBase();
2263 2264
    }
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/feature/impl/DefaultFeatureSelection.java
44 44
import org.gvsig.fmap.dal.feature.impl.dynobjectutils.DynObjectSetFeatureSetFacade;
45 45
import org.gvsig.tools.ToolsLocator;
46 46
import org.gvsig.tools.dispose.DisposableIterator;
47
import org.gvsig.tools.dispose.DisposeUtils;
47 48
import org.gvsig.tools.dynobject.DynObjectSet;
48 49
import org.gvsig.tools.dynobject.DynStruct;
49 50
import org.gvsig.tools.exception.BaseException;
......
317 318
	public DisposableIterator fastIterator() {
318 319
		return fastIterator(0);
319 320
	}
321
        
322
        @Override
323
        public Feature first() {
324
            DisposableIterator it = null;
325
            try {
326
                it = this.iterator();
327
                if( it == null ) {
328
                    return null;
329
                }
330
                Feature f = (Feature) it.next();
331
                return f;
332
            } finally {
333
                DisposeUtils.disposeQuietly(it);
334
            }
335
        }
320 336

  
321 337
	/**
322 338
	 * Returns the list of selected values, or the deselected ones if the
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/feature/impl/featureset/DefaultFeatureSet.java
48 48
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStoreTransforms;
49 49
import org.gvsig.fmap.dal.feature.spi.FeatureSetProvider;
50 50
import org.gvsig.tools.dispose.DisposableIterator;
51
import org.gvsig.tools.dispose.DisposeUtils;
51 52
import org.gvsig.tools.dynobject.DynObjectSet;
52 53
import org.gvsig.tools.evaluator.Evaluator;
53 54
import org.gvsig.tools.exception.BaseException;
......
349 350
        return this.getSize() == 0;
350 351
    }
351 352

  
353
    @Override
354
    public Feature first() {
355
        DisposableIterator it = null;
356
        try {
357
            it = this.iterator();
358
            if( it == null ) {
359
                return null;
360
            }
361
            Feature f = (Feature) it.next();
362
            return f;
363
        } finally {
364
            DisposeUtils.disposeQuietly(it);
365
        }
366
    }
367

  
368

  
352 369
    public DisposableIterator fastIterator() throws DataException {
353 370
        return this.fastIterator(0);
354 371
    }
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/feature/impl/FeatureStoreFactory.java
10 10
import org.gvsig.fmap.dal.impl.DefaultDataManager;
11 11
import org.gvsig.fmap.dal.spi.DataStoreInitializer2;
12 12
import org.gvsig.fmap.dal.DataStoreProvider;
13
import org.gvsig.fmap.dal.OpenDataStoreParameters;
13
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters;
14 14
import org.gvsig.tools.dynobject.DynObject;
15 15
import org.gvsig.tools.service.spi.Services;
16 16

  
......
49 49
    
50 50
    @Override
51 51
    public boolean canUse(DataParameters parameters) {
52
        boolean use = parameters instanceof OpenDataStoreParameters;
52
        boolean use = parameters instanceof OpenFeatureStoreParameters;
53 53
        return use;
54 54
    }
55 55
    
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/pom.xml
11 11
        <version>2.0.169-SNAPSHOT</version>
12 12
    </parent>
13 13

  
14
    <dependencies>
14
    <dependencies>      
15 15
        <dependency>
16 16
            <groupId>org.apache.commons</groupId>
17 17
            <artifactId>commons-lang3</artifactId>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCStoreProviderBase.java
191 191

  
192 192
    
193 193
    @Override
194
    public JDBCSQLBuilderBase createExpressionBuilder() {
194
    public JDBCSQLBuilderBase createExpression() {
195 195
        return this.getHelper().createSQLBuilder();
196 196
    }
197 197

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CalculateEnvelopeOfColumnOperation.java
75 75
            IProjection crs
76 76
    ) throws DataException {
77 77

  
78
        //
79
        // Parece ser que en versiones anteriores a SQL Server 2012 no esta
80
        // disponible la funcion ST_ExtentAggregate.
81
        // Habria que determinar si es necesario implementar una alternativa
82
        // para estos casos.
83
        //
84
        // https://alastaira.wordpress.com/2011/07/26/determining-the-geographic-extent-of-spatial-features-in-a-sql-server-table/
85
        //
78 86
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
79 87
        sqlbuilder.select().column().value(
80 88
            sqlbuilder.getAsGeometry(
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/test/java/org/gvsig/fmap/dal/feature/DummyFetureStore.java
11 11
import org.gvsig.fmap.dal.DataSet;
12 12
import org.gvsig.fmap.dal.DataStoreParameters;
13 13
import org.gvsig.fmap.dal.ExpressionBuilder;
14
import org.gvsig.fmap.dal.ExpressionEvaluator;
14 15
import org.gvsig.fmap.dal.exception.DataException;
15 16
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
16 17
import org.gvsig.fmap.dal.feature.exception.NeedEditingModeException;
......
574 575
    }
575 576

  
576 577
    @Override
577
    public ExpressionBuilder createExpressionBuilder() {
578
    public ExpressionEvaluator createExpression() {
578 579
        return null;
579 580
    }
580 581

  
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/DataManager.java
281 281
     */
282 282
    public Evaluator createExpresion(String expression)
283 283
            throws InitializeException;
284

  
284
    
285
    /**
286
     * Creates an instance of Evaluator to evaluate a expression.
287
     *
288
     * @return instance of ExpressionEvaluator representing the given expression.
289
     */
290
    public ExpressionEvaluator createExpresion();
291
    
285 292
    /*
286 293
     * ====================================================================
287 294
     *
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/ExpressionEvaluator.java
1

  
2
package org.gvsig.fmap.dal;
3

  
4
import org.gvsig.tools.evaluator.Evaluator;
5

  
6

  
7
public interface ExpressionEvaluator extends ExpressionBuilder, Evaluator {
8
    
9
}
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/feature/FeatureSet.java
228 228
	 */
229 229
	boolean isEmpty() throws DataException;
230 230

  
231
        /**
232
         * Return the first feature of the set.
233
         * If the set is empty return null.
234
         * 
235
         * This not is a good method to determine if the set is empty.
236
         * Use isEmpty instead.
237
         * 
238
         * This is a utility method that call iterator and retrieve the
239
         * first feature of the iterator.
240
         * 
241
         * @return the first fearure of the set or null. 
242
         */
243
        public Feature first();
244
        
231 245
	/**
232 246
	 * Updates a {@link Feature} with the given {@link EditableFeature}.<br>
233 247
	 * 
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/feature/FeatureStore.java
32 32
import org.gvsig.fmap.dal.DataStore;
33 33
import org.gvsig.fmap.dal.DataStoreParameters;
34 34
import org.gvsig.fmap.dal.ExpressionBuilder;
35
import org.gvsig.fmap.dal.ExpressionEvaluator;
35 36
import org.gvsig.fmap.dal.exception.CreateException;
36 37
import org.gvsig.fmap.dal.exception.DataException;
37 38
import org.gvsig.fmap.dal.exception.ReadException;
......
845 846
    
846 847
    public Iterator iterator();
847 848
    
848
    public ExpressionBuilder createExpressionBuilder();
849
    public ExpressionEvaluator createExpression();
849 850
    
850 851
    public void createCache(String name, DynObject parameters)
851 852
        throws DataException;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/SQLBuilderBase.java
33 33
import org.slf4j.Logger;
34 34
import org.slf4j.LoggerFactory;
35 35

  
36
public class SQLBuilderBase extends ExpressionBuilderBase implements SQLBuilder {
36
public class SQLBuilderBase extends ExpressionEvaluatorBase implements SQLBuilder {
37 37
    
38 38
    protected static final Logger logger = LoggerFactory.getLogger(SQLBuilderBase.class);
39 39
    
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/AbstractFeatureStoreProvider.java
38 38
import org.gvsig.fmap.dal.DALLocator;
39 39
import org.gvsig.fmap.dal.DataServerExplorer;
40 40
import org.gvsig.fmap.dal.DataStoreParameters;
41
import org.gvsig.fmap.dal.ExpressionBuilder;
41
import org.gvsig.fmap.dal.ExpressionEvaluator;
42 42
import org.gvsig.fmap.dal.exception.CloseException;
43 43
import org.gvsig.fmap.dal.exception.DataException;
44 44
import org.gvsig.fmap.dal.exception.InitializeException;
......
552 552
    }
553 553

  
554 554
    @Override
555
    public ExpressionBuilder createExpressionBuilder() {
555
    public ExpressionEvaluator createExpression() {
556 556
        return new SQLBuilderBase();
557 557
    }
558 558

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/ExpressionEvaluatorBase.java
1

  
2
package org.gvsig.fmap.dal.feature.spi;
3

  
4
import gnu.jel.CompilationException;
5
import gnu.jel.CompiledExpression;
6
import gnu.jel.DVMap;
7
import java.util.ArrayList;
8
import java.util.Date;
9
import java.util.List;
10
import java.util.regex.Matcher;
11
import java.util.regex.Pattern;
12
import org.cresques.cts.IProjection;
13
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.Find_SRID;
14
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_AsBinary;
15
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_AsEWKB;
16
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_AsText;
17
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Contains;
18
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Crosses;
19
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Disjoint;
20
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Envelope;
21
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Equals;
22
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_GeomFromEWKB;
23
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_GeomFromText;
24
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_GeomFromWKB;
25
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Intersects;
26
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_IsClosed;
27
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Overlaps;
28
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_SRID;
29
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Touches;
30
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ST_Within;
31
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.isNull;
32
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.lcase;
33
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.notIsNull;
34
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_AND;
35
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_EQ;
36
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_GE;
37
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_GT;
38
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_ILIKE;
39
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_LE;
40
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_LIKE;
41
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_LT;
42
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_NE;
43
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_OR;
44
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.operator_not;
45
import static org.gvsig.fmap.dal.ExpressionBuilder.Config.ucase;
46
import org.gvsig.fmap.dal.ExpressionEvaluator;
47
import org.gvsig.fmap.geom.Geometry;
48
import org.gvsig.fmap.geom.GeometryException;
49
import org.gvsig.fmap.geom.GeometryLocator;
50
import org.gvsig.fmap.geom.GeometryManager;
51
import org.gvsig.fmap.geom.operation.GeometryOperationException;
52
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
53
import org.gvsig.fmap.geom.primitive.Envelope;
54
import org.gvsig.tools.evaluator.EvaluatorData;
55
import org.gvsig.tools.evaluator.EvaluatorException;
56
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
57

  
58

  
59
public class ExpressionEvaluatorBase extends ExpressionBuilderBase implements ExpressionEvaluator {
60

  
61
    public class JELConfig extends ConfigBase {
62
        
63
        public JELConfig() {
64
            super();
65
            
66
            this.set(has_spatial_functions,true);
67
            this.set(constant_true, "true");
68
            this.set(constant_false, "false");
69
            this.set(quote_for_identifiers, "");
70
            this.set(quote_for_strings, "\"");
71
            this.set(geometry_type_support, GeometrySupportType.WKT);
72
            this.set(group, "( {0} )");
73
            
74
            this.set(Find_SRID , "Find_SRID(({0}), ({1}), ({2}))");
75
            this.set(ST_SRID , "ST_SRID({0})");
76
            this.set(ST_AsText , "ST_AsText({0})");
77
            this.set(ST_AsBinary, "ST_AsBinary({0})");
78
            this.set(ST_AsEWKB, "ST_AsWKB({0})");
79
            this.set(ST_Contains, "ST_Contains(({0}), ({1}))");            
80
            this.set(ST_Crosses,  "ST_Crosses(({0}), ({1}))");
81
            this.set(ST_Disjoint ,  "ST_Disjoint(({0}), ({1}))");
82
            this.set(ST_Equals ,  "ST_Equals(({0}), ({1}))");
83
            this.set(ST_IsClosed,  "ST_IsClosed({0})");
84
            this.set(ST_Overlaps,  "ST_Overlaps(({0}), ({1}))");
85
            this.set(ST_Touches,  "ST_Touches(({0}), ({1}))");
86
            this.set(ST_Within, "ST_Within(({0}), ({1}))");            
87
            this.set(ST_Envelope, "ST_Envelope({0})");
88
            this.set(ST_Intersects, "ST_Intersects(({0}), ({1}))");
89
            this.set(ST_GeomFromText, "ST_GeomFromText({0}, ({1}))");
90
            this.set(ST_GeomFromWKB, "ST_GeomFromWKB(({0}), ({1}))");
91
            this.set(ST_GeomFromEWKB, "ST_GeomFromEWKB(({0}), ({1}))");
92
            this.set(lcase, "LCASE({0})");
93
            this.set(ucase, "UCASE({0})");
94
            this.set(isNull, "( ({0}) == null )");
95
            this.set(notIsNull, "( ! (({0}) == null) )");
96
            this.set(operator_not, "( ! ({0}) )");
97
            
98
            this.set(operator_AND, "{0} && {1}");
99
            this.set(operator_OR, "{0} || {1}");
100
            this.set(operator_EQ, "( ({0}) == ({1}) )");
101
            this.set(operator_NE, "( ({0}) != ({1}) )");
102
            this.set(operator_GT, "( ({0}) > ({1}) )");
103
            this.set(operator_GE, "( ({0}) >= ({1}) )");
104
            this.set(operator_LT, "( ({0}) < ({1}) )");
105
            this.set(operator_LE, "( ({0}) <= ({1}) )");
106
            this.set(operator_LIKE, "LIKE( ({0}), ({1}) )");
107
            this.set(operator_ILIKE, "ILIKE( ({0}), ({1}) )");
108

  
109
            this.set(operator_add, "{0} + {1}");
110
            this.set(operator_subst, "{0} - {1}");
111
            this.set(operator_mult, "{0} * {1}");
112
            this.set(operator_div, "{0} / {1}");
113
            this.set(operator_concat, "{0} + {1}");
114
        }
115
    }
116
    
117
    public static class JELFunctions {
118
        public static String Find_SRID(Object a, Object b, Object c) {
119
            return null;
120
        }
121
        
122
        public static String ST_SRID(Geometry geom) {
123
            return null;
124
        }
125
        
126
        public static String ST_AsText(Geometry geom) throws GeometryOperationException, GeometryOperationNotSupportedException {
127
            return geom.convertToWKT();
128
        }
129
        
130
        public static byte[] ST_AsBinary(Geometry geom) throws GeometryOperationException, GeometryOperationNotSupportedException {
131
            return geom.convertToWKB();
132
        }
133
        
134
        public static byte[] ST_AsEWKB(Geometry geom) throws GeometryOperationException, GeometryOperationNotSupportedException {
135
            return geom.convertToEWKB();
136
        }
137
        
138
        public static Envelope ST_Envelope(Geometry geom) throws GeometryOperationException, GeometryOperationNotSupportedException {
139
            return geom.getEnvelope();
140
        }            
141
        
142
        public static boolean ST_Contains(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
143
            return geom1.contains(geom2);
144
        }            
145
        
146
        public static boolean ST_Crosses(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
147
            return geom1.crosses(geom2);
148
        }            
149
        
150
        public static boolean ST_Disjoint(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
151
            return geom1.disjoint(geom2);
152
        }            
153
        
154
        public static boolean ST_Overlaps(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
155
            return geom1.overlaps(geom2);
156
        }            
157
        
158
        public static boolean ST_Touches(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
159
            return geom1.touches(geom2);
160
        }            
161
        
162
        public static boolean ST_Within(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
163
            return geom1.within(geom2);
164
        }            
165
        
166
        public static boolean ST_Intersects(Geometry geom1, Geometry geom2) throws GeometryOperationException, GeometryOperationNotSupportedException {
167
            return geom1.intersects(geom2);
168
        }            
169
        
170
        public static boolean ST_Equals(Geometry geom1, Geometry geom2) {
171
            return geom1.equals(geom2);
172
        }            
173
        
174
        public static boolean ST_IsClosed(Geometry geom1) throws GeometryOperationException, GeometryOperationNotSupportedException {
175
            return geom1.isClossed();
176
        }            
177
        
178
        public static Geometry ST_GeomFromText(String geom, IProjection srs) throws GeometryException {
179
            GeometryManager manager = GeometryLocator.getGeometryManager();
180
            return manager.createFrom(geom,srs);
181
        }            
182
        
183
        public static Geometry ST_GeomFromWKB(byte[] geom, IProjection srs) throws GeometryException {
184
            GeometryManager manager = GeometryLocator.getGeometryManager();
185
            return manager.createFrom(geom,srs);
186
        }            
187
        
188
        public static Geometry ST_GeomFromEWKB(byte[] geom, IProjection srs) throws GeometryException {
189
            GeometryManager manager = GeometryLocator.getGeometryManager();
190
            return manager.createFrom(geom,srs);
191
        }            
192
            
193
        public static String LCASE(Object x) {
194
            if( x == null ) {
195
                return null;
196
            }
197
            return x.toString().toLowerCase();
198
        }            
199
            
200
        public static String UCASE(Object x) {
201
            if( x == null ) {
202
                return null;
203
            }
204
            return x.toString().toLowerCase();
205
        }            
206
          
207
        private static final Integer ZERO_OR_MORE_CHARS = 0;
208
        private static final Integer ONE_CHAR = 1;
209

  
210
        public static boolean LIKE(Object x1, Object x2) {
211
            if (x1 == null || x2 == null) {
212
                return false;
213
            }
214
            String source = x1.toString();
215
            String match = x2.toString();
216

  
217
            List<Object> format = new ArrayList<>();
218
            StringBuilder fill = new StringBuilder();
219
            final int plen = match.length();
220
            Character lastSymbol = null;
221
            for (int i = 0; i < plen; i++) {
222
                boolean f = false;
223
                char c = match.charAt(i);
224
                if (lastSymbol == '\\') {
225
                    lastSymbol = null;
226
                    fill.append(c);
227
                } else {
228
                    if (c == '%') {
229
                        if (fill.length() > 0) {
230
                            format.add(fill.toString());
231
                            fill.setLength(0);
232
                        }
233
                        format.add(ZERO_OR_MORE_CHARS);
234
                    } else if (c == '_') {
235
                        if (fill.length() > 0) {
236
                            format.add(fill.toString());
237
                            fill.setLength(0);
238
                        }
239
                        format.add(ONE_CHAR);
240
                    } else {
241
                        fill.append(c);
242
                    }
243
                    lastSymbol = c;
244
                }
245
                if (fill.length() > 0) {
246
                    format.add(fill.toString());
247
                }
248
            }
249

  
250
            StringBuilder repattern = new StringBuilder("^");
251
            for (Object o : format) {
252
                if (o == ZERO_OR_MORE_CHARS) {
253
                    repattern.append(".*?");
254
                } else if (o == ONE_CHAR) {
255
                    repattern.append(".?");
256
                } else {
257
                    repattern.append((String) o);
258
                }
259
            }
260

  
261
            Pattern pattern = Pattern.compile(repattern.toString());
262
            Matcher m = pattern.matcher(source);
263
            return m.find();
264
        }
265
            
266
        public static boolean ILIKE(Object x1, Object x2) {
267
            if (x1 == null || x2 == null) {
268
                return false;
269
            }
270
            x1 = x1.toString().toLowerCase();
271
            x2 = x2.toString().toLowerCase();
272
            return LIKE(x1, x2);
273
        }
274
            
275
    }
276
    
277
    protected class VariableProvider extends DVMap {
278
        private EvaluatorData data;
279

  
280
        public VariableProvider() {
281
        }
282
        
283
        public void setValues(EvaluatorData data) {
284
            this.data = data;
285
        }
286
        
287
        @Override
288
        public String getTypeName(String name) {
289
            Object value = this.data.getDataValue(name);
290
            return value.getClass().getSimpleName();
291
        }
292

  
293
        public double getDoubleProperty(String name) {
294
            Object value = this.data.getDataValue(name);
295
            return (double) value;
296
        }        
297

  
298
        public float getFloatProperty(String name) {
299
            Object value = this.data.getDataValue(name);
300
            return (float) (double) value;
301
        }        
302
        
303
        public int getIntegerProperty(String name) {
304
            Object value = this.data.getDataValue(name);
305
            return (int) (double) value;
306
        }        
307
        
308
        public long getLongProperty(String name) {
309
            Object value = this.data.getDataValue(name);
310
            return (long) (double) value;
311
        }        
312
        
313
        public String getStringProperty(String name) {
314
            Object value = this.data.getDataValue(name);
315
            return (String) value;
316
        }        
317

  
318
        public Date getDateProperty(String name) {
319
            Object value = this.data.getDataValue(name);
320
            return (Date) value;
321
        }        
322
    }
323
    
324
    protected VariableProvider jel_variables = null;
325
    protected Object[] jel_context = null;
326
    protected CompiledExpression jel_expression = null;
327
    protected Config jel_config = new JELConfig();
328
    protected EvaluatorFieldsInfo fieldsInfo = null; // For compatibility 
329
    
330
    public ExpressionEvaluatorBase() {
331
        super();
332
    }
333
    
334
    public void compile() {
335
        jel_variables = new VariableProvider();
336
        gnu.jel.Library lib = new gnu.jel.Library(
337
                new Class[]{ Math.class, JELFunctions.class }, 
338
                new Class[]{ jel_variables.getClass() }, 
339
                new Class[0],
340
                jel_variables,
341
                null
342
        );
343
        jel_context = new Object[] { jel_variables };
344
        Config config = this.config;
345
        try {
346
            this.config = jel_config;
347
            String expr = this.value.toString();
348
            jel_expression = gnu.jel.Evaluator.compile(expr, lib);
349
        } catch (CompilationException ex) {
350
            throw new RuntimeException("Can't compile expression.", ex);
351
        } finally {
352
            this.config = config;
353
        }
354
    }
355
    
356
    public void clear() {
357
        this.set(null);
358
        this.jel_expression = null;
359
    }
360
    
361
    @Override
362
    public Object evaluate(EvaluatorData data) throws EvaluatorException {
363
        try {
364
            if( jel_variables == null ) {
365
                this.compile();
366
            }
367
            jel_variables.setValues(data);
368
            return jel_expression.evaluate(jel_context);
369
        } catch (Throwable th) {
370
            throw new EvaluatorException(
371
                    "Can't evaluate expression", 
372
                    th, 
373
                    "ExpressionEvaluatorBase_evaluate_error", 
374
                    0
375
                );
376
        }
377
    }
378

  
379
    @Override
380
    public String getName() {
381
        return "Generic expression evaluator";
382
    }
383

  
384
    @Override
385
    public String getDescription() {
386
        return "";
387
    }
388

  
389
    @Override
390
    public String getSQL() {
391
        return this.value.toString();
392
    }
393

  
394
    @Override
395
    public EvaluatorFieldsInfo getFieldsInfo() {
396
        if( this.fieldsInfo==null ) {
397
            this.fieldsInfo = new EvaluatorFieldsInfo();
398
            for( Variable var : this.getVariables() ) {
399
                this.fieldsInfo.addFieldValue(var.getName());
400
            }
401
        }
402
        return this.fieldsInfo;
403
    }
404

  
405
    
406
    
407
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/FeatureStoreProvider_v2.java
1 1

  
2 2
package org.gvsig.fmap.dal.feature.spi;
3 3

  
4
import org.gvsig.fmap.dal.ExpressionBuilder;
4
import org.gvsig.fmap.dal.ExpressionEvaluator;
5 5

  
6 6

  
7 7
public interface FeatureStoreProvider_v2 extends FeatureStoreProvider {
8 8
    
9
    public ExpressionBuilder createExpressionBuilder();
9
    public ExpressionEvaluator createExpression();
10 10
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/pom.xml
29 29
      <artifactId>org.gvsig.fmap.dal.api</artifactId>
30 30
      <scope>compile</scope>
31 31
    </dependency>
32
    <dependency>
33
        <groupId>org.gnu</groupId>
34
        <artifactId>jel</artifactId>
35
        <scope>compile</scope>
36
    </dependency>
32 37
  </dependencies>
33 38

  
34 39
  <description>This project contains the SPI of the Data Access Library used to implement providers of data.</description>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/SpatialEvaluatorsFactory.java
57 57
        try {
58 58
            FeatureType featureType = store.getDefaultFeatureType();
59 59
            String geomName = featureType.getDefaultGeometryAttributeName();
60
            ExpressionBuilder builder = store.createExpressionBuilder();
60
            ExpressionBuilder builder = store.createExpression();
61 61
            return intersects(geometry, projection, featureType, geomName,builder);
62 62
        } catch (DataException ex) {
63 63
            throw new RuntimeException("Can't create intersects evaluator.",ex);
......
72 72
        try {
73 73
            FeatureType featureType = store.getDefaultFeatureType();
74 74
            String geomName = featureType.getDefaultGeometryAttributeName();
75
            ExpressionBuilder builder = store.createExpressionBuilder();
75
            ExpressionBuilder builder = store.createExpression();
76 76
            return intersects(envelope, projection, featureType, geomName,builder);
77 77
        } catch (DataException ex) {
78 78
            throw new RuntimeException("Can't create intersects evaluator.",ex);
......
107 107
        try {
108 108
            FeatureType featureType = store.getDefaultFeatureType();
109 109
            String geomName = featureType.getDefaultGeometryAttributeName();
110
            ExpressionBuilder builder = store.createExpressionBuilder();
110
            ExpressionBuilder builder = store.createExpression();
111 111
            return this.contains(geometry, projection, featureType, geomName,builder);
112 112
        } catch (DataException ex) {
113 113
            throw new RuntimeException("Can't create contains evaluator.",ex);
......
122 122
        try {
123 123
            FeatureType featureType = store.getDefaultFeatureType();
124 124
            String geomName = featureType.getDefaultGeometryAttributeName();
125
            ExpressionBuilder builder = store.createExpressionBuilder();
125
            ExpressionBuilder builder = store.createExpression();
126 126
            return this.contains(envelope, projection, featureType, geomName,builder);
127 127
        } catch (DataException ex) {
128 128
            throw new RuntimeException("Can't create contains evaluator.",ex);
......
147 147
        try {
148 148
            FeatureType featureType = store.getDefaultFeatureType();
149 149
            String geomName = featureType.getDefaultGeometryAttributeName();
150
            ExpressionBuilder builder = store.createExpressionBuilder();
150
            ExpressionBuilder builder = store.createExpression();
151 151
            return this.not_contains(geometry, projection, featureType, geomName,builder);
152 152
        } catch (DataException ex) {
153 153
            throw new RuntimeException("Can't create not_contains evaluator.",ex);
......
182 182
        try {
183 183
            FeatureType featureType = store.getDefaultFeatureType();
184 184
            String geomName = featureType.getDefaultGeometryAttributeName();
185
            ExpressionBuilder builder = store.createExpressionBuilder();
185
            ExpressionBuilder builder = store.createExpression();
186 186
            return this.crosses(geometry, projection, featureType, geomName,builder);
187 187
        } catch (DataException ex) {
188 188
            throw new RuntimeException("Can't create crosses evaluator.",ex);
......
197 197
        try {
198 198
            FeatureType featureType = store.getDefaultFeatureType();
199 199
            String geomName = featureType.getDefaultGeometryAttributeName();
200
            ExpressionBuilder builder = store.createExpressionBuilder();
200
            ExpressionBuilder builder = store.createExpression();
201 201
            return this.crosses(envelope, projection, featureType, geomName,builder);
202 202
        } catch (DataException ex) {
203 203
            throw new RuntimeException("Can't create crosses evaluator.",ex);
......
222 222
        try {
223 223
            FeatureType featureType = store.getDefaultFeatureType();
224 224
            String geomName = featureType.getDefaultGeometryAttributeName();
225
            ExpressionBuilder builder = store.createExpressionBuilder();
225
            ExpressionBuilder builder = store.createExpression();
226 226
            return this.disjoint(geometry, projection, featureType, geomName,builder);
227 227
        } catch (DataException ex) {
228 228
            throw new RuntimeException("Can't create disjoint evaluator.",ex);
......
247 247
        try {
248 248
            FeatureType featureType = store.getDefaultFeatureType();
249 249
            String geomName = featureType.getDefaultGeometryAttributeName();
250
            ExpressionBuilder builder = store.createExpressionBuilder();
250
            ExpressionBuilder builder = store.createExpression();
251 251
            return this.overlaps(geometry, projection, featureType, geomName,builder);
252 252
        } catch (DataException ex) {
253 253
            throw new RuntimeException("Can't create overlaps evaluator.",ex);
......
272 272
        try {
273 273
            FeatureType featureType = store.getDefaultFeatureType();
274 274
            String geomName = featureType.getDefaultGeometryAttributeName();
275
            ExpressionBuilder builder = store.createExpressionBuilder();
275
            ExpressionBuilder builder = store.createExpression();
276 276
            return this.touches(geometry, projection, featureType, geomName,builder);
277 277
        } catch (DataException ex) {
278 278
            throw new RuntimeException("Can't create touches evaluator.",ex);
......
297 297
        try {
298 298
            FeatureType featureType = store.getDefaultFeatureType();
299 299
            String geomName = featureType.getDefaultGeometryAttributeName();
300
            ExpressionBuilder builder = store.createExpressionBuilder();
300
            ExpressionBuilder builder = store.createExpression();
301 301
            return this.within(geometry, projection, featureType, geomName,builder);
302 302
        } catch (DataException ex) {
303 303
            throw new RuntimeException("Can't create within evaluator.",ex);
......
322 322
        try {
323 323
            FeatureType featureType = store.getDefaultFeatureType();
324 324
            String geomName = featureType.getDefaultGeometryAttributeName();
325
            ExpressionBuilder builder = store.createExpressionBuilder();
325
            ExpressionBuilder builder = store.createExpression();
326 326
            return this.equals(geometry, projection, featureType, geomName,builder);
327 327
        } catch (DataException ex) {
328 328
            throw new RuntimeException("Can't create equals evaluator.",ex);
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/pom.xml
124 124
        <scope>compile</scope>
125 125
    </dependency>
126 126
    <dependency>
127
        <groupId>commons-collections</groupId>
128
        <artifactId>commons-collections</artifactId>
129
        <scope>compile</scope>
130
    </dependency>
131
    <dependency>
132
        <groupId>org.gnu</groupId>
133
        <artifactId>jel</artifactId>
134
        <scope>compile</scope>
135
    </dependency>
136
    <dependency>
127 137
        <groupId>jwizardcomponent</groupId>
128 138
        <artifactId>jwizardcomponent</artifactId>
129 139
        <scope>compile</scope>
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/pom.xml
13 13
    </parent>
14 14

  
15 15
    <properties>
16
      <gvsig.package.info.state>final</gvsig.package.info.state>
16
      <gvsig.package.info.state>devel</gvsig.package.info.state>
17 17
      <!--
18 18
      <gvsig.package.info.state>devel</gvsig.package.info.state>
19 19
      <gvsig.package.info.state>testing</gvsig.package.info.state>
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/pkg_description_en.html
1
<h1>${gvsig.package.info.name}</h1>
2
<pre>${gvsig.package.info.description}</pre>
3
<ul>
4
    <li>Package <i>${gvsig.package.info.official.label}</i></li>
5
    <li>Organization:<br>
6
        &nbsp;&nbsp;<i>${gvsig.package.info.owner}</i><br>
7
        &nbsp;&nbsp;<i>${gvsig.package.info.webURL}</i>
8
    </li>
9
    <li>Categories: <i>${gvsig.package.info.categories}</i></li>
10
    <li>Sources:&nbsp;<i>${gvsig.package.info.sourcesURL}</i></li>
11
    <li>Code: <i>${gvsig.package.info.code}</i></li>
12
    <li>Dependencies: <i>${gvsig.package.info.dependencies}</i></li>
13
    <li>Version: <i>${gvsig.package.info.version}</i></li>
14
    <li>State: <i>${gvsig.package.info.state}</i></li>
15
    <li>Operating system: <i>${gvsig.package.info.operatingSystem}</i></li>
16
    <li>Architecture: <i>${gvsig.package.info.architecture}</i></li>
17
    <li>Required JVM: <i>${gvsig.package.info.javaVM}</i></li>
18
</ul>
19
<br>
20
<br>
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/pkg_description_es.html
1
<h1>${gvsig.package.info.name}</h1>
2
<pre>${gvsig.package.info.description}</pre>
3
<ul>
4
    <li>Paquete <i>${gvsig.package.info.official.label}</i></li>
5
    <li>Organizaci&oacute;n:<br>
6
        &nbsp;&nbsp;<i>${gvsig.package.info.owner}</i><br>
7
        &nbsp;&nbsp;<i>${gvsig.package.info.webURL}</i>
8
    </li>    
9
    <li>Categorias: <i>${gvsig.package.info.categories}</i></li>
10
    <li>Fuentes: <i>${gvsig.package.info.sourcesURL}</i></li>
11
    <li>Codigo:&nbsp;<i>${gvsig.package.info.code}</i></li>
12
    <li>Dependencias: <i>${gvsig.package.info.dependencies}</i></li>
13
    <li>Versi&oacute;n: <i>${gvsig.package.info.version}</i></li>
14
    <li>Estado: <i>${gvsig.package.info.state}</i></li>
15
    <li>Sistema operativo: <i>${gvsig.package.info.operatingSystem}</i></li>
16
    <li>Arquitectura: <i>${gvsig.package.info.architecture}</i></li>
17
    <li>Java requerida: <i>${gvsig.package.info.javaVM}</i></li>
18
</ul>
19
<br>
20
<br>
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/text.properties
1 1
# Resource bundle texts for the Spanish language locale (es)
2
_select_the_folder_to_create_the_package_with=Selecciona el directorio con el que se crear? el paquete
2
_select_the_folder_to_create_the_package_with=Selecciona el directorio con el que se crear\u00e1 el paquete
3 3
_output_options=Opciones de salida
4 4
_the_package_file_folder_does_not_exist=La carpeta del paquete no existe
5
_the_package_index_file_folder_does_not_exist=La carpeta del paquete de ?ndices no existe
6
_package_description=Descripci?n del paquete
5
_the_package_index_file_folder_does_not_exist=La carpeta del paquete de \u00edndices no existe
6
_package_description=Descripci\u00f3n del paquete
7 7
_installer_progress=Progreso del instalador
8 8
_Compressing=Comprimiendo
9
_Creating_index=Creando ?ndice
9
_Creating_index=Creando \u00edndice
10 10
_Finished=Finalizado
11 11
_cant_create_the_package=No se pudo crear el paquete
12
_create_package=Creaci?n del paquete
13
_select_symbol_folder=Selecciona carpeta de s?mbolos
12
_create_package=Creaci\u00f3n del paquete
13
_select_symbol_folder=Selecciona carpeta de s\u00edmbolos
14 14
_Create_package_symbols=Crear paquete de simbolos
15
_typical_installation=Instalaci?n t?pica
16
_advanced_installation=Instalaci?n avanzada
17
_fast_filter=Filtro r?pido
15
_typical_installation=Instalaci\u00f3n t\u00edpica
16
_advanced_installation=Instalaci\u00f3n avanzada
17
_fast_filter=Filtro r\u00e1pido
18 18
_search=Buscar
19 19
_reset_filters=Restaurar filtros
20
_categories=Categor?as
20
_categories=Categor\u00edas
21 21
_types=Tipos
22
_standard_installation=Instalaci?n est?ndar
23
_installation_from_file=Instalaci?n desde archivo
24
_installation_from_url=Instalaci?n desde URL
22
_standard_installation=Instalaci\u00f3n est\u00e1ndar
23
_installation_from_file=Instalaci\u00f3n desde archivo
24
_installation_from_url=Instalaci\u00f3n desde URL
25 25
_name=Nombre
26
_version=Versi?n
26
_version=Versi\u00f3n
27 27
_type=Tipo
28 28
_already_installed,_check_to_reinstall=Ya instalado, marca para reinstalar.
29 29
_checked_to_reinstall=Marcado para reinstalar.
......
32 32
_already_installed_but_not_installable=Ya instalado pero no instalable.
33 33
_official_recommended=Official y recomendado
34 34
_official=Oficial
35
_not_official_recommended=No oficial, recomendado
36
_not_official=No oficial
35
_community_recommended=Comunidad, recomendado
36
_community=Comunidad
37 37
_downloading=Descargando
38 38
_start_download=Comenzar descarga
39 39
_download_progress=Progreso de la descarga
40 40
_Cant_download_package_files=No se han podido descargar los ficheros del paquete
41
_do_you_want_to_continue=?Desea continuar?
41
_do_you_want_to_continue=\u00bfDesea continuar?
42 42
_Download_error=Error en la descarga
43 43
_finished=Terminado
44 44
_the_selected_file_does_not_exist=El archivo seleccionado no existe.
45
_execute_adding_error=Error al a?adir
45
_execute_adding_error=Error al a\u00f1adir
46 46
_progress=Progreso
47 47
_select_plugins=Selecciona paquetes
48
_There_are_no_packages_in_typical_installation_to_select=No hay paquetes en la instalaci?n t?pica para seleccionar
49
_do_you_want_to_continue=?Desea continuar?
50
_do_you_want_to_continue_anyway=?Desea continuar de todas formas?
48
_There_are_no_packages_in_typical_installation_to_select=No hay paquetes en la instalaci\u00f3n t\u00edpica para seleccionar
49
_do_you_want_to_continue=\u00bfDesea continuar?
50
_do_you_want_to_continue_anyway=\u00bfDesea continuar de todas formas?
51 51
_Some_of_the_selected_addons_should_not_be_installed_simultaneously=Algunos de los complementos seleccionados no deben ser instalados simultaneamente.
52 52
_Installing_these_addons_may_cause_errors=La instalacion de estos complementos puede causar errores 
53 53
_you_have_selected_in_development_or_not_official_versions=Ha seleccionado versiones de desarrollo o no oficiales
......
55 55
_the_selected_packages_require_to_install_or_update_the_following_packages=Los complementos seleccionados requieren instalar o actualizar los siguientes complementos
56 56
_an_error_has_occurred_when_calculating_the_dependecies_of_the_packages_to_install=Se ha producido un error calculando las dependencias de los paquetes a instalar.
57 57
_an_error_has_occurred_when_calculating_the_dependecies_of_the_selected_packages=Se ha producido un error calculando las dependencias de los paquetes seleccionados.
58
_it_is_not_possible_to_verify_if_any_additional_package_is_needed_to_install_the_selected_packages=No es posible verificar si precisa alg?n paquete adicional para instalar los paquetes que ha seleccionado.
58
_it_is_not_possible_to_verify_if_any_additional_package_is_needed_to_install_the_selected_packages=No es posible verificar si precisa alg\u00fan paquete adicional para instalar los paquetes que ha seleccionado.
59 59
_a_problem_has_occurred_when_calculating_the_dependencies=Ha ocurrido un problema calculando las dependencias.
60 60
_if_you_want_you_can_select_again_manually_the_packets_that_might_be_necessary=Si lo desea puede volver a seleccionar manualmente los paquetes que estime pueden ser necesarios.
61
_do_you_want_to_continue_and_install_the_packages_you_already_have_selected=?Desea continuar instalando los paquetes que ya ha seleccionado?
61
_do_you_want_to_continue_and_install_the_packages_you_already_have_selected=\u00bfDesea continuar instalando los paquetes que ya ha seleccionado?
62 62
_cancel=Cancelar
63 63
_continue=Continuar
64 64
_error_creating_the_wizard=Error creando el asistente.
65
_malformed_url=Direcci?n URL incorrecta.
66
_the_package_source_files_url_is_malformed._Please_review_it=La URL de los archivos fuente del paquete es incorrecta. Por favor, rev?sala.
67
_the_owners_url_is_malformed._Please_review_it=La URL del propietario es incorrecta. Por favor, rev?sala.
65
_malformed_url=Direcci\u00f3n URL incorrecta.
66
_the_package_source_files_url_is_malformed._Please_review_it=La URL de los archivos fuente del paquete es incorrecta. Por favor, rev\u00edsala.
67
_the_owners_url_is_malformed._Please_review_it=La URL del propietario es incorrecta. Por favor, rev\u00edsala.
68 68
_advanced_options=Opciones avanzadas
69 69
_select_an_option=Selecciona una opcion.
70 70
_the_folder_install_already_exists._do_you_want_to_delete_it_before_proceeding?=El directorio install ya existe. Quieres borrarlo antes de continuar?
71 71
_Couldn't_delete_the_directory=No se pudo borrar el directorio.
72
_advanced_mode=El modo avanzado permite copiar recursos que est?n alojados fuera del directorio del plugin. No se recomienda usar esta opci?n.
72
_advanced_mode=El modo avanzado permite copiar recursos que est\u00e1n alojados fuera del directorio del plugin. No se recomienda usar esta opci\u00f3n.
73 73
_name=Nombre
74
_description=Descripci?n
75
_version=Versi?n
74
_description=Descripci\u00f3n
75
_version=Versi\u00f3n
76 76
_build=Build
77 77
_is_official=Es oficial?
78 78
_status=Estado
79
_code=C?digo
79
_code=C\u00f3digo
80 80
_operating_system=Sistema operativo
81 81
_architecture=Arquitectura
82
_java_version=Versi?n java
83
_gvSIG_desktop_version=Versi?n gvSIG desktop
82
_java_version=Versi\u00f3n java
83
_gvSIG_desktop_version=Versi\u00f3n gvSIG desktop
84 84
_package_owner=Propietario del paquete
85 85
_package_URL_owner=URL del propietario del paquete 
86
_sources_url=URL del c?digo fuente
86
_sources_url=URL del c\u00f3digo fuente
87 87
_dependencies=Dependencias
88 88
_plugin_description=Description del plugin
89 89
_plugin_to_install=Plugin a instalar
90 90
_enable_advanced_mode=Habilitar modo avanzado.
91 91
_package_file=Archivo del paquete
92
_package_index_file=Archivo del ?ndice del paquete
92
_package_index_file=Archivo del \u00edndice del paquete
93 93
_download_url=URL de descarga
94
_create_package_index=Crear ?ndice del paquete
94
_create_package_index=Crear \u00edndice del paquete
95 95
_output_options=Opciones de salida
96 96
_invalid_download_url=URL de descarga incorrecta.
97 97
_files_to_copy=Archivos a copiar
98 98
_the_folder_install/files_already_exists_do_you_want_to_delete_it_before_proceeding?=El directorio install/files ya existe. Desea borrarlo antes de continuar?
99 99
_ant_script=Script de ant
100
_select_installation_source=Selecciona fuente de instalaci?n
101
_select_installation_mode=Selecciona modo de instalaci?n
102
_gvSIG_packages_and_packages_and_index_sets=Paquetes gvSIG y sets de paquetes e ?ndices
100
_select_installation_source=Selecciona fuente de instalaci\u00f3n
101
_select_installation_mode=Selecciona modo de instalaci\u00f3n
102
_gvSIG_packages_and_packages_and_index_sets=Paquetes gvSIG y sets de paquetes e \u00edndices
103 103
_broken_package=Paquete roto
104
_install_addons_in_gvsig_standard_dist=instalar complementos incluidos en la distribuci?n gvSIG standard
104
_install_addons_in_gvsig_standard_dist=instalar complementos incluidos en la distribuci\u00f3n gvSIG standard
105 105
_install_addons_in_gvspki_or_gvspks_file=instalar complementos contenidos en un archivo .gvspki o .gvspks
106 106
_install_addons_from_remote_repo=instalar complementos desde un repositorio remoto
107 107
_These_packages_not_downloaded=No se han podido descargar estos paquetes
......
110 110
_Install_package=Instalar paquetes
111 111
_finished_Some_files_not_downloaded=Terminado. Algunos archivos no se pudieron descargar.
112 112
_downloading_files=Descargar archivos
113
_Installing_devel_addons_may_cause_errors=Instalar complementos en desarrollo puede provocar errores de funcionamiento en la aplicaci?n
113
_Installing_devel_addons_may_cause_errors=Instalar complementos en desarrollo puede provocar errores de funcionamiento en la aplicaci\u00f3n
114 114
_This_may_cause_issues_in_gvSIG=Esto puede provocar un mal funcionamiento de gvSIG
115 115

  
116 116
select_package_location=Indique la ubicacion en la que se generara el paquete
117
create_package_index=?Desea crear el indice para este paquete?
117
create_package_index=\u00bfDesea crear el indice para este paquete?
118 118
create_index_for_package=Crear indice para el paquete
119 119
select_package_index_location=Indique la ubicacion en la que se generara el indice
120 120
destination_package_url=Para crear un indice debera indicar la url desde la que se podra descargar su paquete una vez generado.
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/text_en.properties
6 6
_package_description=Package description
7 7
_installer_progress=Installer progress
8 8
_Compressing=Compressing
9
_Creating_index=Creating ?ndex
9
_Creating_index=Creating \u00edndex
10 10
_Finished=Finished
11 11
_cant_create_the_package=Can't create the package
12 12
_create_package=Create package
......
32 32
_already_installed_but_not_installable=Already installed but not installable
33 33
_official_recommended=Official and recommended
34 34
_official=Official
35
_not_official_recommended=Not official, recommended
36
_not_official=Not official
35
_community_recommended=Community, recommended
36
_community=Community
37 37
_downloading=Downloading
38 38
_start_download=Start download
39 39
_progress=Progress
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/resources/org/gvsig/installer/swing/impl/creation/panel/formPackageinfo.xml
67 67
        <field name="state" label="State" type="string" mandatory="false" defaultValue="testing" group="General">
68 68
          <description>State of the package</description>
69 69
          <availableValues>
70
          	<value label="devel">devel</value>
70
            <value label="devel">devel</value>
71 71
            <value label="testing">testing</value>
72 72
            <value label="pilot">pilot</value>
73 73
            <value label="prototype">prototype</value>
......
85 85
        </field>
86 86
        
87 87
        <field name="official" label="Official" type="boolean" group="General">
88
          <description>Check if the package is a official package of gvSIG project</description>
88
          <availableValues>
89
            <value label="Official">true</value>
90
            <value label="Community">false</value>
91
          </availableValues>
92
          <description>The package is a community or an official package of gvSIG project</description>
89 93
        </field>
90 94

  
91 95
        <field name="sources-url" label="Source code URL" type="URL" mandatory="false" group="General">
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/panel/renderers/OfficialRecommendedCellRenderer.java
82 82

  
83 83
			return check;
84 84

  
85
		case NOT_OFFICIAL_RECOMMENDED:
85
		case COMMUNITY_RECOMMENDED:
86 86
			resource = this.getClass().getResource(
87 87
					"/images/notOfficialRecommended.png");
88 88
			icon = new ImageIcon(resource);
89 89
			check.setIcon(icon);
90 90
			check.setToolTipText(swingInstallerManager
91
					.getText("_not_official_recommended"));
91
					.getText("_community_recommended"));
92 92
			return check;
93 93

  
94
		case NOT_OFFICIAL_NOT_RECOMMENDED:
94
		case COMMUNITY_NOT_RECOMMENDED:
95 95
			resource = this.getClass().getResource("/images/notOfficial.png");
96 96
			icon = new ImageIcon(resource);
97 97
			check.setIcon(icon);
98 98
			check
99 99
					.setToolTipText(swingInstallerManager
100
							.getText("_not_official"));
100
							.getText("_community"));
101 101
			return check;
102 102

  
103 103
		default:
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/panel/model/PackagesTableModel.java
64 64
	}
65 65

  
66 66
	public enum PackageOfficialRecommended {
67
		OFFICIAL_NOT_RECOMMENDED, OFFICIAL_RECOMMENDED, NOT_OFFICIAL_RECOMMENDED, NOT_OFFICIAL_NOT_RECOMMENDED
67
		OFFICIAL_NOT_RECOMMENDED, OFFICIAL_RECOMMENDED, COMMUNITY_RECOMMENDED, COMMUNITY_NOT_RECOMMENDED
68 68
	}
69 69

  
70 70
	public class PackageOsAndArchitecture {
......
437 437
			}
438 438
		} else {
439 439
			if (currentlyVisiblePackages[rowIndex].isDefault()) {
440
				return PackageOfficialRecommended.NOT_OFFICIAL_RECOMMENDED;
440
				return PackageOfficialRecommended.COMMUNITY_RECOMMENDED;
441 441
			} else {
442
				return PackageOfficialRecommended.NOT_OFFICIAL_NOT_RECOMMENDED;
442
				return PackageOfficialRecommended.COMMUNITY_NOT_RECOMMENDED;
443 443
			}
444 444
		}
445 445
	}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/execution/panel/PackagesTablePanel.java
34 34
import java.awt.Insets;
35 35
import java.awt.event.MouseEvent;
36 36
import java.awt.event.MouseListener;
37
import java.io.IOException;
38
import java.io.InputStream;
37 39
import java.net.URL;
38 40
import java.util.List;
41
import java.util.Locale;
42
import java.util.logging.Level;
43
import java.util.logging.Logger;
39 44

  
40 45
import javax.swing.JEditorPane;
41 46
import javax.swing.JPanel;
......
44 49
import javax.swing.event.ListSelectionEvent;
45 50
import javax.swing.event.ListSelectionListener;
46 51
import javax.swing.table.TableColumnModel;
52
import org.apache.commons.io.FileUtils;
53
import org.apache.commons.io.IOUtils;
54
import org.apache.commons.lang3.StringUtils;
47 55

  
48 56
import org.gvsig.installer.lib.api.PackageInfo;
49 57
import org.gvsig.installer.swing.api.SwingInstallerLocator;
......
271 279
			return;
272 280
		}
273 281

  
274
		PackageInfo pkginfo = ((PackagesTableModel) pluginsTable.getModel())
275
				.getPackageInfoAt(row);
282
		PackageInfo pkginfo = ((PackagesTableModel) pluginsTable.getModel()).getPackageInfoAt(row);
283
		descriptionTextEditor.setText(getFullDescriptionAsHTML(pkginfo));
276 284

  
277
		HTMLCoder html = new HTMLCoder();
278
		html.addTitle(pkginfo.getName());
279
		html.addParagraph(pkginfo.getDescription());
280
		html.addBeginList();
281
		html.addListItem("code", pkginfo.getCode());
282
		html.addListItem("Organization", pkginfo.getOwner());
283
		html.addListItem("Organization URL", pkginfo.getOwnerURL());
284
		html.addListItem("Sources", pkginfo.getSourcesURL());
285
		html.addListItem("Dependencies", pkginfo.getDependencies());
286
		html.addListItem("Categories", pkginfo.getCategoriesAsString());
287
		html.addListItem("Official", pkginfo.isOfficial());
288
		html.addListItem("Signed", pkginfo.isSigned());
289
		html.addEndList();
290

  
291
		descriptionTextEditor.setText(html.toString());
292

  
293 285
		// get the view area to the top-left corner
294 286
		descriptionTextEditor.setCaretPosition(0);
295 287

  
296 288
	}
289
        
290
        public String getFullDescriptionAsHTML(PackageInfo pkginfo) {
291
            String html = null;
292
            String lang = Locale.getDefault().getLanguage();
293
            InputStream res = this.getClass().getClassLoader().getResourceAsStream("org/gvsig/installer/swing/impl/pkg_description_"+lang+".html");
294
            if( res == null ) {
295
                res = this.getClass().getClassLoader().getResourceAsStream("org/gvsig/installer/swing/impl/pkg_description_en.html");
296
            }
297
            if( res != null ) {
298
                try {
299
                    List<String> lines = IOUtils.readLines(res);
300
                    html = StringUtils.join(lines,null);
301
                    res.close();
302
                } catch (Exception ex) {
303
                    // Do nothing
304
                }
305
            }
306
            if( html == null ) {
307
		HTMLCoder coder = new HTMLCoder();
308
		coder.addTitle(pkginfo.getName());
309
		coder.addParagraph(pkginfo.getDescription());
310
		coder.addBeginList();
311
		coder.addListItem("code", pkginfo.getCode());
312
		coder.addListItem("Organization", pkginfo.getOwner());
313
		coder.addListItem("Organization URL", pkginfo.getOwnerURL());
314
		coder.addListItem("Sources", pkginfo.getSourcesURL());
315
		coder.addListItem("Dependencies", pkginfo.getDependencies());
316
		coder.addListItem("Categories", pkginfo.getCategoriesAsString());
317
		coder.addListItem("Official", pkginfo.isOfficial());
318
		coder.addEndList();
319
                return coder.toString();
320
            }
321
            
322
            html = html.replace("${gvsig.package.info.name}",pkginfo.getName());
323
            html = html.replace("${gvsig.package.info.description}",pkginfo.getDescription());
324
            html = html.replace("${gvsig.package.info.official}",pkginfo.isOfficial()?"true":"false");
325
            html = html.replace("${gvsig.package.info.official.label}",pkginfo.isOfficial()?"official":"community");
326
            html = html.replace("${gvsig.package.info.owner}",pkginfo.getOwner());
327
            html = html.replace("${gvsig.package.info.webURL}",pkginfo.getWebURL()==null? "":pkginfo.getWebURL().toString());
328
            html = html.replace("${gvsig.package.info.categories}",pkginfo.getCategoriesAsString());
329
            html = html.replace("${gvsig.package.info.sourcesURL}",pkginfo.getSourcesURL()==null?"":pkginfo.getSourcesURL().toString());
330
            html = html.replace("${gvsig.package.info.code}",pkginfo.getCode());
331
            html = html.replace("${gvsig.package.info.dependencies}",pkginfo.getDependencies()==null?"":pkginfo.getDependencies().toString());
332
            html = html.replace("${gvsig.package.info.version}",pkginfo.getVersion()==null?"":pkginfo.getVersion().toString());
333
            html = html.replace("${gvsig.package.info.state}",pkginfo.getState());
334
            html = html.replace("${gvsig.package.info.operatingSystem}",pkginfo.getOperatingSystem());
335
            html = html.replace("${gvsig.package.info.architecture}",pkginfo.getArchitecture());
336
            html = html.replace("${gvsig.package.info.javaVM}",pkginfo.getJavaVM());
337
            return html;
338
        }
297 339

  
298 340
	public void setFilter(PackageFilter filter) {
299 341
		PackagesTableModel pluginsTableModel = (PackagesTableModel) pluginsTable
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.swing/org.gvsig.installer.swing.impl/src/main/java/org/gvsig/installer/swing/impl/DefaultJShowPackageStatusAndAskContinuePanel.java
60 60
		this.createUI(manager, message);
61 61
	}
62 62

  
63
	private void buildPackageList(List<PackageInfo> packages) {
64
		this.packages = new ArrayList<String>();
65
		for (int i = 0; i < packages.size(); i++) {
66
			PackageInfo pkg = packages.get(i);
67
			if (!pkg.isOfficial()) {
68
				this.packages.add(pkg.getName() + " ("
69
						+ swingInstallerManager.getText("_not_official") + ")");
70
			} else {
71
			    
72
			    if (InstallerManager.STATE.FINAL.equalsIgnoreCase(pkg.getState())) {
73
			        continue;
74
			    } else if (InstallerManager.STATE.TESTING.equalsIgnoreCase(pkg.getState())) {
75
			        continue;
63
    private void buildPackageList(List<PackageInfo> packages) {
64
        this.packages = new ArrayList<>();
65
        for (int i = 0; i < packages.size(); i++) {
66
            PackageInfo pkg = packages.get(i);
67
            if (!pkg.isOfficial()) {
68
                this.packages.add(pkg.getName() + " ("
69
                        + swingInstallerManager.getText("_community") + ")");
70
            } else {
71

  
72
                if (InstallerManager.STATE.FINAL.equalsIgnoreCase(pkg.getState())) {
73
                    continue;
74
                } else if (InstallerManager.STATE.TESTING.equalsIgnoreCase(pkg.getState())) {
75
                    continue;
76 76
                } else if (pkg.getState().toLowerCase().startsWith(InstallerManager.STATE.RC.toLowerCase())) {
77 77
                    continue;
78 78
                } else if (pkg.getState().toLowerCase().startsWith(InstallerManager.STATE.BETA.toLowerCase())) {
......
80 80
                } else {
81 81
                    this.packages.add(pkg.getName() + " (" + pkg.getState() + ")");
82 82
                }
83
			}
84
		}
85
	}
83
            }
84
        }
85
    }
86 86

  
87 87
	private void createUI(SwingInstallerManager manager, String message) {
88 88
		this.setLayout(new BorderLayout());

Also available in: Unified diff