Statistics
| Revision:

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