gvsig-scripting / org.gvsig.scripting.app / trunk / org.gvsig.scripting.app / org.gvsig.scripting.app.extension / src / main / resources-plugin / scripting / lib / gvsig21 / vectorial / feature.py @ 442
History | View | Annotate | Download (1.47 KB)
1 |
|
---|---|
2 |
from org.gvsig.fmap.dal.feature.impl import DefaultFeature as JFeature |
3 |
|
4 |
class Feature(JFeature): |
5 |
"""Represents feature data It's a wrapper from gvSIG
|
6 |
"""
|
7 |
def __init__(self,feature): |
8 |
WrapperToJava.__init__(self,feature)
|
9 |
self.featureNoEditable = None |
10 |
|
11 |
def geometry(self): |
12 |
"""Returns feature geometry"""
|
13 |
return self.getDefaultGeometry() |
14 |
|
15 |
def getValues(self): |
16 |
"""Returns dictionary with the pair name, value, feature attributes"""
|
17 |
descriptor = self.getType()
|
18 |
items = dict()
|
19 |
for attr in descriptor.getAttributeDescriptors(): |
20 |
name = attr.getName() |
21 |
value = self.get(attr.getName())
|
22 |
items[name] = value |
23 |
return items
|
24 |
|
25 |
def edit(self): |
26 |
"""Returns editable feature instance"""
|
27 |
if not isinstance(self._javaobj, EditableFeature): |
28 |
self.featureNoEditable = self._javaobj |
29 |
self._javaobj = self._javaobj.getEditable() |
30 |
|
31 |
def __getitem__(self,key): |
32 |
return self.get(key) |
33 |
|
34 |
def __getattr__(self,name): |
35 |
#
|
36 |
#FIX console error when try to introspect feature object
|
37 |
if name in ('__methods__'): |
38 |
return dict() |
39 |
elif name in ('__members__'): |
40 |
return self.getValues().keys() |
41 |
elif name == '__dict__': |
42 |
return self.getValues() |
43 |
|
44 |
try:
|
45 |
v = getattr(self._javaobj, name, None) |
46 |
if v == None: |
47 |
v = self().get(name)
|
48 |
return v
|
49 |
except Throwable, ex:
|
50 |
raise RuntimeException("Can't access to attribute %s of feature (%s)" % (name, str(ex))) |
51 |
|