Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / lib / gvsig_2_3_0 / dynobject.py @ 496

History | View | Annotate | Download (2.45 KB)

1

    
2
from org.gvsig.tools.dynobject.impl import DefaultDynObject
3

    
4
def _get(self, name):
5
  return self.getDynValue(name)
6
  
7
def _set(self, name, value):
8
  self.setDynValue(name, value)        
9

    
10
def _setValues(self,*args,**kwargs):
11
  if len(args)!=0:
12
    if len(args)!=2:
13
      raise IllegalArgumentException("Incorrent number of arguments ("+len(args)+"), expected 2.")
14
    self[args[0]] = args[1]
15
    return
16
  for k,v in kwargs.iteritems():
17
    self[k] = v
18

    
19
def _setitem(self,name, value):
20
  if self.getDynClass().getDynField(name) == None:
21
    raise KeyError(name)
22
  self.setDynValue(name, value)        
23

    
24
def _setattr(self,name, value):
25
  if self.getDynClass().getDynField(name) == None:
26
    raise AttributeError(self.__class__.__name__,name)
27
  self.setDynValue(name, value)        
28

    
29
def _getValues(self):
30
  items = dict()
31
  for name,value in self.iteritems():
32
    items[name] = value
33
  return items 
34

    
35
def _getitem(self,name):
36
  try:
37
    return self.getDynValue(name)
38
  except Throwable, ex:
39
    raise KeyError(name)
40

    
41
def _getattr(self,attributeName):
42
  # FIX console error when try to introspect feature object
43
  if name in ('__methods__'):
44
      return dict()
45
  elif name in ('__members__'):
46
      return self.getValues().keys()
47
  elif name == '__dict__':
48
      return self.getValues()      
49
      
50
  try:
51
    v = getattr(self, name, None)
52
    if v == None:
53
      v = self.getDynValue(name)        
54
    return v
55
  except Throwable, ex:
56
    raise AttributeError(self.__class__.__name__,name)
57

    
58
def _len(self):
59
  return len(self.getDynClass().getDynFields())
60

    
61
def _iteritems(self):
62
  fields = self.getDynClass().getDynFields()
63
  for field in fields:
64
    name = field.getName()
65
    value = self.get(field.getName())
66
    yield name,value
67
  
68
def _itervalues(self):
69
  fields = self.getDynClass().getDynFields()
70
  for field in fields:
71
    name = field.getName()
72
    value = self.get(field.getName())
73
    yield value
74
  
75
def _iterkeys(self):
76
  fields = self.getDynClass().getDynFields()
77
  for field in fields:
78
    name = field.getName()
79
    yield name
80

    
81
#---------
82
  
83
DefaultDynObject.setValues = _setValues
84
DefaultDynObject.getValues = _getValues
85
DefaultDynObject._get = _get
86
DefaultDynObject._set = _set
87

    
88
DefaultDynObject.__getitem__ = _getitem
89
DefaultDynObject.__setitem__ = _setitem
90
DefaultDynObject.__getattr__ = _getattr
91
DefaultDynObject.__setattr__ = _setattr
92
DefaultDynObject.__len__ = _len
93
DefaultDynObject.iteritems = _iteritems
94
DefaultDynObject.itervalues = _itervalues
95
DefaultDynObject.iterkeys = _iterkeys