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