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

History | View | Annotate | Download (2.48 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
from org.gvsig.app import ApplicationLocator
7

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

    
11
def __features(self, expresion = None, sortby="", asc=True):
12
  if expresion == None and sortby =="":
13
    return self.getFeatureSet()
14

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

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

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

    
36
def __append(self, *args, **kwargs):
37
  try:
38
    if not self.isEditing():
39
      JFeatureStore.edit(self)
40

    
41
    if len(args) ==1:
42
      if not isinstance(args[0], dict):
43
        raise ValueError("Argument should be a dict")
44
      if kwargs == None:
45
        kwargs = args[0]
46
      else:
47
        kwargs.update(args[0])
48

    
49
    f = self.createNewFeature()
50

    
51
    if f == None:
52
      raise RuntimeException("Failed to create a new Feature")
53

    
54
    for k,v in kwargs.iteritems():
55
      f.set(k,v)
56
    self.insert(f)
57

    
58
  except Exception, ex:
59
    raise RuntimeException("Can't append values %s to layer %s (%s)" % (
60
      repr(kwargs),
61
      self.getName(),
62
      str(ex)
63
      )
64
    )
65

    
66
def __update(self, feature):
67
  if not self.isEditing():
68
      JFeatureStore.edit(self, mode)
69
  JFeatureStore.update(self, feature)
70

    
71
def __edit(self, mode=1):
72
  if not self.isEditing():
73
    JFeatureStore.edit(self, mode)
74

    
75
def __commit(self):
76
  try:
77
    self.finishEditing()
78
  except Exception, ex:
79
    self.abort()
80
    raise RuntimeException("Can't finish layer edition, cancelling changes. %s" % repr(ex))
81

    
82
def __abort(self):
83
  self.cancelEditing()
84

    
85
def __call(self):
86
  return self
87

    
88

    
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