Revision 10254

View differences:

trunk/extensions/extCAD/config/config.xml
3 3
	<libraries library-dir="./"/>
4 4
	<depends plugin-name="com.iver.cit.gvsig" />
5 5
	<depends plugin-name="com.iver.cit.gvsig.jdbc_spatial" />
6
	<depends plugin-name="com.iver.cit.gvsig.scripting" />
6 7
	<resourceBundle name="text"/>
7 8
	<extensions>
8 9
		<extension class-name="com.iver.cit.gvsig.CreateNewLayer"
......
240 241
				<action-tool icon="images/previousSel.png" action-command="previous_selection" tooltip="previous_selection" group="vista" position="19"/>
241 242
			</tool-bar>
242 243
		</extension>
243
		
244 244

  
245

  
245 246
		<extension class-name="com.iver.cit.gvsig.LayerPropertiesExtension"
246 247
			description="Abre el di?logo de propiedades de la capa."
247 248
			active="true" >
248 249
			<menu text="Capa/Propiedades" action-command="PROPERTIES"/>
249 250
		</extension>
251
		<extension class-name="com.iver.cit.gvsig.ExpresionFieldExtension"
252
			description="Extension that evaluate the expresion to a column."
253
			active="true">
254
			<menu text="field/expresion" tooltip="expresion"
255
				action-command="EXPRESION"
256
				icon="images/expresion.png" />
257
			<tool-bar name="field_toolbar">
258
				<action-tool icon="images/expresion.png"
259
					action-command="EXPRESION" tooltip="expresion"
260
					last="true"/>
261
			</tool-bar>
262
		</extension>
250 263
	</extensions>
251 264
</plugin-config>
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/Index.java
1
package com.iver.cit.gvsig.project.documents.table;
2
/**
3
 * @author Vicente Caballero Navarro
4
 */
