gvSIG bugs #4525

Scripting: Error de validación de parámetros al crear una tabla DBF

Added by Óscar Martínez almost 7 years ago. Updated over 6 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent 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

Revision 43373
Added by Joaquín del Cerro Murciano almost 7 years ago

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

Also available in: Atom PDF