Revision 42982 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/src/main/java/org/gvsig/fmap/geom/GeometryManager.java

View differences:

GeometryManager.java
59 59
/**
60 60
 * This singleton provides a centralized access to gvSIG's Geometry Model.
61 61
 * Its responsibilities are:<br>
62
 * 
62
 *
63 63
 * <ul>
64 64
 * <li>Offering a set of convenient methods for registering and retrieving
65 65
 * geometry types.
......
68 68
 * <li>Offering a set of convenient methods for registering and retrieving new
69 69
 * geometries.
70 70
 * </ul>
71
 * 
71
 *
72 72
 * @author jiyarza
73 73
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
74 74
 */
......
79 79
        public final static String FROMWKT = "FromWKT";
80 80
        public final static String FROMWKB = "FromWKB";
81 81
        public final static String FROMEWKB = "FromEWKB";
82
        
82

  
83 83
        public final static String TOWKT = "ToWKT";
84 84
        public final static String TOWKB = "ToWKB";
85 85
        public final static String TOEWKB = "ToEWKB";
......
95 95
     * class that implements the operation. The value of this variable must be
96 96
     * set using the method
97 97
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
98
     * 
98
     *
99 99
     * <pre>
100
     * 
100
     *
101 101
     * public class MyOperation extends GeometryOperation {
102
     * 
102
     *
103 103
     *     public static final int CODE = GeometryLocator.getGeometryManager()
104 104
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
105 105
     * }
106 106
     * </pre>
107
     * 
107
     *
108 108
     * </p>
109
     * 
109
     *
110 110
     * @param geomOpName
111 111
     *            Operation's unique name
112 112
     * @param geomOp
......
117 117
     *            associated
118 118
     * @return Index assigned to this operation. This index is used later to
119 119
     *         access the operation.
120
     * 
120
     *
121 121
     */
122 122
    public int registerGeometryOperation(String geomOpName,
123 123
        GeometryOperation geomOp, GeometryType geomType);
......
133 133
     * class that implements the operation. The value of this variable must be
134 134
     * set using the method
135 135
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
136
     * 
136
     *
137 137
     * <pre>
138
     * 
138
     *
139 139
     * public class MyOperation extends GeometryOperation {
140
     * 
140
     *
141 141
     *     public static final int CODE = GeometryLocator.getGeometryManager()
142 142
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
143 143
     * }
144 144
     * </pre>
145
     * 
145
     *
146 146
     * </p>
147
     * 
147
     *
148 148
     * @param geomOpName
149 149
     *            Operation's unique name
150 150
     * @param geomOp
......
167 167
     * class that implements the operation. The value of this variable must be
168 168
     * set using the method
169 169
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
170
     * 
170
     *
171 171
     * <pre>
172
     * 
172
     *
173 173
     * public class MyOperation extends GeometryOperation {
174
     * 
174
     *
175 175
     *     public static final int CODE = GeometryLocator.getGeometryManager()
176 176
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
177 177
     * }
178 178
     * </pre>
179
     * 
179
     *
180 180
     * </p>
181 181
     * <p>
182 182
     * This method is only used if you have not a reference to the GeometryType
183 183
     * associated to the geometry class. If you have such reference then it is
184 184
     * slightly faster to use the method that receives the GeometryType.<br>
185 185
     * </p>
186
     * 
186
     *
187 187
     * @param geomOpName
188 188
     *            Operation's unique name
189 189
     * @param geomOp
......
219 219
     * class that implements the operation. The value of this variable must be
220 220
     * set using the method
221 221
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
222
     * 
222
     *
223 223
     * <pre>
224
     * 
224
     *
225 225
     * public class MyOperation extends GeometryOperation {
226
     * 
226
     *
227 227
     *     public static final int CODE = GeometryLocator.getGeometryManager()
228 228
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
229 229
     * }
230 230
     * </pre>
231
     * 
231
     *
232 232
     * </p>
233
     * 
233
     *
234 234
     * @param geomOpName
235 235
     *            Operation's unique name
236 236
     * @param geomOp
......
244 244
     */
245 245
    public int registerGeometryOperation(String geomOpName,
246 246
        GeometryOperation geomOp, int type);
247
    
