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 @ 740
History | View | Annotate | Download (2.73 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 |
from org.gvsig.tools.evaluator import Evaluator |
8 |
|
9 |
#
|
10 |
# Save methods edit and update that are rewriten in python
|
11 |
#
|
12 |
super_edit = JFeatureStore.edit |
13 |
super_update = JFeatureStore.update |
14 |
|
15 |
def __getSchema(self): |
16 |
return self.getDefaultFeatureType() |
17 |
|
18 |
def __features(self, expresion = None, sortby="", asc=True): |
19 |
if expresion == None and sortby =="": |
20 |
return self.getFeatureSet() |
21 |
|
22 |
try:
|
23 |
application = ApplicationLocator.getManager() |
24 |
datamanager = application.getDataManager() |
25 |
query = self.createFeatureQuery()
|
26 |
if sortby != "": |
27 |
order = FeatureQueryOrder() |
28 |
order.add(sortby, asc) |
29 |
query.setOrder(order) |
30 |
if expresion != None: |
31 |
if isinstance(expresion,Evaluator): |
32 |
query.setFilter(expresion) |
33 |
else:
|
34 |
query.setFilter(datamanager.createExpresion(expresion)) |
35 |
fset = self.getFeatureSet(query)
|
36 |
return fset
|
37 |
except Exception, e: |
38 |
return None |
39 |
|
40 |
def __iter(self): |
41 |
return self.getFeatureSet().__iter__() |
42 |
|
43 |
def __len(self): |
44 |
return self.getFeatureSet().getSize() |
45 |
|
46 |
def __append(self, *args, **kwargs): |
47 |
try:
|
48 |
if not self.isEditing(): |
49 |
self.edit()
|
50 |
|
51 |
if len(args) ==1: |
52 |
if not isinstance(args[0], dict): |
53 |
raise ValueError("Argument should be a dict") |
54 |
if kwargs == None: |
55 |
kwargs = args[0]
|
56 |
else:
|
57 |
kwargs.update(args[0])
|
58 |
|
59 |
f = self.createNewFeature()
|
60 |
|
61 |
if f == None: |
62 |
raise RuntimeException("Failed to create a new Feature") |
63 |
|
64 |
for k,v in kwargs.iteritems(): |
65 |
f.set(k,v) |
66 |
self.insert(f)
|
67 |
|
68 |
except Exception, ex: |
69 |
raise RuntimeException("Can't append values %s to layer %s (%s)" % ( |
70 |
repr(kwargs),
|
71 |
self.getName(),
|
72 |
str(ex)
|
73 |
) |
74 |
) |
75 |
|
76 |
def __update(self, feature): |
77 |
if not self.isEditing(): |
78 |
self.edit()
|
79 |
super_update(self, feature)
|
80 |
|
81 |
def __edit(self, mode=JFeatureStore.MODE_FULLEDIT): |
82 |
if not self.isEditing(): |
83 |
super_edit(self, mode)
|
84 |
|
85 |
def __commit(self): |
86 |
try:
|
87 |
self.finishEditing()
|
88 |
except Exception, ex: |
89 |
self.abort()
|
90 |
raise RuntimeException("Can't finish layer edition, cancelling changes. %s" % repr(ex)) |
91 |
|
92 |
def __abort(self): |
93 |
self.cancelEditing()
|
94 |
|
95 |
def __call(self): |
96 |
return self |
97 |
|
98 |
|
99 |
#
|
100 |
# Inject new methods in the class JFeatureStore
|
101 |
#
|
102 |
JFeatureStore.getSchema = __getSchema |
103 |
JFeatureStore.features = __features |
104 |
JFeatureStore.append = __append |
105 |
JFeatureStore.update = __update |
106 |
JFeatureStore.edit = __edit |
107 |
JFeatureStore.commit = __commit |
108 |
JFeatureStore.abort = __abort |
109 |
JFeatureStore.__call__ = __call |
110 |
JFeatureStore.__iter__ = __iter |
111 |
JFeatureStore.__len__ = __len |
112 |
|
113 |
|
114 |
|