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: | Joaquín del Cerro Murciano | |||
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 7 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 7 years ago
- Description updated (diff)
#3 Updated by Joaquín del Cerro Murciano almost 7 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 6 years ago
- Status changed from Fixed to Closed