247

  
248 248
    /**
249 249
     * <p>
250 250
     * Registers a GeometryOperation associated to all the geometries which
251
     * super type matches with a concrete type. Returns an unique index that 
251
     * super type matches with a concrete type. Returns an unique index that
252 252
     * is used later to identify and invoke the operation.<br>
253 253
     * </p>
254 254
     * <p>
......
256 256
     * class that implements the operation. The value of this variable must be
257 257
     * set using the method
258 258
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
259
     * 
259
     *
260 260
     * <pre>
261
     * 
261
     *
262 262
     * public class MyOperation extends GeometryOperation {
263
     * 
263
     *
264 264
     *     public static final int CODE = GeometryLocator.getGeometryManager()
265 265
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
266 266
     * }
267 267
     * </pre>
268
     * 
268
     *
269 269
     * </p>
270
     * 
270
     *
271 271
     * @param geomOpName
272 272
     *            Operation's unique name
273 273
     * @param geomOp
......
282 282
     */
283 283
    public int registerGeometryOperationBySuperType(String geomOpName,
284 284
        GeometryOperation geomOp, int superType);
285
    
285

  
286 286
    /**
287 287
     * <p>
288 288
     * Registers a GeometryOperation associated to all the geometries which
289
     * super subType matches with a concrete subType. Returns an unique index that 
289
     * super subType matches with a concrete subType. Returns an unique index that
290 290
     * is used later to identify and invoke the operation.<br>
291 291
     * </p>
292 292
     * <p>
......
294 294
     * class that implements the operation. The value of this variable must be
295 295
     * set using the method
296 296
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
297
     * 
297
     *
298 298
     * <pre>
299
     * 
299
     *
300 300
     * public class MyOperation extends GeometryOperation {
301
     * 
301
     *
302 302
     *     public static final int CODE = GeometryLocator.getGeometryManager()
303 303
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
304 304
     * }
305 305
     * </pre>
306
     * 
306
     *
307 307
     * </p>
308
     * 
308
     *
309 309
     * @param geomOpName
310 310
     *            Operation's unique name
311 311
     * @param geomOp
......
332 332
     * class that implements the operation. The value of this variable must be
333 333
     * set using the method
334 334
     * {@link GeometryManager#getGeometryOperationCode(String)}:<BR>
335
     * 
335
     *
336 336
     * <pre>
337
     * 
337
     *
338 338
     * public class MyOperation extends GeometryOperation {
339
     * 
339
     *
340 340
     *     public static final int CODE = GeometryLocator.getGeometryManager()
341 341
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
342 342
     * }
343 343
     * </pre>
344
     * 
344
     *
345 345
     * </p>
346
     * 
346
     *
347 347
     * @param geomOpName
348 348
     *            Operation's unique name
349 349
     * @param geomOp
......
360 360

  
361 361
    /**
362 362
     * <p>
363
     * Registers a GeometryType instance. 
363
     * Registers a GeometryType instance.
364 364
     * </p>
365
     * 
365
     *
366 366
     * @param geometryType
367 367
     *            A {@link GeometryType} instance to create {@link Geometry} objects
368 368
     */
369 369
    public void registerGeometryType(GeometryType geometryType);
370
    
370

  
371 371
    /**
372 372
     * <p>
373 373
     * Registers a Geometry implementation class with a predefined geometry type
......
377 377
     * </p>
378 378
     * <p>
379 379
     * How to register a geometry class with a predefined type:
380
     * 
380
     *
381 381
     * <pre>
382
     * 
382
     *
383 383
     * GeometryType geomType = GeometryLocator.getGeometryManager()
384 384
     *     .registerBasicGeometryType(Point2D.class, &quot;Point2D&quot;, Geometry.TYPES.POINT,
385 385
     *         Geometry.SYBTYPES.GEOM2D);
386 386
     * </pre>
387
     * 
387
     *
388 388
     * </p>
389
     * 
389
     *
390 390
     * @param geomClass
391 391
     *            Geometry subclass. It must not be null and must implement
392 392
     *            Geometry, otherwise an exception
......
409 409
     */
410 410
    public GeometryType registerGeometryType(Class geomClass, String name,
411 411
        int type, int subType);
412
    
