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 / editablefeaturetype.py @ 468
History | View | Annotate | Download (2.07 KB)
1 |
|
---|---|
2 |
|
3 |
from org.gvsig.fmap.dal.feature.impl import DefaultEditableFeatureType as JEditableFeatureType |
4 |
|
5 |
from org.gvsig.fmap.dal import DataTypes |
6 |
from org.gvsig.app import ApplicationLocator |
7 |
from java.lang import RuntimeException |
8 |
|
9 |
import featuretype |
10 |
|
11 |
def _append(self, name, type, size=None, default=None, precision=4): |
12 |
application = ApplicationLocator.getManager() |
13 |
datamanager = application.getDataManager() |
14 |
dataTypes = application.getDataTypesManager() |
15 |
if isinstance(type, str): |
16 |
try:
|
17 |
type = dataTypes.getType(type) # dataType constant value from string |
18 |
type = dataTypes.get(type)
|
19 |
except:
|
20 |
raise RuntimeError( |
21 |
"Feature Property Data type (%s) is not valid. name=%s, type=%s, size=%s, default=%s)" % (
|
22 |
type,
|
23 |
name, |
24 |
type,
|
25 |
size, |
26 |
default |
27 |
) |
28 |
) |
29 |
elif isinstance(type, int): |
30 |
try:
|
31 |
type = dataTypes.get(type)
|
32 |
except:
|
33 |
raise RuntimeError( |
34 |
"Data type (%s) is not valid. name=%s, type=%s, size=%s, default=%s)" % (
|
35 |
type,
|
36 |
name, |
37 |
type,
|
38 |
size, |
39 |
default |
40 |
) |
41 |
) |
42 |
elif !isinstance(type,DataType): |
43 |
raise RuntimeError( |
44 |
"Data type (%s) is not valid. name=%s, type=%s, size=%s, default=%s)" % (
|
45 |
type,
|
46 |
name, |
47 |
type,
|
48 |
size, |
49 |
default |
50 |
) |
51 |
) |
52 |
|
53 |
attribute = self.add(name, type.getType()) |
54 |
|
55 |
if size != None: |
56 |
attribute.setSize(size) |
57 |
|
58 |
if default != None: |
59 |
attribute.setDefaultValue(default) |
60 |
|
61 |
if precision != None and type.getType() in (DataTypes.DOUBLE, DataTypes.FLOAT): |
62 |
attribute.setPrecision(precision) |
63 |
|
64 |
if type.getType() == DataTypes.GEOMETRY and self.getDefaultGeometryAttributeName()==None: |
65 |
self.setDefaultGeometryAttributeName(name)
|
66 |
|
67 |
return attribute
|
68 |
|
69 |
|
70 |
#
|
71 |
# Inject new methods in the class JEditableFeatureType
|
72 |
#
|
73 |
JEditableFeatureType.__call__ = featuretype._call |
74 |
JEditableFeatureType.__iter__ = featuretype._iter |
75 |
JEditableFeatureType.__len__ = featuretype._len |
76 |
JEditableFeatureType.get = featuretype._get |
77 |
JEditableFeatureType.getAttrNames = featuretype._getAttrNames |
78 |
JEditableFeatureType.append = _append |
79 |
|