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 |
|