412

  
413 413
    /**
414 414
     * <p>
415 415
     * Registers a Geometry implementation class with a predefined geometry type
416 416
     * and returns the associated GeometryType instance. Available predefined
417 417
     * types are defined in {@link Geometry.TYPES} and the subtypes are defined
418
     * in {@link Geometry.SUBTYPES}.    
418
     * in {@link Geometry.SUBTYPES}.
419 419
     * </p>
420 420
     * <p>
421 421
     * It adds also the super type and the super subType of the geometry, that
422
     * can be used to check if the type (or the subtype) inherits of other 
422
     * can be used to check if the type (or the subtype) inherits of other
423 423
     * type (or subType)
424 424
     * </p>
425 425
     * <p>
426 426
     * How to register a geometry class with a predefined type:
427
     * 
427
     *
428 428
     * <pre>
429
     * 
429
     *
430 430
     * GeometryType geomType = GeometryLocator.getGeometryManager()
431 431
     *     .registerBasicGeometryType(Arc3D.class, &quot;Arc3D&quot;, Geometry.TYPES.ARC,
432 432
     *         Geometry.SYBTYPES.GEOM3D, Geometry.TYPES.CURVE, Geometry.SYBTYPES.GEOM2D);
433 433
     * </pre>
434
     * 
434
     *
435 435
     * </p>
436
     * 
436
     *
437 437
     * @param geomClass
438 438
     *            Geometry subclass. It must not be null and must implement
439 439
     *            Geometry, otherwise an exception
......
462 462
     */
463 463
    public GeometryType registerGeometryType(Class geomClass, String name,
464 464
        int type, int subType, int superType, int superSubType);
465
    
465

  
466 466
    /**
467 467
     * <p>
468 468
     * Registers a Geometry implementation class with a predefined geometry type
469 469
     * and returns the associated GeometryType instance. Available predefined
470 470
     * types are defined in {@link Geometry.TYPES} and the subtypes are defined
471
     * in {@link Geometry.SUBTYPES}.    
471
     * in {@link Geometry.SUBTYPES}.
472 472
     * </p>
473 473
     * <p>
474
     * It adds also the super type of the geometry, that can be used to 
474
     * It adds also the super type of the geometry, that can be used to
475 475
     * check if the type inherits of other type.
476 476
     * </p>
477 477
     * <p>
478 478
     * How to register a geometry class with a predefined type:
479
     * 
479
     *
480 480
     * <pre>
481
     * 
481
     *
482 482
     * GeometryType geomType = GeometryLocator.getGeometryManager()
483 483
     *     .registerBasicGeometryType(Arc3D.class, &quot;Arc3D&quot;, Geometry.TYPES.ARC,
484 484
     *         Geometry.SYBTYPES.GEOM3D, Geometry.TYPES.CURVE);
485 485
     * </pre>
486
     * 
486
     *
487 487
     * </p>
488
     * 
488
     *
489 489
     * @param geomClass
490 490
     *            Geometry subclass. It must not be null and must implement
491 491
     *            Geometry, otherwise an exception
......
502 502
     *            {@link Geometry.SUBTYPES}
503 503
     * @param superType
504 504
     *              Super type of a geometry. Must be a value defined in
505
     *            {@link Geometry.TYPES}   
505
     *            {@link Geometry.TYPES}
506 506
     * @return Instance of GeometryType associated to the Geometry
507 507
     *         implementation class
508 508
     *         geomClass
......
511 511
     */
512 512
    public GeometryType registerGeometryType(Class geomClass, String name,
513 513
        int type, int subType, int superType);
514
    