5
public class Index {
6
private int index=0;
7

  
8
public void next() {
9
	index++;
10
}
11
public void previous() {
12
	index--;
13
}
14
public int get() {
15
	return index;
16
}
17
public void set(int i) {
18
	index=i;
19
}
20
}
0 21

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/GraphicOperator.java
1
package com.iver.cit.gvsig.project.documents.table;
2

  
3
import java.awt.geom.PathIterator;
4
import java.util.ArrayList;
5

  
6
import com.iver.cit.gvsig.fmap.core.IGeometry;
7
import com.iver.cit.gvsig.fmap.core.v02.FConverter;
8
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
9
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public abstract class GraphicOperator extends AbstractOperator{
14
	private FLyrVect lv=null;
15
	public void setLayer(FLyrVect lv) {
16
		this.lv=lv;
17
	}
18
	public FLyrVect getLayer() {
19
		return lv;
20
	}
21
	public abstract double process(Index index) throws DriverIOException;
22
	protected Double[][] getXY(IGeometry geometry) {
23
        ArrayList xs = new ArrayList();
24
        ArrayList ys = new ArrayList();
25
        double[] theData = new double[6];
26

  
27
        //double[] aux = new double[6];
28
        PathIterator theIterator;
29
        int theType;
30
        int numParts = 0;
31

  
32
        // boolean bFirst = true;
33
        // int xInt, yInt, antX = -1, antY = -1;
34
        theIterator = geometry.getPathIterator(null,FConverter.FLATNESS); //, flatness);
35

  
36
        // int numSegmentsAdded = 0;
37
        while (!theIterator.isDone()) {
38
            theType = theIterator.currentSegment(theData);
39

  
40
            switch (theType) {
41
            case PathIterator.SEG_MOVETO:
42
                numParts++;
43
                xs.add(new Double(theData[0]));
44
                ys.add(new Double(theData[1]));
45

  
46

  
47
                break;
48

  
49
            case PathIterator.SEG_LINETO:
50
                xs.add(new Double(theData[0]));
51
                ys.add(new Double(theData[1]));
52

  
53

  
54
                break;
55

  
56

  
57
            case PathIterator.SEG_CLOSE:
58
                xs.add(new Double(theData[0]));
59
                ys.add(new Double(theData[1]));
60

  
61
                break;
62
            } //end switch
63

  
64
            theIterator.next();
65
        } //end while loop
66

  
67
        Double[] x = (Double[]) xs.toArray(new Double[0]);
68
        Double[] y = (Double[]) ys.toArray(new Double[0]);
69

  
70
        return new Double[][] { x, y };
71

  
72
    }
73

  
74
}
0 75

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/ToRadians.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class ToRadians extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "toRadians";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double toRadians(double value){return java.lang.Math.toRadians(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/IsNumber.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class IsNumber extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "isNumber";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"boolean isNumber (String value){try{java.lang.Double.parseDouble(value);}catch(java.lang.NumberFormatException e){return false;}return true;};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Division.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
7
import com.iver.cit.gvsig.project.documents.table.IOperator;
8

  
9
/**
10
 * @author Vicente Caballero Navarro
11
 */
12
public class Division extends AbstractOperator{
13

  
14
	public String addText(String s) {
15
		return s.concat(toString());
16
	}
17

  
18
	public void eval(BSFManager interpreter) throws BSFException {
19
	}
20
	public String toString() {
21
		return "/";
22
	}
23
	public boolean isEnable() {
24
		return (getType()==IOperator.NUMBER);
25
	}
26

  
27
}
0 28

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/EndsWith.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class EndsWith extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+",\"\")";
17
	}
18
	public String toString() {
19
		return "endsWith";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"boolean endsWith(String value1,String value2){return value1.endsWith(value2);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Sin.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Sin extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "sin";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double sin(double value){return java.lang.Math.sin(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Asin.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Asin extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "asin";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double asin(double value){return java.lang.Math.asin(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Minus.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
7
import com.iver.cit.gvsig.project.documents.table.IOperator;
8
/**
9
 * @author Vicente Caballero Navarro
10
 */
11
public class Minus extends AbstractOperator{
12

  
13
	public String addText(String s) {
14
		return s.concat(toString());
15
	}
16
	public String toString() {
17
		return "-";
18
	}
19
	public void eval(BSFManager interpreter) throws BSFException {
20
	}
21
	public boolean isEnable() {
22
		return (getType()==IOperator.NUMBER || getType()==IOperator.DATE);
23
	}
24
}
0 25

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/ToNumber.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class ToNumber extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "toNumber";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double toNumber(String value){return java.lang.Double.parseDouble(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER );
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/IndexOf.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class IndexOf extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+", \"\")";
17
	}
18
	public String toString() {
19
		return "indexOf";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"int indexOf(String value1,String value2){return value1.indexOf(value2);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Exp.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Exp extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "exp";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double exp(double value){return java.lang.Math.exp(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Perimeter.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import java.awt.geom.Point2D;
4

  
5
import org.apache.bsf.BSFException;
6
import org.apache.bsf.BSFManager;
7

  
8
import com.iver.cit.gvsig.ExpresionFieldExtension;
9
import com.iver.cit.gvsig.fmap.MapContext;
10
import com.iver.cit.gvsig.fmap.ViewPort;
11
import com.iver.cit.gvsig.fmap.core.FShape;
12
import com.iver.cit.gvsig.fmap.core.IGeometry;
13
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
14
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
15
import com.iver.cit.gvsig.project.documents.table.GraphicOperator;
16
import com.iver.cit.gvsig.project.documents.table.IOperator;
17
import com.iver.cit.gvsig.project.documents.table.Index;
18
/**
19
 * @author Vicente Caballero Navarro
20
 */
21
public class Perimeter extends GraphicOperator{
22

  
23
	public String addText(String s) {
24
		return s.concat(toString()+"()");
25
	}
26
	public double process(Index index) throws DriverIOException {
27
		ReadableVectorial adapter = getLayer().getSource();
28
	   	IGeometry geom=adapter.getShape(index.get());
29
	   	Double[][] xsys=getXY(geom);
30
	    double dist = 0;
31
        double distAll = 0;
32

  
33
        ViewPort vp = getLayer().getMapContext().getViewPort();
34
        for (int i = 0; i < (xsys[0].length - 1); i++) {
35
            dist = 0;
36

  
37
            Point2D p = new Point2D.Double(xsys[0][i].doubleValue(), xsys[1][i].doubleValue());//vp.toMapPoint(new Point(event.getXs()[i].intValue(), event.getYs()[i].intValue()));
38
            Point2D p2 = new Point2D.Double(xsys[0][i + 1].doubleValue(), xsys[1][i + 1].doubleValue());//vp.toMapPoint(new Point(event.getXs()[i + 1].intValue(), event.getYs()[i + 1].intValue()));
39
            dist = vp.distanceWorld(p,p2);
40
            System.out.println("distancia parcial = "+dist);
41
            distAll += dist;
42
        }
43
        int distanceUnits=vp.getDistanceUnits();
44
		return distAll/MapContext.CHANGEM[distanceUnits];
45
	}
46
	public void eval(BSFManager interpreter) throws BSFException {
47
		interpreter.declareBean("perimeter",this,Perimeter.class);
48
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double perimeter(){return perimeter.process(indexRow);};");
49
	}
50
	public String toString() {
51
		return "perimeter";
52
	}
53
	public boolean isEnable() {
54
		if (getLayer()==null)
55
			return false;
56
		ReadableVectorial adapter = getLayer().getSource();
57
		int type=FShape.POINT;
58
		try {
59
			type=adapter.getShapeType();
60
		} catch (DriverIOException e) {
61
			e.printStackTrace();
62
		}
63
		return (getType()==IOperator.NUMBER && (type==FShape.POLYGON || type==FShape.LINE));
64
	}
65
}
0 66

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Abs.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9
/**
10
 * @author Vicente Caballero Navarro
11
 */
12
public class Abs extends AbstractOperator{
13

  
14
	public String addText(String s) {
15
		return toString()+"("+s+")";
16
	}
17
	public String toString() {
18
		return "abs";
19
	}
20
	public void eval(BSFManager interpreter) throws BSFException {
21
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double abs(double value){return java.lang.Math.abs(value);};");
22
	}
23
	public boolean isEnable() {
24
		return (getType()==IOperator.NUMBER);
25
	}
26
	public double abs(double value) {
27
		return java.lang.Math.abs(value);
28
	}
29
}
0 30

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Pow.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Pow extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+", \"\")";
17
	}
18

  
19
	public void eval(BSFManager interpreter) throws BSFException {
20
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double pow(double value1,double value2){return java.lang.Math.pow(value1,value2);};");
21
	}
22
	public String toString() {
23
		return "pow";
24
	}
25
	public boolean isEnable() {
26
		return (getType()==IOperator.NUMBER);
27
	}
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Trim.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Trim extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "trim";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"String trim(String value){return value.trim();};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/PointX.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.fmap.core.FShape;
8
import com.iver.cit.gvsig.fmap.core.IGeometry;
9
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
10
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
11
import com.iver.cit.gvsig.project.documents.table.GraphicOperator;
12
import com.iver.cit.gvsig.project.documents.table.IOperator;
13
import com.iver.cit.gvsig.project.documents.table.Index;
14
/**
15
 * @author Vicente Caballero Navarro
16
 */
17
public class PointX extends GraphicOperator{
18

  
19
	public String addText(String s) {
20
		return s.concat(toString()+"()");
21
	}
22
	public double process(Index index) throws DriverIOException {
23
		ReadableVectorial adapter = getLayer().getSource();
24
		IGeometry geom=adapter.getShape(index.get());
25
		Double[][] xsys=getXY(geom);
26
		return xsys[0][0].doubleValue();
27
	}
28
	public void eval(BSFManager interpreter) throws BSFException {
29
		interpreter.declareBean("pointX",this,PointX.class);
30
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double x(){return pointX.process(indexRow);};");
31
	}
32
	public String toString() {
33
		return "x";
34
	}
35
	public boolean isEnable() {
36
		if (getLayer()==null)
37
			return false;
38
		ReadableVectorial adapter = getLayer().getSource();
39
		int type=FShape.POINT;
40
		try {
41
			type=adapter.getShapeType();
42
		} catch (DriverIOException e) {
43
			e.printStackTrace();
44
		}
45
		return (getType()==IOperator.NUMBER && type==FShape.POINT);
46
	}
47
}
0 48

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/ToDegrees.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class ToDegrees extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "toDegrees";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22

  
23
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double toDegrees(double value){return java.lang.Math.toDegrees(value);};");
24
	}
25
	public boolean isEnable() {
26
		return (getType()==IOperator.NUMBER);
27
	}
28

  
29
}
0 30

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Tan.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Tan extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "tan";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double tan(double value){return java.lang.Math.tan(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Plus.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
7
import com.iver.cit.gvsig.project.documents.table.IOperator;
8
/**
9
 * @author Vicente Caballero Navarro
10
 */
11
public class Plus extends AbstractOperator{
12

  
13
	public String addText(String s) {
14
		return s.concat(toString());
15
	}
16
	public String toString() {
17
		return "+";
18
	}
19
	public void eval(BSFManager interpreter) throws BSFException {
20
	}
21
	public boolean isEnable() {
22
		return (getType()==IOperator.NUMBER || getType()==IOperator.STRING || getType()==IOperator.DATE);
23
	}
24
}
0 25

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Atan.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Atan extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "atan";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double asin(double value){return java.lang.Math.atan(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Cos.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Cos extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "cos";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double cos(double value){return java.lang.Math.cos(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/E.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class E extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return s.concat(toString()+"()");
17
	}
18
	public String toString() {
19
		return "e";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double e(){return java.lang.Math.E;};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Acos.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Acos extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "acos";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double acos(double value){return java.lang.Math.acos(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Round.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Round extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "round";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double round(double value){return java.lang.Math.round(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/ToLowerCase.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class ToLowerCase extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "toLowerCase";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"String toLowerCase(String value){return value.toLowerCase();};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Sqrt.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Sqrt extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "sqrt";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double sqrt(double value){return java.lang.Math.sqrt(value);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.NUMBER);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Equals.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class Equals extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+", \"\")";
17
	}
18
	public String toString() {
19
		return "equals";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"boolean equals(java.lang.Object value1,java.lang.Object value2){return value1.equals(value2);};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING || getType()==IOperator.DATE);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/ToUpperCase.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
7
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
8
import com.iver.cit.gvsig.project.documents.table.IOperator;
9

  
10
/**
11
 * @author Vicente Caballero Navarro
12
 */
13
public class ToUpperCase extends AbstractOperator{
14

  
15
	public String addText(String s) {
16
		return toString()+"("+s+")";
17
	}
18
	public String toString() {
19
		return "toUpperCase";
20
	}
21
	public void eval(BSFManager interpreter) throws BSFException {
22
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"String toUpperCase(String value){return value.toUpperCase();};");
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.STRING);
26
	}
27

  
28
}
0 29

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Equal.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.project.documents.table.AbstractOperator;
7
import com.iver.cit.gvsig.project.documents.table.IOperator;
8

  
9
/**
10
 * @author Vicente Caballero Navarro
11
 */
12
public class Equal extends AbstractOperator{
13

  
14
	public String addText(String s) {
15
		return s.concat(toString());
16
	}
17

  
18
	public void eval(BSFManager interpreter) throws BSFException {
19

  
20
	}
21
	public String toString() {
22
		return "==";
23
	}
24
	public boolean isEnable() {
25
		return (getType()==IOperator.DATE || getType()==IOperator.NUMBER || getType()==IOperator.STRING);
26
	}
27
}
0 28

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Area.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import java.awt.geom.Point2D;
4

  
5
import org.apache.bsf.BSFException;
6
import org.apache.bsf.BSFManager;
7
import org.cresques.cts.IProjection;
8

  
9
import com.iver.cit.gvsig.ExpresionFieldExtension;
10
import com.iver.cit.gvsig.fmap.MapContext;
11
import com.iver.cit.gvsig.fmap.ViewPort;
12
import com.iver.cit.gvsig.fmap.core.FShape;
13
import com.iver.cit.gvsig.fmap.core.IGeometry;
14
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
15
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
16
import com.iver.cit.gvsig.fmap.tools.geo.Geo;
17
import com.iver.cit.gvsig.project.documents.table.GraphicOperator;
18
import com.iver.cit.gvsig.project.documents.table.IOperator;
19
import com.iver.cit.gvsig.project.documents.table.Index;
20
/**
21
 * @author Vicente Caballero Navarro
22
 */
23
public class Area extends GraphicOperator{
24

  
25
	public String addText(String s) {
26
		return s.concat(toString()+"()");
27
	}
28
	public double process(Index index) throws DriverIOException {
29
		ReadableVectorial adapter = getLayer().getSource();
30
	   	IGeometry geom=adapter.getShape(index.get());
31
	   	int distanceUnits=getLayer().getMapContext().getViewPort().getDistanceUnits();
32
		return returnArea(geom)/Math.pow(MapContext.CHANGEM[distanceUnits],2);
33
	}
34
	public void eval(BSFManager interpreter) throws BSFException {
35
		interpreter.declareBean("area",this,Area.class);
36
		interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double area(){return area.process(indexRow);};");
37
	}
38
	public String toString() {
39
		return "area";
40
	}
41
	public boolean isEnable() {
42
		if (getLayer()==null)
43
			return false;
44
		ReadableVectorial adapter = getLayer().getSource();
45
		int type=FShape.POINT;
46
		try {
47
			type=adapter.getShapeType();
48
		} catch (DriverIOException e) {
49
			e.printStackTrace();
50
		}
51
		return (getType()==IOperator.NUMBER && type==FShape.POLYGON);
52
	}
53

  
54
	private double returnArea(IGeometry geom) {
55
		Double[][] xsys=getXY(geom);
56
		Double[] xs=xsys[0];
57
		Double[] ys=xsys[1];
58
		IProjection proj=getLayer().getMapContext().getProjection();
59
		if (proj.isProjected()) {
60
			return returnCoordsArea(xs,ys,new Point2D.Double(xs[xs.length-1].doubleValue(),ys[ys.length-1].doubleValue()));
61
		}
62
		return returnGeoCArea(xs,ys);
63
	}
64
	private double returnGeoCArea(Double[] xs,Double[] ys) {
65
		double[] lat=new double[xs.length];
66
		double[] lon=new double[xs.length];
67
		for (int K= 0; K < xs.length; K++){
68
			lon[K]= xs[K].doubleValue()/Geo.Degree;
69
			lat[K]= ys[K].doubleValue()/Geo.Degree;
70
		}
71
		return (Geo.sphericalPolyArea(lat,lon,xs.length-1)*Geo.SqM);
72
	}
73
	/**
74
	 * Calcula el ?rea.
75
	 *
76
	 * @param aux ?ltimo punto.
77
	 *
78
	 * @return ?rea.
79
	 */
80
	public double returnCoordsArea(Double[] xs,Double[] ys, Point2D point) {
81
		Point2D aux=point;
82
		double elArea = 0.0;
83
		Point2D pPixel;
84
		Point2D p = new Point2D.Double();
85
		Point2D.Double pAnt = new Point2D.Double();
86
		ViewPort vp = getLayer().getMapContext().getViewPort();
87
		for (int pos = 0; pos < xs.length-1; pos++) {
88
			pPixel = new Point2D.Double(xs[pos].doubleValue(),
89
					ys[pos].doubleValue());
90
			p = pPixel;
91
			if (pos == 0) {
92
				pAnt.x = aux.getX();
93
				pAnt.y = aux.getY();
94
			}
95
			elArea = elArea + ((pAnt.x - p.getX()) * (pAnt.y + p.getY()));
96
			pAnt.setLocation(p);
97
		}
98

  
99
		elArea = elArea + ((pAnt.x - aux.getX()) * (pAnt.y + aux.getY()));
100
		elArea = Math.abs(elArea / 2.0);
101
		return (elArea*(Math.pow(MapContext.CHANGEM[vp.getMapUnits()],2)));
102
	}
103
}
0 104

  
trunk/extensions/extCAD/src/com/iver/cit/gvsig/project/documents/table/operators/Pi.java
1
package com.iver.cit.gvsig.project.documents.table.operators;
2

  
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

  
6
import com.iver.cit.gvsig.ExpresionFieldExtension;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff