gvSIG bugs #4525
Scripting: Error de validación de parámetros al crear una tabla DBF
| Status: | Closed | % Done: | 0% | |
|---|---|---|---|---|
| Priority: | Normal | Spent time: | - | |
| Assignee: | ||||
| Category: | Scripting | |||
| Target version: | 2.4.0-2829 (rev. org.gvsig.desktop-2.0.195) | |||
| Severity: | Minor | Add-on version: | ||
| gvSIG version: | 2.4.0 | Add-on build: | ||
| gvSIG build: | Add-on resolve version: | |||
| Operative System: | Add-on resolve build: | |||
| Keywords: | Proyecto: | |||
| Has patch: | Hito: | |||
| Add-on name: | Unknown |
Description
Salta al intentar crear una tabla DBF.
El script incluye la parte de las librerías de scripting que utiliza:
# encoding: utf-8
import os
import time
import sys
import StringIO
import random
from java.util.prefs import Preferences
from java.awt import Color
from java.io import File
from java.lang import Throwable, RuntimeException
from org.gvsig.app import ApplicationLocator
from org.gvsig.fmap.dal.feature import FeatureType
from org.gvsig.fmap.mapcontext import MapContextLocator
from org.gvsig.andami import Utilities
from org.gvsig.fmap.crs import CRSFactory
from org.gvsig.app.project.documents.table import TableManager
from org.gvsig.fmap.geom import Geometry
from org.gvsig.app.project.documents.view import DefaultViewDocument
from org.gvsig.scripting.app.extension import ScriptingExtension
LOGGER_INFO=ScriptingExtension.INFO
LOGGER_WARN=ScriptingExtension.WARN
LOGGER_ERROR=ScriptingExtension.ERROR
import gvsig
def copyToDynObject(values, target):
keys = values.keys()
definition = target.getDynClass();
fields = definition.getDynFields();
for field in fields:
name = field.getName()
for k in keys:
if k.lower() == name.lower():
value = values[k]
target.setDynValue(name, value)
print "dyncopy:", name, value
break
def createTable_1(schema, servertype, tableType=None, **parameters):
"""Creates a new Table document"""
if tableType == None:
tableType = servertype
servertype = "FilesystemExplorer"
application = ApplicationLocator.getManager()
datamanager = application.getDataManager()
server_parameters = datamanager.createServerExplorerParameters(servertype)
copyToDynObject(parameters, server_parameters)
server = datamanager.openServerExplorer(servertype, server_parameters)
store_parameters = server.getAddParameters(tableType)
copyToDynObject(parameters, store_parameters)
store_parameters.setDefaultFeatureType(schema())
server.add(tableType, store_parameters, True)
store = datamanager.openStore(tableType, store_parameters)
return store
def main(*args):
sch = gvsig.createFeatureType()
sch.append('ID','STRING',15)
sch.append('COUNT','INTEGER',20)
filename = gvsig.getTempFile("tabla", ".dbf")
# gvsig.createTable(...)
tabla = createTable_1(
sch,
"FilesystemExplorer",
"DBF",
DbfFile=filename
)
gvsig.loadDBF(filename)
return
Consola:
org.gvsig.fmap.dal.exception.ValidateDataParametersException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: Checks parameters in <script> at line number 70org.gvsig.scripting.ExecuteErrorException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: Checks parameters in <script> at line number 70
at org.gvsig.scripting.impl.DefaultScriptingScript.invokeFunction(DefaultScriptingScript.java:550)
at org.gvsig.scripting.impl.DefaultScriptingScript.run(DefaultScriptingScript.java:520)
at org.gvsig.scripting.impl.DefaultScriptingScript$ScriptTask.run(DefaultScriptingScript.java:664)
Caused by: javax.script.ScriptException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: Checks parameters in <script> at line number 70
at org.python.jsr223.MyPyScriptEngine.scriptException(MyPyScriptEngine.java:209)
at org.python.jsr223.MyPyScriptEngine.invokeFunction(MyPyScriptEngine.java:138)
at org.gvsig.scripting.impl.DefaultScriptingScript.invokeFunction(DefaultScriptingScript.java:532)
... 2 more
Caused by: Traceback (most recent call last):
File "<script>", line 70, in main
File "<script>", line 53, in createTable_1
at org.gvsig.fmap.dal.impl.DefaultDataManager.openServerExplorer(DefaultDataManager.java:320)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
org.gvsig.fmap.dal.exception.ValidateDataParametersException: org.gvsig.fmap.dal.exception.ValidateDataParametersException: Checks parameters
Associated revisions
refs #4525, arreglado el metodo openServerExplorer que recive un numero variable de argumentos para que funcione desde scripting
History
#1
Updated by Óscar Martínez almost 9 years ago
Código:
# encoding: utf-8
import os
import time
import sys
import StringIO
import random
from java.util.prefs import Preferences
from java.awt import Color
from java.io import File
from java.lang import Throwable, RuntimeException
from org.gvsig.app import ApplicationLocator
from org.gvsig.fmap.dal.feature import FeatureType
from org.gvsig.fmap.mapcontext import MapContextLocator
from org.gvsig.andami import Utilities
from org.gvsig.fmap.crs import CRSFactory
from org.gvsig.app.project.documents.table import TableManager
from org.gvsig.fmap.geom import Geometry
from org.gvsig.app.project.documents.view import DefaultViewDocument
from org.gvsig.scripting.app.extension import ScriptingExtension
LOGGER_INFO=ScriptingExtension.INFO
LOGGER_WARN=ScriptingExtension.WARN
LOGGER_ERROR=ScriptingExtension.ERROR
import gvsig
def copyToDynObject(values, target):
keys = values.keys()
definition = target.getDynClass();
fields = definition.getDynFields();
for field in fields:
name = field.getName()
for k in keys:
if k.lower() == name.lower():
value = values[k]
target.setDynValue(name, value)
print "dyncopy:", name, value
break
def createTable_1(schema, servertype, tableType=None, **parameters):
"""Creates a new Table document"""
if tableType == None:
tableType = servertype
servertype = "FilesystemExplorer"
application = ApplicationLocator.getManager()
datamanager = application.getDataManager()
server_parameters = datamanager.createServerExplorerParameters(servertype)
copyToDynObject(parameters, server_parameters)
server = datamanager.openServerExplorer(servertype, server_parameters)
store_parameters = server.getAddParameters(tableType)
copyToDynObject(parameters, store_parameters)
store_parameters.setDefaultFeatureType(schema())
server.add(tableType, store_parameters, True)
store = datamanager.openStore(tableType, store_parameters)
return store
def main(*args):
sch = gvsig.createFeatureType()
sch.append('ID','STRING',15)
sch.append('COUNT','INTEGER',20)
filename = gvsig.getTempFile("tabla", ".dbf")
# gvsig.createTable(...)
tabla = createTable_1(
sch,
"FilesystemExplorer",
"DBF",
DbfFile=filename
)
gvsig.loadDBF(filename)
return
#2
Updated by Joaquín del Cerro Murciano almost 9 years ago
- Description updated (diff)
#3
Updated by Joaquín del Cerro Murciano almost 9 years ago
- Target version changed from 2.4.0-2850-final (rev. org.gvsig.desktop-2.0.220) to 2.4.0-2829 (rev. org.gvsig.desktop-2.0.195)
- Assignee set to Joaquín del Cerro Murciano
- Status changed from New to Fixed
#4
Updated by Álvaro Anguix over 8 years ago
- Status changed from Fixed to Closed