514

  
515 515
    /**
516 516
     * <p>
517 517
     * Registers a Geometry implementation class with a predefined geometry type
518 518
     * and returns the associated GeometryType instance. Available predefined
519 519
     * types are defined in {@link Geometry.TYPES} and the subtypes are defined
520
     * in {@link Geometry.SUBTYPES}.    
520
     * in {@link Geometry.SUBTYPES}.
521 521
     * </p>
522 522
     * <p>
523 523
     * It adds also the super types and the super subTypes of the geometry, that
524
     * can be used to check if the type (or the subtype) inherits of other 
524
     * can be used to check if the type (or the subtype) inherits of other
525 525
     * types (or subTypes)
526 526
     * </p>
527 527
     * <p>
528 528
     * How to register a geometry class with a predefined type:
529
     * 
529
     *
530 530
     * <pre>
531
     * 
531
     *
532 532
     * GeometryType geomType = GeometryLocator.getGeometryManager()
533 533
     *     .registerBasicGeometryType(Circle3DM.class, &quot;Circle3DM&quot;, Geometry.TYPES.CIRCLE,
534 534
     *         Geometry.SYBTYPES.GEOM3DM,
535 535
     *         new int[]{Geometry.TYPES.CURVE, Geometry.TYPES.GEOMETRY},
536 536
     *         new int[]{Geometry.SYBTYPES.GEOM2D, Geometry.SYBTYPES.GEOM3D});
537 537
     * </pre>
538
     * 
538
     *
539 539
     * </p>
540
     * 
540
     *
541 541
     * @param geomClass
542 542
     *            Geometry subclass. It must not be null and must implement
543 543
     *            Geometry, otherwise an exception
......
566 566
     */
567 567
    public GeometryType registerGeometryType(Class geomClass, String name,
568 568
        int type, int subType, int[] superTypes, int superSubTypes[]);
569
    
569

  
570 570
    /**
571 571
     * <p>
572 572
     * Registers a Geometry implementation class with a predefined geometry type
573 573
     * and returns the associated GeometryType instance. Available predefined
574 574
     * types are defined in {@link Geometry.TYPES} and the subtypes are defined
575
     * in {@link Geometry.SUBTYPES}.    
575
     * in {@link Geometry.SUBTYPES}.
576 576
     * </p>
577 577
     * <p>
578 578
     * It adds also the super types and the super subTypes of the geometry, that
......
580 580
     * </p>
581 581
     * <p>
582 582
     * How to register a geometry class with a predefined type:
583
     * 
583
     *
584 584
     * <pre>
585
     * 
585
     *
586 586
     * GeometryType geomType = GeometryLocator.getGeometryManager()
587 587
     *     .registerBasicGeometryType(Circle2D.class, &quot;Circle2DM&quot;, Geometry.TYPES.CIRCLE,
588 588
     *         Geometry.SYBTYPES.GEOM2D,
589
     *         new int[]{Geometry.TYPES.CURVE, Geometry.TYPES.SURFACE});        
589
     *         new int[]{Geometry.TYPES.CURVE, Geometry.TYPES.SURFACE});
590 590
     * </pre>
591
     * 
591
     *
592 592
     * </p>
593
     * 
593
     *
594 594
     * @param geomClass
595 595
     *            Geometry subclass. It must not be null and must implement
596 596
     *            Geometry, otherwise an exception
......
628 628
     * In this case the symbolic name will be the geometry's simple class name
629 629
     * </p>
630 630
     * How to register a new geometry type:
631
     * 
631
     *
632 632
     * <pre>
633
     * 
633
     *
634 634
     * GeometryType geomType = GeometryLocator.getGeometryManager()
635 635
     *     .registerBasicGeometryType(Point2D.class, Geometry.TYPES.POINT,
636 636
     *         Geometry.SYBTYPES.GEOM2D);
637 637
     * </pre>
638
     * 
638
     *
639 639
     * @param geomClass
640 640
     *            Geometry implementation class. It must not be null and must
641 641
     *            implement Geometry,
......
659 659
     * Returns an instance of GeometryType given the Geometry type and the
660 660
     * subtype.
661 661
     * </p>
662
     * 
662
     *
663 663
     * @param type
664 664
     *            Type of geometry. Must be a value defined in
665 665
     *            {@link Geometry.TYPES}
......
685 685
     * </p>
686 686
     * <p>
687 687
     * This example creates a point2D and sets the coordinates to 1,1:
688
     * 
688
     *
689 689
     * <pre>
690 690
     * Point point =
691 691
     *     (Point) GeometryLocator.getGeometryManager().create(GEOMETRY.TYPES.POINT,
......
693 693
     * point.setX(1);
694 694
     * point.setY(1);
695 695
     * </pre>
696
     * 
696
     *
697 697
     * </p>
698
     * 
698
     *
699 699
     * @param geomType
700 700
     *            The geometry type
701 701
     * @return
......
712 712
     * Creates a Envelope with a concrete subtype. The envelope is empty and it
713 713
     * have to be filled with the corners once has been created.
714 714
     * </p>
715
     * 
715
     *
716 716
     * @param subType
717 717
     *            SubType of envelope. Must be a value defined in
718 718
     *            {@link Geometry.SUBTYPES}
......
728 728
     * Creates a Envelope with a concrete subtype. It sets the values for the
729 729
     * lower corner and the upper corner (in 2D) using the method parameters.
730 730
     * </p>
731
     * 
731
     *
732 732
     * @param minX
733 733
     *            The minimum value for the X coordinate.
734 734
     * @param minY
......
758 758
     * This example creates a point2D and sets the coordinates to 1,1: It
759 759
     * supposes that there is a Point2D class with name "Point2D".
760 760
     * </p>
761
     * 
761
     *
762 762
     * <pre>
763 763
     * Point point = (Point) GeometryLocator.getGeometryManager().create(&quot;Point2D&quot;);
764 764
     * point.setX(1);
765 765
     * point.setY(1);
766 766
     * </pre>
767
     * 
767
     *
768 768
     * @param name
769 769
     *            The name of the geometry type
770 770
     * @return
......
777 777

  
778 778
    /**
779 779
     * Create a geometry from a WKT definition.
780
     * 
780
     *
781 781
     * This is a utility method to wrap the invocation to the operation
782 782
     * {@link OPERATIONS#FROMWKT}.
783
     * 
783
     *
784 784
     * @param wkt
785 785
     *            geometry in Well-known text format
786
     * 
786
     *
787 787
     * @return the geometry as a Geometry
788
     * 
788
     *
789 789
     * @throws CreateGeometryException
790 790
     * @throws GeometryException
791 791
     */
