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 / featurestore.py @ 462

History | View | Annotate | Download (2.45 KB)

1

    
2
from java.lang import RuntimeException
3
from org.gvsig.fmap.dal.feature.impl import DefaultFeatureStore as JFeatureStore
4
from org.gvsig.fmap.dal.feature import FeatureQueryOrder
5
from java.lang import RuntimeException
6

    
7
def __getSchema(self):
8
  return self.getDefaultFeatureType()
9

    
10
def __features(self, expresion = None, sortby="", asc=True):
11
  if expresion == None and sortby =="":
12
    return self.getFeatureSet()         
13
  
14
  try:
15
    application = ApplicationLocator.getManager()
16
    datamanager =  application.getDataManager()
17
    query = self.createFeatureQuery()
18
    if sortby != "":
19
        order = FeatureQueryOrder()
20
        order.add(sortby, asc)
21
        query.setOrder(order)
22
    if expresion != None:
23
        query.setFilter(datamanager.createExpresion(expresion))
24
    fset = self.getFeatureSet(query)
25
  except Exception, e:
26
    return None
27
  return fset
28

    
29
def __iter(self):
30
  return self.getFeatureSet().__iter__()
31

    
32
def __len(self):
33
  return self.getFeatureSet().getSize()
34

    
35
def __append(self, *args, **kwargs):
36
  try:
37
    if not self.isEditing():
38
      self.super_edit() 
39

    
40
    if len(args) ==1:
41
      values.insert(args[0])
42
      return
43
    
44
    f = self.createNewFeature()
45
    
46
    if f == None:
47
      raise RuntimeException("Failed to create a new Feature")
48
      
49
    for k,v in kwargs.iteritems():
50
      f.set(k,v)
51
    self.insert(f)
52
      
53
  except Exception, ex:
54
    raise RuntimeException("Can't append values %s to layer %s (%s)" % (
55
      repr(kwargs), 
56
      self.getName(), 
57
      str(ex)
58
      )
59
    )
60

    
61
def __update(self, feature):
62
  if not self.isEditing():
63
      self.super_edit(self) 
64
  self.super_update(self,feature) 
65

    
66
def __edit(self):
67
  if not self.isEditing():
68
    self.super_edit()
69
    
70
def __commit(self):
71
  try:
72
    self.finishEditing()          
73
  except Exception, ex:
74
    self.abort()
75
    raise RuntimeException("Can't finish layer edition, cancelling changes. %s" % repr(ex))
76

    
77
def __abort(self):
78
  self.cancelEditing() 
79

    
80
def __call(self):
81
  return self    
82

    
83

    
84
#
85
# Save methods edit and update that are rewriten in python
86
#
87
JFeatureStore.super_edit = JFeatureStore.edit
88
JFeatureStore.super_update = JFeatureStore.update
89
#
90
# Inject new methods in the class JFeatureStore
91
#
92
JFeatureStore.getSchema = __getSchema
93
JFeatureStore.features = __features
94
JFeatureStore.append = __append
95
JFeatureStore.update = __update
96
JFeatureStore.edit = __edit
97
JFeatureStore.commit = __commit
98
JFeatureStore.abort = __abort
99
JFeatureStore.__call__ = __call
100
JFeatureStore.__iter__ = __iter
101
JFeatureStore.__len__ = __len
102

    
103

    
104