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