Revision 44297 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/DefaultFeature.java

View differences:

DefaultFeature.java
211 211
        }
212 212
    }
213 213

  
214
//  private Object getNumberByType(Number value, int type) {
215
//      if (type==DataTypes.DOUBLE){
216
//          return new Double(value.doubleValue());
217
//      }else if (type==DataTypes.FLOAT){
218
//          return new Float(value.floatValue());
219
//      }else if (type==DataTypes.LONG){
220
//          return new Long(value.longValue());
221
//      }else if (type==DataTypes.INT){
222
//          return new Integer(value.intValue());
223
//      }else if (type==DataTypes.STRING){
224
//          return value.toString();
225
//      }
226
//      return value;
227
//  }
228

  
229 214
    public void initializeValues() {
230 215
        FeatureType type = this.getType();
231
        Iterator iterator = type.iterator();
232

  
233
        while (iterator.hasNext()) {
234
            FeatureAttributeDescriptor attribute = (FeatureAttributeDescriptor) iterator
235
            .next();
216
        for (FeatureAttributeDescriptor attribute : type) {
236 217
            if (attribute.isAutomatic() || attribute.isReadOnly()
237 218
                    || attribute.isComputed() ) {
238 219
                continue;
......
251 232
    public void initializeValues(Feature feature) {
252 233
        FeatureType myType=this.getType();
253 234
        FeatureType type =feature.getType();
254
        Iterator iterator = type.iterator();
255

  
256
        while (iterator.hasNext()) {
257
            FeatureAttributeDescriptor attribute = (FeatureAttributeDescriptor) iterator
258
            .next();
235
        for (FeatureAttributeDescriptor attribute : type) {
259 236
            FeatureAttributeDescriptor myAttribute=myType.getAttributeDescriptor(attribute.getName());
260 237
            if (myAttribute != null) {
261 238
                this.set(myAttribute, feature.get(attribute.getIndex()));
......
264 241
    }
265 242

  
266 243

  
244
    @Override
267 245
    public FeatureStore getStore() {
268 246
        return (FeatureStore) this.storeRef.get();
269 247
    }
270 248

  
249
    @Override
271 250
    public FeatureType getType() {
272 251
        return this.data.getType();
273 252
    }
274 253

  
254
    @Override
275 255
    public EditableFeature getEditable() {
276 256
        return new DefaultEditableFeature(this);
277 257
    }
278 258

  
259
    @Override
279 260
    public Feature getCopy() {
280 261
        return new DefaultFeature(this);
281 262
    }
282 263

  
264
    @Override
265
    @SuppressWarnings("CloneDoesntCallSuperClone")
283 266
    public Object clone() throws CloneNotSupportedException {
284 267
        return new DefaultFeature(this);
285 268
    }
286 269

  
270
    @Override
287 271
    public FeatureReference getReference() {
288 272
        if (this.reference == null) {
289 273
            if (!isInserted()) {
......
313 297

  
314 298
    }
315 299

  
300
    @Override
316 301
    public void validate(int mode) throws DataException  {
317 302
        ((DefaultFeatureType) this.data.getType()).validateFeature(this, mode);
318 303
    }
319 304

  
305
    @Override
320 306
    public List getSRSs() {
321 307
        // TODO Auto-generated method stub
322 308
        return null;
323 309
    }
324 310

  
311
    @Override
325 312
    public Envelope getDefaultEnvelope() {
326 313
        Envelope envelope = this.data.getDefaultEnvelope();
327 314
        if( envelope == null ) {
......
371 358
        return time;
372 359
    }
373 360

  
361
    @Override
374 362
    public IProjection getDefaultSRS() {
375 363
        IProjection srs = this.data.getType().getDefaultSRS();
376 364
        if( srs == null ) {
......
381 369
        return srs;
382 370
    }
383 371

  
372
    @Override
384 373
    public List getGeometries() {
385 374
        // TODO Auto-generated method stub
386 375
        return null;
......
407 396
        return this.getFromProfile(descriptor.getIndex());
408 397
    }
409 398

  
399
    @Override
410 400
    public Object get(String name) {
411 401
        int index = this.data.getType().getIndex(name);
412 402
        if( index < 0 ) {
......
542 532
        return value;
543 533
    }
544 534

  
535
    @Override
536
    public byte[] getByteArray(String name) {
537
        return this.getByteArray(this.data.getType().getIndex(name));
538
    }
539

  
540
    @Override
541
    public byte[] getByteArray(int index) {
542
        return (byte[]) this.get(index);
543
    }
544

  
545
    @Override
545 546
    public Object[] getArray(String name) {
546 547
        return this.getArray(this.data.getType().getIndex(name));
547 548
    }
548 549

  
550
    @Override
549 551
    public Object[] getArray(int index) {
550 552
        return (Object[]) this.get(index);
551 553
    }
552 554

  
555
    @Override
553 556
    public boolean getBoolean(String name) {
554 557
        return this.getBoolean(this.data.getType().getIndex(name));
555 558
    }
556 559

  
560
    @Override
557 561
    public boolean getBoolean(int index) {
558 562
        Boolean value = ((Boolean) this.get(index,Boolean.class,DataTypes.BOOLEAN));
559 563
        if (value == null) {
560 564
            return false;
561 565
        }
562
        return value.booleanValue();
566
        return value;
563 567
    }
564 568

  
569
    @Override
565 570
    public byte getByte(String name) {
566 571
        return this.getByte(this.data.getType().getIndex(name));
567 572
    }
568 573

  
574
    @Override
569 575
    public byte getByte(int index) {
570 576
        Byte value = ((Byte) this.get(index,Byte.class,DataTypes.BYTE));
571 577
        if (value == null) {
572 578
            return 0;
573 579
        }
574
        return value.byteValue();
580
        return value;
575 581
    }
576 582

  
583
    @Override
577 584
    public Date getDate(String name) {
578 585
        return this.getDate(this.data.getType().getIndex(name));
579 586
    }
580 587

  
588
    @Override
581 589
    public Date getDate(int index) {
582 590
        Date value = ((Date) this.get(index,Date.class,DataTypes.DATE));
583 591

  
584 592
        return value;
585 593
    }
586 594

  
595
    @Override
587 596
    public double getDouble(String name) {
588 597
        return this.getDouble(this.data.getType().getIndex(name));
589 598
    }
590 599

  
600
    @Override
591 601
    public double getDouble(int index) {
592 602

  
593 603
        Double value = ((Double) this.get(index,Double.class,DataTypes.DOUBLE));
594 604
        if (value == null) {
595 605
            return 0;
596 606
        }
597
        return value.doubleValue();
607
        return value;
598 608
    }
599 609

  
610
    @Override
600 611
    public Feature getFeature(String name) {
601 612
        return this.getFeature(this.data.getType().getIndex(name));
602 613
    }
603 614

  
615
    @Override
604 616
    public Feature getFeature(int index) {
605 617
        return (Feature) this.get(index);
606 618
    }
607 619

  
620
    @Override
608 621
    public float getFloat(String name) {
609 622
        return this.getFloat(this.data.getType().getIndex(name));
610 623
    }
611 624

  
625
    @Override
612 626
    public float getFloat(int index) {
613 627
        Float value = ((Float) this.get(index,Float.class,DataTypes.FLOAT));
614 628
        if (value == null) {
615 629
            return 0;
616 630
        }
617
        return value.floatValue();
631
        return value;
618 632
    }
619 633

  
634
    @Override
620 635
    public Geometry getGeometry(String name) {
621 636
        return this.getGeometry(this.data.getType().getIndex(name));
622 637
    }
623 638

  
639
    @Override
624 640
    public Geometry getGeometry(int index) {
625 641
        return (Geometry) this.get(index,Geometry.class,DataTypes.GEOMETRY);
626 642
    }
627 643

  
644
    @Override
628 645
    public int getInt(String name) {
629 646
        return this.getInt(this.data.getType().getIndex(name));
630 647
    }
631 648

  
649
    @Override
632 650
    public int getInt(int index) {
633 651
        Integer value = ((Integer) this.get(index,Integer.class,DataTypes.INT));
634 652
        if (value == null) {
635 653
            return 0;
636 654
        }
637
        return ((Integer)value).intValue();
655
        return value;
638 656
    }
639 657

  
658
    @Override
640 659
    public long getLong(String name) {
641 660
        return this.getLong(this.data.getType().getIndex(name));
642 661
    }
643 662

  
663
    @Override
644 664
    public long getLong(int index) {
645 665
        Long value = ((Long) this.get(index,Long.class,DataTypes.LONG));
646 666
        if (value == null) {
647 667
            return 0;
648 668
        }
649
        return value.longValue();
669
        return value;
650 670
    }
651 671

  
672
    @Override
652 673
    public String getString(String name) {
653 674
        return this.getString(this.data.getType().getIndex(name));
654 675
    }
655 676

  
677
    @Override
656 678
    public String getString(int index) {
657 679
        return (String) this.get(index,String.class,DataTypes.STRING);
658 680
    }
659 681

  
682
    @Override
660 683
    public Object getContextValue(String name) {
661 684
        name = name.toLowerCase();
662 685
        if (name.equals("store")) {
......
674 697
        throw new IllegalArgumentException(name);
675 698
    }
676 699

  
700
    @Override
677 701
    public Iterator getDataNames() {
678 702
        class DataNamesIterator implements Iterator {
679 703
            Iterator attributeIteraror;
......
682 706
                this.attributeIteraror = feature.getType().iterator();
683 707
            }
684 708

  
709
            @Override
685 710
            public boolean hasNext() {
686 711
                return this.attributeIteraror.hasNext();
687 712
            }
688 713

  
714
            @Override
689 715
            public Object next() {
690 716
                return ((FeatureAttributeDescriptor) this.attributeIteraror
691 717
                        .next()).getName();
692 718
            }
693 719

  
720
            @Override
694 721
            public void remove() {
695 722
                throw new UnsupportedOperationException();
696 723
            }
......
699 726
        return new DataNamesIterator(this);
700 727
    }
701 728

  
729
    @Override
702 730
    public Object getDataValue(String name) {
703 731
        name = name.toLowerCase();
704 732
        try {
......
711 739
        }
712 740
    }
713 741

  
742
    @Override
714 743
    public Iterator getDataValues() {
715 744
        class DataValuesIterator implements Iterator {
716 745
            DefaultFeature feature;
......
720 749
                this.feature = feature;
721 750
            }
722 751

  
752
            @Override
723 753
            public boolean hasNext() {
724 754
                return current < feature.getType().size() - 1;
725 755
            }
726 756

  
757
            @Override
727 758
            public Object next() {
728 759
                return feature.get(current++);
729 760
            }
730 761

  
762
            @Override
731 763
            public void remove() {
732 764
                throw new UnsupportedOperationException();
733 765
            }
......
736 768
        return new DataValuesIterator(this);
737 769
    }
738 770

  
771
    @Override
739 772
    public boolean hasContextValue(String name) {
740 773
        name = name.toLowerCase();
741 774
        if (name.equals("store")) {
......
746 779
            return true;
747 780
        }
748 781

  
749
        if (name.equals("feature")) {
750
            return true;
751
        }
752
        return false;
782
        return name.equals("feature");
753 783
    }
754 784

  
785
    @Override
755 786
    public boolean hasDataValue(String name) {
756 787
        name = name.toLowerCase();
757 788
        return this.data.getType().getIndex(name) >= 0;
758 789
    }
759 790

  
760
        @Override
791
    @Override
761 792
    public Time getTime(int index) {
762 793
        return ((Time) this.get(index,Time.class,DataTypes.INSTANT));
763 794
    }
764 795

  
765
        @Override
796
    @Override
766 797
    public Time getTime(String name) {
767 798
        return this.getInstant(this.data.getType().getIndex(name));
768 799
    }
769 800

  
770
        @Override
801
    @Override
771 802
    public Instant getInstant(int index) {
772 803
        return ((Instant) this.get(index,Instant.class,DataTypes.INSTANT));
773 804
    }
774 805

  
775
        @Override
806
    @Override
776 807
    public Instant getInstant(String name) {
777 808
        return this.getInstant(this.data.getType().getIndex(name));
778 809
    }
779 810

  
780
        @Override
811
    @Override
781 812
    public Interval getInterval(int index) {
782 813
        return ((Interval) this.get(index,Interval.class,DataTypes.INTERVAL));
783 814
    }
784 815

  
785
        @Override
816
    @Override
786 817
    public Interval getInterval(String name) {
787 818
        return this.getInterval(this.data.getType().getIndex(name));
788 819
    }
......
793 824
        return facade;
794 825
    }
795 826

  
827
    @Override
796 828
    public String toString() {
797
       // StringBuffer buffer = new StringBuffer("Feature with values: ");
798
    	StringBuffer buffer = new StringBuffer("");
829
    	StringBuilder builder = new StringBuilder();
799 830
        FeatureAttributeDescriptor[] attributeDescriptors =
800 831
            getType().getAttributeDescriptors();
801 832
        for (int i = 0; i < attributeDescriptors.length; i++) {
802 833
            String name = attributeDescriptors[i].getName();
803
            //buffer.append(name).append("=").append(get(name));
804
            buffer.append(get(name));
834
            builder.append(get(name));
805 835
            if (i < attributeDescriptors.length - 1) {
806
                buffer.append(", ");
836
                builder.append(", ");
807 837
            }
808 838
        }
809
        return buffer.toString();
839
        return builder.toString();
810 840
    }
811 841

  
812 842

  

Also available in: Unified diff