......
797 797

  
798 798
    /**
799 799
     * Create a geometry from a WKB definition.
800
     * 
800
     *
801 801
     * This is a utility method to wrap the invocation to the operation
802 802
     * {@link OPERATIONS#FROMWKB}.
803
     * 
803
     *
804 804
     * @param wkb
805 805
     *            geometry in well-known binary format
806
     * 
806
     *
807 807
     * @return the geometry as a Geometry
808
     * 
808
     *
809 809
     * @throws CreateGeometryException
810 810
     * @throws GeometryException
811 811
     */
......
822 822
     * This example creates a point2D and sets the coordinates to 1,1. It
823 823
     * supposes that there is a Point2D class with the id 1.
824 824
     * </p>
825
     * 
825
     *
826 826
     * <pre>
827 827
     * Point point =
828 828
     *     (Point) GeometryLocator.getGeometryManager().create(Geometry.TYPES.POINT,
......
830 830
     * point.setX(1);
831 831
     * point.setY(1);
832 832
     * </pre>
833
     * 
833
     *
834 834
     * @param type
835 835
     *            Type of geometry. Must be a value defined in
836 836
     *            {@link Geometry.TYPES}
......
850 850
     * <p>
851 851
     * It creates a null geometry with a concrete subtype.
852 852
     * <p>
853
     * 
853
     *
854 854
     * @param subType
855 855
     *            SubType of geometry. Must be a value defined in
856 856
     *            {@link Geometry.SUBTYPES}
......
869 869
     * Create a new point with a concrete type and sets the value for the X and
870 870
     * the Y.
871 871
     * </p>
872
     * 
872
     *
873 873
     * @param x
874 874
     *            The X coordinate
875 875
     * @param y
......
888 888

  
889 889
    /**
890 890
     * Create a new line with a concrete type. Use later addVertex to add
891
     * vertex to te line. 
892
     * 
891
     * vertex to te line.
892
     *
893 893
     * @param subType SubType of geometry. Must be a value defined in {@link Geometry.SUBTYPES}
894 894
     * @return a line
895 895
     * @throws CreateGeometryException
......
906 906
    /**
907 907
     * Create a new polygon with a concrete type.
908 908
     * Use later addVertex to add vertex to te polygon.
909
     * 
909
     *
910 910
     * @param subType
911 911
     *            SubType of geometry. Must be a value defined in
912 912
     *            {@link Geometry.SUBTYPES}
......
928 928
    /**
929 929
     * Create a new multipoint with a concrete subtype.
930 930
     * Use addPrimitive to populate the multipoint.
931
     * 
931
     *
932 932
     * @param subType
933 933
     *            SubType of geometry. Must be a value defined in
934 934
     *            {@link Geometry.SUBTYPES}
......
939 939
     */
940 940
    public MultiPoint createMultiPoint(int subType)
941 941
        throws CreateGeometryException;
942
    
942

  
943 943
    /**
944 944
     * Create a new multicurve with a concrete subtype.
945 945
     * Use addPrimitive to populate the multicurve.
946
     * 
946
     *
947 947
     * @param subType
948 948
     *            SubType of geometry. Must be a value defined in
949 949
     *            {@link Geometry.SUBTYPES}
......
959 959
    /**
960 960
     * Create a new multisurface with a concrete subtype.
961 961
     * Use later addPrimitive to populate.
962
     * 
962
     *
963 963
     * @param subType
964 964
     *            SubType of geometry. Must be a value defined in
965 965
     *            {@link Geometry.SUBTYPES}
......
983 983
     * For better performance, if you need to call an operation multiple times,
984 984
     * use this method only once and keep the returned object in a local
985 985
     * variable over which you can iterate. For instance:
986
     * 
986
     *
987 987
     * <pre>
988 988
     * // Get the operation you need
989 989
     * GeometryManager gm = GeometryLocator.getGeometryManager()
990 990
     * GeometryOperation geomOp = null;
991 991
     * try {
992
     *    geomOp = gm.getGeometryOperation(Draw2D.CODE, Geometry.TYPES.POINT, 
992
     *    geomOp = gm.getGeometryOperation(Draw2D.CODE, Geometry.TYPES.POINT,
993 993
     *    Geometry.SUBTYPES.GEOM2D);
994 994
     * } catch (GeometryTypeNotSupportedException gtnse) {
995 995
     *    // treat exception
996 996
     * } catch (GeometryOperationNotSupportedException gonse) {
997 997
     *    // treat exception
998 998
     * }
999
     * 
999
     *
1000 1000
     *  // Fill the operation context with required params
1001 1001
     * GeometryOperationContext ctx = new GeometryOperationContext();
1002
     * 
1002
     *
1003 1003
     *  // Here is the main loop where you call the operation
1004 1004
     * for (int i=0; i<myGeometries.length; i++) {
1005 1005
     *    Object result = geomOp.invoke(myGeometries[i], ctx);
1006 1006
     * }
1007 1007
     * </pre>
1008
     * 
1008
     *
1009 1009
     * </p>
1010
     * 
1010
     *
1011 1011
     * @param opCode
1012 1012
     *            The operation code
1013 1013
     * @param type
......
1041 1041
     * For better performance, if you need to call an operation multiple times,
1042 1042
     * use this method only once and keep the returned object in a local
1043 1043
     * variable over which you can iterate. For instance:
1044
     * 
1044
     *
1045 1045
     * <pre>
1046 1046
     * // Get the operation you need
1047 1047
     * GeometryManager gm = GeometryLocator.getGeometryManager()
......
1051 1051
     * } catch (GeometryOperationNotSupportedException gonse) {
1052 1052
     *    // treat exception
1053 1053
     * }
1054
     * 
1054
     *
1055 1055
     *  // Fill the operation context with required params
1056 1056
     * FromWKBGeometryOperationContext ctx = new FromWKBGeometryOperationContext();
1057
     * 
1057
     *
1058 1058
     *  // Here is the main loop where you call the operation
1059 1059
     * for (int i=0; i<myGeometriesWKB.length; i++) {
1060 1060
     *    ctx.setData(myGeometriesWKB[i]);
1061 1061
     *    Object result = geomOp.invoke(null, ctx);
1062 1062
     * }
1063 1063
     * </pre>
1064
     * 
1064
     *
1065 1065
     * </p>
1066
     * 
1066
     *
1067 1067
     * @param opCode
1068 1068
     *            The operation code
1069 1069
     * @return Geometry operation
......
1080 1080
     * Invokes an operation given its code, the geometry and the operation
1081 1081
     * context holding the parameters required for the operation.
1082 1082
     * </p>
1083
     * 
1083
     *
1084 1084
     * @param opCode
1085 1085
     *            Operation code.
1086 1086
     * @param geom
......
1100 1100
     * Invokes an operation given its code, the geometry and the operation
1101 1101
     * context holding the parameters required for the operation.
1102 1102
     * </p>
1103
     * 
1103
     *
1104 1104
     * @param geomOpName
1105 1105
     *            Operation name.
1106 1106
     * @param geom
......
1120 1120
     * Invokes an operation given its code, and the operation context holding
1121 1121
     * the parameters required for the operation.
1122 1122
     * </p>
1123
     * 
1123
     *
1124 1124
     * @param geomOpName
1125 1125
     *            Operation name.
1126 1126
     * @param ctx
......
1142 1142
     * By convention this method is used to set the value of the final and
1143 1143
     * static variable that is located in the classes that implements the
1144 1144
     * operation:<BR>
1145
     * 
1145
     *
1146 1146
     * <pre>
1147
     * 
1147
     *
1148 1148
     * public class MyOperation extends GeometryOperation {
1149
     * 
1149
     *
1150 1150
     *     public static final int CODE = GeometryLocator.getGeometryManager()
1151 1151
     *         .getGeometryOperationCode(&quot;MyOperation&quot;);
1152 1152
     * }
1153 1153
     * </pre>
1154
     * 
1154
     *
1155 1155
     * </p>
1156
     * 
1156
     *
1157 1157
     * @param geomOpName
1158 1158
     *            Name used to register the geometry operation
1159 1159
     * @return
......
1164 1164
    /**
1165 1165
     * Returns a list with the name of the operations that have been
1166 1166
     * registered.
1167
     * 
1167
     *
1168 1168
     * @return
1169 1169
     *         A list of the registered operations.
1170 1170
     */
......
1173 1173
    /**
1174 1174
     * Returns the flatness used to convert a curve is a set
1175 1175
     * of points.
1176
     * 
1176
     *
1177 1177
     * @return
1178 1178
     *         The flatness.
1179 1179
     */
......
1181 1181

  
1182 1182
    /**
1183 1183
     * Sets the application flatness.
1184
     * 
1184
     *
1185 1185
     * @param flatness
1186 1186
     *            The flatness to set
1187 1187
     */
1188 1188
    public void setFlatness(double flatness);
1189
    
1189

  
1190 1190
    /**
1191 1191
     * Create a memory spatial index with the default implementation.
1192
     * 
1192
     *
1193 1193
     * @return a new SpatialIndex
1194 1194
     */
1195 1195
    public SpatialIndex createDefaultMemorySpatialIndex() throws ServiceException;
1196 1196

  
1197
    
1197

  
1198 1198
    /**
1199 1199
     * Create a spatial index with the implementation specified as name.
1200 1200
     * If the creation of index don't requery parameters can be passed a null.
1201
     * 
1201
     *
1202 1202
     * @param name of the type of spatial index to create
1203 1203
     * @param parameters used to create the index or null.
1204 1204
     * @return the new SpatialIndex or null if not exists the type of index.
1205
     * @throws GeometryException 
1205
     * @throws GeometryException
1206 1206
     */
1207 1207
    public SpatialIndex createSpatialIndex(String name, DynObject parameters) throws ServiceException;
1208
    
1208

  
1209 1209
    /**
1210 1210
     * Return the name of the factory of the spatial index required.
1211
     * 
1211
     *
1212 1212
     * @param name of the spatial index factory
1213 1213
     * @return the SpatialIndexFactory required or null if not exists
1214 1214
     */
1215 1215
    public SpatialIndexFactory getSpatialIndexFactory(String name);
1216
    
1216

  
1217 1217
    /**
1218 1218
     * Create a GeneralPathX to populate a geometry.
1219
     * This method is deprecated, instead use OrientablePrimitive#addVertex(Point) to add vertex to 
1219
     * This method is deprecated, instead use OrientablePrimitive#addVertex(Point) to add vertex to
1220 1220
     * primitive geometries or {@link MultiPrimitive#addPrimitive(org.gvsig.fmap.geom.primitive.Primitive)} to add geometries to an aggregate.
1221
     * 
1221
     *
1222 1222
     * @param rule
1223 1223
     * @param pathIterator , can be null
1224 1224
     * @return a GeneralPathX
1225
     * @deprecated use method of Geometry to handle this 
1225
     * @deprecated use method of Geometry to handle this
1226 1226
     * @see OrientablePrimitive#addVertex(Point) or {@link MultiPrimitive#addPrimitive(org.gvsig.fmap.geom.primitive.Primitive)}
1227
     * 
1227
     *
1228 1228
     */
1229 1229
    public IGeneralPathX createGeneralPath(int rule, PathIterator pathIterator);
1230 1230

  
......
1233 1233
	 * Create a new curve with a concrete type and sets the value for the
1234 1234
	 * coordinates using a GeneralPathX.
1235 1235
	 * </p>
1236
	 * 
1236
	 *
1237 1237
	 * @param generalPathX
1238 1238
	 *            It is used to set the values for the X and Y coordinates.
1239 1239
	 * @param subType
......
1244 1244
	 * @throws CreateGeometryException
1245 1245
	 *             This exception is thrown when the manager can not create
1246 1246
	 *             the geometry.
1247
	 * @deprecated use {@link #createCurve(int)} and OrientablePrimitive#addVertex(Point) 
1247
	 * @deprecated use {@link #createCurve(int)} and OrientablePrimitive#addVertex(Point)
1248 1248
	 */
1249 1249
	public Curve createCurve(GeneralPathX generalPathX, int subType)
1250 1250
	    throws CreateGeometryException;
1251
	
1251

  
1252
	 /**
1253
     * <p>
1254
     * Create a new multipoint with a concrete type and sets the value for the
1255
     * coordinates using a GeneralPathX.
1256
     * </p>
1257
     *
1258
     * @param generalPathX
1259
     *            It is used to set the values for the X and Y coordinates.
1260
     * @param subType
1261
     *            SubType of geometry. Must be a value defined in
1262
     *            {@link Geometry.SUBTYPES}
1263
     * @return A multipoint
1264
     * @throws CreateGeometryException
1265
     *             This exception is thrown when the manager can not create the
1266
     *             geometry.
1267
     * @deprecated use {@link #createMultiCurve(int)} and {@link MultiPrimitive#addPrimitive(org.gvsig.fmap.geom.primitive.Primitive)}
1268
     */
1269
    public MultiPoint createMultiPoint(GeneralPathX generalPathX, int subType)
1270
            throws CreateGeometryException;
1252 1271
	/**
1253 1272
	 * <p>
1254 1273
	 * Create a new multicurve with a concrete type and sets the value for the
1255 1274
	 * coordinates using a GeneralPathX.
1256 1275
	 * </p>
1257
	 * 
1276
	 *
1258 1277
	 * @param generalPathX
1259 1278
	 *            It is used to set the values for the X and Y coordinates.
1260 1279
	 * @param subType
......
1268 1287
	 */
1269 1288
	public MultiCurve createMultiCurve(GeneralPathX generalPathX, int subType)
1270 1289
	        throws CreateGeometryException;
1271
	
1290

  
1272 1291
	/**
1273 1292
	 * <p>
1274 1293
	 * Create a new surface with a concrete type and sets the value for the
1275 1294
	 * coordinates using a GeneralPathX.
1276 1295
	 * </p>
1277
	 * 
1296
	 *
1278 1297
	 * @param generalPathX
1279 1298
	 *            It is used to set the values for the X and Y coordinates.
1280 1299
	 * @param subType
......
1289 1308
	 */
1290 1309
	public Surface createSurface(GeneralPathX generalPathX, int subType)
1291 1310
	    throws CreateGeometryException;
1292
	
1311

  
1293 1312
	/**
1294 1313
	 * <p>
1295 1314
	 * Create a new multisurface with a concrete type and sets the value for the
1296 1315
	 * coordinates using a GeneralPathX.
1297 1316
	 * </p>
1298
	 * 
1317
	 *
1299 1318
	 * @param generalPathX
1300 1319
	 *            It is used to set the values for the X and Y coordinates.
1301 1320
	 * @param subType
......
1309 1328
	 */
1310 1329
	public MultiSurface createMultiSurface(GeneralPathX generalPathX,
1311 1330
	    int subType) throws CreateGeometryException;
1312
	
1331

  
1313 1332
}

Also available in: Unified diff