undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
10129
src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java
Normal file
10129
src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
6938
src/java.sql.rowset/share/classes/com/sun/rowset/JdbcRowSetImpl.java
Normal file
6938
src/java.sql.rowset/share/classes/com/sun/rowset/JdbcRowSetImpl.java
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* Copyright (c) 2005, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* This class is used to help in localization of resources,
|
||||
* especially the exception strings.
|
||||
*
|
||||
* @author Amit Handa
|
||||
*/
|
||||
|
||||
public class JdbcRowSetResourceBundle implements Serializable {
|
||||
|
||||
/**
|
||||
* This <code>String</code> variable stores the location
|
||||
* of the resource bundle location.
|
||||
*/
|
||||
private static String fileName;
|
||||
|
||||
/**
|
||||
* This variable will hold the <code>PropertyResourceBundle</code>
|
||||
* of the text to be internationalized.
|
||||
*/
|
||||
private transient PropertyResourceBundle propResBundle;
|
||||
|
||||
/**
|
||||
* The constructor initializes to this object
|
||||
*
|
||||
*/
|
||||
private static volatile JdbcRowSetResourceBundle jpResBundle;
|
||||
|
||||
/**
|
||||
* The variable which will represent the properties
|
||||
* the suffix or extension of the resource bundle.
|
||||
**/
|
||||
private static final String PROPERTIES = "properties";
|
||||
|
||||
/**
|
||||
* The variable to represent underscore
|
||||
**/
|
||||
private static final String UNDERSCORE = "_";
|
||||
|
||||
/**
|
||||
* The variable which will represent dot
|
||||
**/
|
||||
private static final String DOT = ".";
|
||||
|
||||
/**
|
||||
* The variable which will represent the slash.
|
||||
**/
|
||||
private static final String SLASH = "/";
|
||||
|
||||
/**
|
||||
* The variable where the default resource bundle will
|
||||
* be placed.
|
||||
**/
|
||||
private static final String PATH = "com.sun.rowset.RowSetResourceBundle";
|
||||
|
||||
/**
|
||||
* The constructor which initializes the resource bundle.
|
||||
* Note this is a private constructor and follows Singleton
|
||||
* Design Pattern.
|
||||
*
|
||||
* @throws IOException if unable to load the ResourceBundle
|
||||
* according to locale or the default one.
|
||||
*/
|
||||
private JdbcRowSetResourceBundle () throws IOException {
|
||||
// Try to load the resource bundle according
|
||||
// to the locale. Else if no bundle found according
|
||||
// to the locale load the default.
|
||||
|
||||
// In default case the default locale resource bundle
|
||||
// should always be loaded else it
|
||||
// will be difficult to throw appropriate
|
||||
// exception string messages.
|
||||
Locale locale = Locale.getDefault();
|
||||
|
||||
// Load appropriate bundle according to locale
|
||||
propResBundle = (PropertyResourceBundle) ResourceBundle.getBundle(PATH,
|
||||
locale, JdbcRowSetResourceBundle.class.getModule());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to get a handle to the
|
||||
* initialized instance of this class. Note that
|
||||
* at any time there is only one instance of this
|
||||
* class initialized which will be returned.
|
||||
*
|
||||
* @throws IOException if unable to find the RowSetResourceBundle.properties
|
||||
*/
|
||||
public static JdbcRowSetResourceBundle getJdbcRowSetResourceBundle()
|
||||
throws IOException {
|
||||
|
||||
if(jpResBundle == null){
|
||||
synchronized(JdbcRowSetResourceBundle.class) {
|
||||
if(jpResBundle == null){
|
||||
jpResBundle = new JdbcRowSetResourceBundle();
|
||||
} //end if
|
||||
} //end synchronized block
|
||||
} //end if
|
||||
return jpResBundle;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns an enumerated handle of the keys
|
||||
* which correspond to values translated to various locales.
|
||||
*
|
||||
* @return an enumeration of keys which have messages translated to
|
||||
* corresponding locales.
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Enumeration getKeys() {
|
||||
return propResBundle.getKeys();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method takes the key as an argument and
|
||||
* returns the corresponding value reading it
|
||||
* from the Resource Bundle loaded earlier.
|
||||
*
|
||||
* @return value in locale specific language
|
||||
* according to the key passed.
|
||||
*/
|
||||
public Object handleGetObject(String key) {
|
||||
return propResBundle.handleGetObject(key);
|
||||
}
|
||||
|
||||
static final long serialVersionUID = 436199386225359954L;
|
||||
}
|
||||
4355
src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java
Normal file
4355
src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import javax.sql.rowset.CachedRowSet;
|
||||
import javax.sql.rowset.FilteredRowSet;
|
||||
import javax.sql.rowset.JdbcRowSet;
|
||||
import javax.sql.rowset.JoinRowSet;
|
||||
import javax.sql.rowset.WebRowSet;
|
||||
import javax.sql.rowset.RowSetFactory;
|
||||
|
||||
/**
|
||||
* This is the implementation specific class for the
|
||||
* <code>javax.sql.rowset.spi.RowSetFactory</code>. This is the platform
|
||||
* default implementation for the Java SE platform.
|
||||
*
|
||||
* @author Lance Andersen
|
||||
*
|
||||
*
|
||||
* @version 1.7
|
||||
*/
|
||||
public final class RowSetFactoryImpl implements RowSetFactory {
|
||||
|
||||
public CachedRowSet createCachedRowSet() throws SQLException {
|
||||
return new com.sun.rowset.CachedRowSetImpl();
|
||||
}
|
||||
|
||||
public FilteredRowSet createFilteredRowSet() throws SQLException {
|
||||
return new com.sun.rowset.FilteredRowSetImpl();
|
||||
}
|
||||
|
||||
|
||||
public JdbcRowSet createJdbcRowSet() throws SQLException {
|
||||
return new com.sun.rowset.JdbcRowSetImpl();
|
||||
}
|
||||
|
||||
public JoinRowSet createJoinRowSet() throws SQLException {
|
||||
return new com.sun.rowset.JoinRowSetImpl();
|
||||
}
|
||||
|
||||
public WebRowSet createWebRowSet() throws SQLException {
|
||||
return new com.sun.rowset.WebRowSetImpl();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Invalid ResultSet object supplied to populate method
|
||||
cachedrowsetimpl.invalidp = Invalid persistence provider generated
|
||||
cachedrowsetimpl.nullhash = Cannot instantiate CachedRowSetImpl instance. Null Hashtable supplied to constructor
|
||||
cachedrowsetimpl.invalidop = Invalid operation while on insert row
|
||||
cachedrowsetimpl.accfailed = acceptChanges Failed
|
||||
cachedrowsetimpl.invalidcp = Invalid cursor position
|
||||
cachedrowsetimpl.illegalop = Illegal operation on non-inserted row
|
||||
cachedrowsetimpl.clonefail = Clone failed: {0}
|
||||
cachedrowsetimpl.invalidcol = Invalid column index
|
||||
cachedrowsetimpl.invalcolnm = Invalid column name
|
||||
cachedrowsetimpl.boolfail = getBoolen Failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.bytefail = getByte Failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.shortfail = getShort Failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.intfail = getInt Failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.longfail = getLong Failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.floatfail = getFloat failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.doublefail = getDouble failed on value ( {0} ) in column {1}
|
||||
cachedrowsetimpl.dtypemismt = Data Type Mismatch
|
||||
cachedrowsetimpl.datefail = getDate Failed on value ( {0} ) in column {1} no conversion available
|
||||
cachedrowsetimpl.timefail = getTime failed on value ( {0} ) in column {1} no conversion available
|
||||
cachedrowsetimpl.posupdate = Positioned updates not supported
|
||||
cachedrowsetimpl.unableins = Unable to instantiate : {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst : Invalid cursor operation
|
||||
cachedrowsetimpl.first = First : Invalid cursor operation
|
||||
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute : Invalid cursor position
|
||||
cachedrowsetimpl.relative = relative : Invalid cursor position
|
||||
cachedrowsetimpl.asciistream = read failed for ascii stream
|
||||
cachedrowsetimpl.binstream = read failed on binary stream
|
||||
cachedrowsetimpl.failedins = Failed on insert row
|
||||
cachedrowsetimpl.updateins = updateRow called while on insert row
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow : no meta data
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow : invalid number of columns
|
||||
cachedrowsetimpl.tablename = Table name cannot be null
|
||||
cachedrowsetimpl.keycols = Invalid key columns
|
||||
cachedrowsetimpl.opnotsupp = Operation not supported by Database
|
||||
cachedrowsetimpl.matchcols = Match columns are not the same as those set
|
||||
cachedrowsetimpl.setmatchcols = Set Match columns before getting them
|
||||
cachedrowsetimpl.matchcols1 = Match columns should be greater than 0
|
||||
cachedrowsetimpl.matchcols2 = Match columns should be empty or null string
|
||||
cachedrowsetimpl.unsetmatch = Columns being unset are not the same as set
|
||||
cachedrowsetimpl.unsetmatch1 = Use column name as argument to unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Use column ID as argument to unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = Number of rows is less than zero or less than fetch size
|
||||
cachedrowsetimpl.startpos = Start position cannot be negative
|
||||
cachedrowsetimpl.nextpage = Populate data before calling
|
||||
cachedrowsetimpl.pagesize = Page size cannot be less than zero
|
||||
cachedrowsetimpl.pagesize1 = Page size cannot be greater than maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet is forward only
|
||||
cachedrowsetimpl.type = Type is : {0}
|
||||
cachedrowsetimpl.opnotysupp = Operation not yet supported
|
||||
cachedrowsetimpl.featnotsupp = Feature not supported
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = Cannot instantiate WebRowSetImpl instance. Null Hashtable supplied to constructor
|
||||
webrowsetimpl.invalidwr = Invalid writer
|
||||
webrowsetimpl.invalidrd = Invalid reader
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative : Invalid cursor operation
|
||||
filteredrowsetimpl.absolute = absolute : Invalid cursor operation
|
||||
filteredrowsetimpl.notallowed = This value is not allowed through the filter
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Not an instance of rowset
|
||||
joinrowsetimpl.matchnotset = Match Column not set for join
|
||||
joinrowsetimpl.numnotequal = Number of elements in rowset not equal to match column
|
||||
joinrowsetimpl.notdefined = This is not a defined type of join
|
||||
joinrowsetimpl.notsupported = This type of join is not supported
|
||||
joinrowsetimpl.initerror = JoinRowSet initialization error
|
||||
joinrowsetimpl.genericerr = Generic joinrowset initial error
|
||||
joinrowsetimpl.emptyrowset = Empty rowset cannot be added to this JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Invalid state
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (connect) JNDI unable to connect
|
||||
jdbcrowsetimpl.paramtype = Unable to deduce param type
|
||||
jdbcrowsetimpl.matchcols = Match Columns are not the same as those set
|
||||
jdbcrowsetimpl.setmatchcols = Set the match columns before getting them
|
||||
jdbcrowsetimpl.matchcols1 = Match columns should be greater than 0
|
||||
jdbcrowsetimpl.matchcols2 = Match columns cannot be null or empty string
|
||||
jdbcrowsetimpl.unsetmatch = Columns being unset are not the same as those set
|
||||
jdbcrowsetimpl.usecolname = Use column name as argument to unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Use column ID as argument to unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = ResultSet is not updatable
|
||||
jdbcrowsetimpl.opnotysupp = Operation not yet supported
|
||||
jdbcrowsetimpl.featnotsupp = Feature not supported
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) Unable to connect
|
||||
crsreader.paramtype = Unable to deduce param type
|
||||
crsreader.connecterr = Internal Error in RowSetReader: no connection or command
|
||||
crsreader.datedetected = Detected a Date
|
||||
crsreader.caldetected = Detected a Calendar
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Unable to get connection
|
||||
crswriter.tname = writeData cannot determine table name
|
||||
crswriter.params1 = Value of params1 : {0}
|
||||
crswriter.params2 = Value of params2 : {0}
|
||||
crswriter.conflictsno = conflicts while synchronizing
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = No value has been inserted
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Index value out of range
|
||||
syncrsimpl.noconflict = This column not in conflict
|
||||
syncrsimpl.syncnotpos = Synchronization is not possible
|
||||
syncrsimpl.valtores = Value to be resolved can either be in the database or in cachedrowset
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = End of RowSet reached. Invalid cursor position
|
||||
wrsxmlreader.readxml = readXML : {0}
|
||||
wrsxmlreader.parseerr = ** Parsing Error : {0} , line : {1} , uri : {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException : {0}
|
||||
wrsxmlwriter.sqlex = SQLException : {0}
|
||||
wrsxmlwriter.failedwrite = Failed to write value
|
||||
wsrxmlwriter.notproper = Not a proper type
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Error setting Map : {0}
|
||||
xmlrch.errmetadata = Error setting metadata : {0}
|
||||
xmlrch.errinsertval = Error inserting values : {0}
|
||||
xmlrch.errconstr = Error constructing row : {0}
|
||||
xmlrch.errdel = Error deleting row : {0}
|
||||
xmlrch.errinsert = Error constructing insert row : {0}
|
||||
xmlrch.errinsdel = Error constructing insdel row : {0}
|
||||
xmlrch.errupdate = Error constructing update row : {0}
|
||||
xmlrch.errupdrow = Error updating row : {0}
|
||||
xmlrch.chars = characters :
|
||||
xmlrch.badvalue = Bad value ; non-nullable property
|
||||
xmlrch.badvalue1 = Bad value ; non-nullable metadata
|
||||
xmlrch.warning = ** Warning : {0} , line : {1} , uri : {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = Locking classification is not supported
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = Unsupported with RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Ungültiges ResultSet-Objekt zum Auffüllen der Methode angegeben
|
||||
cachedrowsetimpl.invalidp = Ungültiger Persistence-Provider generiert
|
||||
cachedrowsetimpl.nullhash = CachedRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hashtabelle für Constructor angegeben
|
||||
cachedrowsetimpl.invalidop = Ungültiger Vorgang beim Zeileneinfügen
|
||||
cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich
|
||||
cachedrowsetimpl.invalidcp = Ungültige Cursorposition
|
||||
cachedrowsetimpl.illegalop = Unzulässiger Vorgang bei nicht eingefügter Zeile
|
||||
cachedrowsetimpl.clonefail = Klonen nicht erfolgreich: {0}
|
||||
cachedrowsetimpl.invalidcol = Ungültiger Spaltenindex
|
||||
cachedrowsetimpl.invalcolnm = Ungültiger Spaltenname
|
||||
cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.bytefail = getByte bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.shortfail = getShort bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
|
||||
cachedrowsetimpl.dtypemismt = Keine Datentypübereinstimmung
|
||||
cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung möglich
|
||||
cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung möglich
|
||||
cachedrowsetimpl.posupdate = Positionierte Updates werden nicht unterstützt
|
||||
cachedrowsetimpl.unableins = Keine Instanziierung möglich: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: Ungültiger Cursorvorgang
|
||||
cachedrowsetimpl.first = First: Ungültiger Cursorvorgang
|
||||
cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: Ungültige Cursorposition
|
||||
cachedrowsetimpl.relative = relative: Ungültige Cursorposition
|
||||
cachedrowsetimpl.asciistream = Lesen von ASCII-Stream nicht erfolgreich
|
||||
cachedrowsetimpl.binstream = Lesen von Binär-Stream nicht erfolgreich
|
||||
cachedrowsetimpl.failedins = Fehler beim Zeileneinfügen
|
||||
cachedrowsetimpl.updateins = updateRow beim Zeileneinfügen aufgerufen
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: keine Metadaten
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: ungültige Spaltenanzahl
|
||||
cachedrowsetimpl.tablename = Tabellenname darf nicht null sein
|
||||
cachedrowsetimpl.keycols = Ungültige Schlüsselspalten
|
||||
cachedrowsetimpl.opnotsupp = Vorgang nicht von Datenbank unterstützt
|
||||
cachedrowsetimpl.matchcols = Übereinstimmungsspalten entsprechen nicht den festgelegten Spalten
|
||||
cachedrowsetimpl.setmatchcols = Übereinstimmungsspalten müssen vor dem Abrufen festgelegt werden
|
||||
cachedrowsetimpl.matchcols1 = Wert für Übereinstimmungsspalten muss größer als 0 sein
|
||||
cachedrowsetimpl.matchcols2 = Übereinstimmungsspalten müssen leer sein oder eine Nullzeichenfolge aufweisen
|
||||
cachedrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten
|
||||
cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument für unsetMatchColumn verwenden
|
||||
cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument für unsetMatchColumn verwenden
|
||||
cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als null oder kleiner als Abrufgröße
|
||||
cachedrowsetimpl.startpos = Startposition darf keinen Negativwert aufweisen
|
||||
cachedrowsetimpl.nextpage = Daten müssen vor dem Aufruf ausgefüllt werden
|
||||
cachedrowsetimpl.pagesize = Seitengröße darf nicht kleiner als null sein
|
||||
cachedrowsetimpl.pagesize1 = Seitengröße darf nicht größer als maxRows sein
|
||||
cachedrowsetimpl.fwdonly = ResultSet kann nur vorwärts gerichtet sein
|
||||
cachedrowsetimpl.type = Typ ist: {0}
|
||||
cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterstützt
|
||||
cachedrowsetimpl.featnotsupp = Feature nicht unterstützt
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = WebRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hashtabelle für Constructor angegeben
|
||||
webrowsetimpl.invalidwr = Ungültiger Writer
|
||||
webrowsetimpl.invalidrd = Ungültiger Reader
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: Ungültiger Cursorvorgang
|
||||
filteredrowsetimpl.absolute = absolute: Ungültiger Cursorvorgang
|
||||
filteredrowsetimpl.notallowed = Kein zulässiger Wert im Filter
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Keine Instanz von rowset
|
||||
joinrowsetimpl.matchnotset = Übereinstimmungsspalte wurde nicht für Join festgelegt
|
||||
joinrowsetimpl.numnotequal = Elementanzahl in rowset nicht gleich Übereinstimmungsspalte
|
||||
joinrowsetimpl.notdefined = Kein definierter Join-Typ
|
||||
joinrowsetimpl.notsupported = Join-Typ wird nicht unterstützt
|
||||
joinrowsetimpl.initerror = JoinRowSet-Initialisierungsfehler
|
||||
joinrowsetimpl.genericerr = Generischer JoinRowSet-Initialisierungsfehler
|
||||
joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugefügt werden
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Ungültiger Status
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (verbinden), keine JNDI-Verbindung möglich
|
||||
jdbcrowsetimpl.paramtype = Parametertyp kann nicht abgeleitet werden
|
||||
jdbcrowsetimpl.matchcols = Übereinstimmungsspalten entsprechen nicht den festgelegten Spalten
|
||||
jdbcrowsetimpl.setmatchcols = Übereinstimmungsspalten müssen vor dem Abrufen festgelegt werden
|
||||
jdbcrowsetimpl.matchcols1 = Wert für Übereinstimmungsspalten muss größer als 0 sein
|
||||
jdbcrowsetimpl.matchcols2 = Übereinstimmungsspalten können keine Null- oder leere Zeichenfolge aufweisen
|
||||
jdbcrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten
|
||||
jdbcrowsetimpl.usecolname = Spaltenname als Argument für unsetMatchColumn verwenden
|
||||
jdbcrowsetimpl.usecolid = Spalten-ID als Argument für unsetMatchColumn verwenden
|
||||
jdbcrowsetimpl.resnotupd = ResultSet kann nicht aktualisiert werden
|
||||
jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterstützt
|
||||
jdbcrowsetimpl.featnotsupp = Feature nicht unterstützt
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) Verbindung nicht möglich
|
||||
crsreader.paramtype = Parametertyp kann nicht abgeleitet werden
|
||||
crsreader.connecterr = Interner Fehler in RowSetReader: Keine Verbindung oder kein Befehl
|
||||
crsreader.datedetected = Datum festgestellt
|
||||
crsreader.caldetected = Kalender festgestellt
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Verbindung kann nicht hergestellt werden
|
||||
crswriter.tname = writeData kann Tabellennamen nicht bestimmen
|
||||
crswriter.params1 = Wert für params1: {0}
|
||||
crswriter.params2 = Wert für params2: {0}
|
||||
crswriter.conflictsno = Konflikte beim Synchronisieren
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = Es wurde kein Wert eingefügt
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Indexwert liegt außerhalb des Bereichs
|
||||
syncrsimpl.noconflict = Kein Konflikt bei dieser Spalte
|
||||
syncrsimpl.syncnotpos = Keine Synchronisierung möglich
|
||||
syncrsimpl.valtores = Aufzulösender Wert kann sich entweder in der Datenbank oder in cachedrowset befinden
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ungültige Cursorposition
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = ** Parsingfehler: {0}, Zeile: {1} , URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException: {0}
|
||||
wrsxmlwriter.sqlex = SQLException: {0}
|
||||
wrsxmlwriter.failedwrite = Schreiben des Wertes nicht erfolgreich
|
||||
wsrxmlwriter.notproper = Kein zulässiger Typ
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Fehler beim Festlegen der Zuordnung: {0}
|
||||
xmlrch.errmetadata = Fehler beim Festlegen der Metadaten: {0}
|
||||
xmlrch.errinsertval = Fehler beim Einfügen der Werte: {0}
|
||||
xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0}
|
||||
xmlrch.errdel = Fehler beim Löschen der Zeile: {0}
|
||||
xmlrch.errinsert = Fehler beim Erstellen der Einfügezeile: {0}
|
||||
xmlrch.errinsdel = Fehler beim Erstellen der Einfüge- oder Löschzeile: {0}
|
||||
xmlrch.errupdate = Fehler beim Erstellen der Updatezeile: {0}
|
||||
xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile: {0}
|
||||
xmlrch.chars = Zeichen:
|
||||
xmlrch.badvalue = Ungültiger Wert. Eigenschaft kann nicht auf null gesetzt werden
|
||||
xmlrch.badvalue1 = Ungültiger Wert. Metadaten können nicht auf null gesetzt werden
|
||||
xmlrch.warning = ** Warnung: {0}, Zeile: {1} , URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = Sperren der Klassifizierung wird nicht unterstützt
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = Keine Unterstützung bei RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Se ha proporcionado un objeto ResultSet no válido para el método de relleno
|
||||
cachedrowsetimpl.invalidp = El proveedor de persistencia generado no es válido
|
||||
cachedrowsetimpl.nullhash = La instancia CachedRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor
|
||||
cachedrowsetimpl.invalidop = Operación no válida al insertar fila
|
||||
cachedrowsetimpl.accfailed = Fallo de acceptChanges
|
||||
cachedrowsetimpl.invalidcp = Posición de cursor no válida
|
||||
cachedrowsetimpl.illegalop = Operación no permitida en fila no insertada
|
||||
cachedrowsetimpl.clonefail = Fallo en la clonación: {0}
|
||||
cachedrowsetimpl.invalidcol = Índice de columnas no válido
|
||||
cachedrowsetimpl.invalcolnm = Nombre de columna no válido
|
||||
cachedrowsetimpl.boolfail = Fallo de getBoolen en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.bytefail = Fallo de getByte en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.shortfail = Fallo de getShort en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.intfail = Fallo de getInt en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.longfail = Fallo de getLong en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.floatfail = Fallo de getFloat en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.doublefail = Fallo de getDouble en valor ( {0} ) de columna {1}
|
||||
cachedrowsetimpl.dtypemismt = Discordancia entre Tipos de Datos
|
||||
cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1}. No es posible convertir
|
||||
cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1}. No es posible convertir
|
||||
cachedrowsetimpl.posupdate = Actualizaciones posicionadas no soportadas
|
||||
cachedrowsetimpl.unableins = No se ha podido crear la instancia: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: Operación de cursor no válida
|
||||
cachedrowsetimpl.first = First: Operación de cursor no válida
|
||||
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: Posición de cursor no válida
|
||||
cachedrowsetimpl.relative = relative: Posición de cursor no válida
|
||||
cachedrowsetimpl.asciistream = fallo en lectura de flujo de caracteres ascii
|
||||
cachedrowsetimpl.binstream = fallo de lectura de flujo binario
|
||||
cachedrowsetimpl.failedins = Fallo en inserción de fila
|
||||
cachedrowsetimpl.updateins = llamada a updateRow mientras se insertaba fila
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: no hay metadatos
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: número de columnas no válido
|
||||
cachedrowsetimpl.tablename = El nombre de la tabla no puede ser nulo
|
||||
cachedrowsetimpl.keycols = Columnas clave no válidas
|
||||
cachedrowsetimpl.opnotsupp = La base de datos no admite esta operación
|
||||
cachedrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas
|
||||
cachedrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas
|
||||
cachedrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0
|
||||
cachedrowsetimpl.matchcols2 = Las columnas coincidentes deben estar vacías o ser una cadena nula
|
||||
cachedrowsetimpl.unsetmatch = Las columnas cuya definición se está anulando no concuerdan con las definidas
|
||||
cachedrowsetimpl.unsetmatch1 = Use el nombre de columna como argumento en unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Use el identificador de columna como argumento en unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = El número de filas es menor que cero o menor que el tamaño recuperado
|
||||
cachedrowsetimpl.startpos = La posición de inicio no puede ser negativa
|
||||
cachedrowsetimpl.nextpage = Rellene los datos antes de realizar la llamada
|
||||
cachedrowsetimpl.pagesize = El tamaño de página no puede ser menor que cero
|
||||
cachedrowsetimpl.pagesize1 = El tamaño de página no puede ser mayor que maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet sólo se reenvía
|
||||
cachedrowsetimpl.type = El tipo es: {0}
|
||||
cachedrowsetimpl.opnotysupp = Operación no soportada todavía
|
||||
cachedrowsetimpl.featnotsupp = Función no soportada
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor
|
||||
webrowsetimpl.invalidwr = Escritor no válido
|
||||
webrowsetimpl.invalidrd = Lector no válido
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: Operación de cursor no válida
|
||||
filteredrowsetimpl.absolute = absolute: Operación de cursor no válida
|
||||
filteredrowsetimpl.notallowed = El filtro no admite este valor
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = No es una instancia de rowset
|
||||
joinrowsetimpl.matchnotset = Las columnas coincidentes no están definidas para la unión
|
||||
joinrowsetimpl.numnotequal = El número de elementos de rowset y el de columnas coincidentes no es el mismo
|
||||
joinrowsetimpl.notdefined = No es un tipo de unión definido
|
||||
joinrowsetimpl.notsupported = Este tipo de unión no está soportado
|
||||
joinrowsetimpl.initerror = Error de inicialización de JoinRowSet
|
||||
joinrowsetimpl.genericerr = Error de inicialización genérico de joinrowset
|
||||
joinrowsetimpl.emptyrowset = No se puede agregar un juego de filas vacío a este JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Estado no válido
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (connect): JNDI no se puede conectar
|
||||
jdbcrowsetimpl.paramtype = No se puede deducir el tipo de parámetro
|
||||
jdbcrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas
|
||||
jdbcrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas
|
||||
jdbcrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0
|
||||
jdbcrowsetimpl.matchcols2 = Las columnas coincidentes no pueden estar vacías ni ser una cadena nula
|
||||
jdbcrowsetimpl.unsetmatch = Las columnas cuya definición se está anulando no concuerdan con las definidas
|
||||
jdbcrowsetimpl.usecolname = Use el nombre de columna como argumento en unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Use el identificador de columna como argumento en unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar
|
||||
jdbcrowsetimpl.opnotysupp = Operación no soportada todavía
|
||||
jdbcrowsetimpl.featnotsupp = Función no soportada
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) No se ha podido conectar
|
||||
crsreader.paramtype = No se ha podido deducir el tipo de parámetro
|
||||
crsreader.connecterr = Error interno en RowSetReader: no hay conexión o comando
|
||||
crsreader.datedetected = Fecha Detectada
|
||||
crsreader.caldetected = Calendario Detectado
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = No se ha podido obtener una conexión
|
||||
crswriter.tname = writeData no puede determinar el nombre de tabla
|
||||
crswriter.params1 = Valor de params1: {0}
|
||||
crswriter.params2 = Valor de params2: {0}
|
||||
crswriter.conflictsno = conflictos en la sincronización
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = No se ha insertado ningún valor
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = El valor de índice está fuera de rango
|
||||
syncrsimpl.noconflict = Esta columna no está en conflicto
|
||||
syncrsimpl.syncnotpos = No se puede sincronizar
|
||||
syncrsimpl.valtores = El valor que se debe resolver puede estar en la base de datos o en cachedrowset
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posición de cursor no válida
|
||||
wrsxmlreader.readxml = readXML : {0}
|
||||
wrsxmlreader.parseerr = ** Error de análisis: {0} , línea: {1} , uri: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException : {0}
|
||||
wrsxmlwriter.sqlex = SQLException : {0}
|
||||
wrsxmlwriter.failedwrite = Error al escribir el valor
|
||||
wsrxmlwriter.notproper = Tipo incorrecto
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Error al definir la asignación: {0}
|
||||
xmlrch.errmetadata = Error al definir metadatos: {0}
|
||||
xmlrch.errinsertval = Error al insertar los valores: {0}
|
||||
xmlrch.errconstr = Error al construir la fila: {0}
|
||||
xmlrch.errdel = Error al suprimir la fila: {0}
|
||||
xmlrch.errinsert = Error al construir la fila de inserción: {0}
|
||||
xmlrch.errinsdel = Error al construir la fila de inserción o supresión: {0}
|
||||
xmlrch.errupdate = Error al construir la fila de actualización: {0}
|
||||
xmlrch.errupdrow = Error al actualizar la fila: {0}
|
||||
xmlrch.chars = caracteres:
|
||||
xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula
|
||||
xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos
|
||||
xmlrch.warning = ** Advertencia: {0} , línea: {1} , uri: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = No se permite bloquear la clasificación
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = No soportado con RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = L'objet ResultSet fourni en entrée de la méthode n'est pas valide
|
||||
cachedrowsetimpl.invalidp = Le fournisseur de persistance généré n'est pas valide
|
||||
cachedrowsetimpl.nullhash = Impossible de créer une instance de CachedRowSetImpl. Table de hachage NULL fournie au constructeur
|
||||
cachedrowsetimpl.invalidop = Opération non valide lors de l'insertion de ligne
|
||||
cachedrowsetimpl.accfailed = Echec de acceptChanges
|
||||
cachedrowsetimpl.invalidcp = Position du curseur non valide
|
||||
cachedrowsetimpl.illegalop = Opération non admise sur une ligne non insérée
|
||||
cachedrowsetimpl.clonefail = Echec du clonage : {0}
|
||||
cachedrowsetimpl.invalidcol = Index de colonne non valide
|
||||
cachedrowsetimpl.invalcolnm = Nom de colonne non valide
|
||||
cachedrowsetimpl.boolfail = Echec de getBoolen pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.bytefail = Echec de getByte pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.shortfail = Echec de getShort pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.intfail = Echec de getInt pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.longfail = Echec de getLong pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.floatfail = Echec de getFloat pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.doublefail = Echec de getDouble pour la valeur ({0}) de la colonne {1}
|
||||
cachedrowsetimpl.dtypemismt = Le type de données ne correspond pas
|
||||
cachedrowsetimpl.datefail = Echec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
|
||||
cachedrowsetimpl.timefail = Echec de getTime pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
|
||||
cachedrowsetimpl.posupdate = Mises à jour choisies non prises en charge
|
||||
cachedrowsetimpl.unableins = Instanciation impossible : {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst : opération de curseur non valide
|
||||
cachedrowsetimpl.first = First : opération de curseur non valide
|
||||
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute : position de curseur non valide
|
||||
cachedrowsetimpl.relative = relative : position de curseur non valide
|
||||
cachedrowsetimpl.asciistream = échec de la lecture pour le flux ASCII
|
||||
cachedrowsetimpl.binstream = échec de la lecture pour le flux binaire
|
||||
cachedrowsetimpl.failedins = Echec de l'insertion de ligne
|
||||
cachedrowsetimpl.updateins = appel de updateRow lors de l'insertion de ligne
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune métadonnée
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow : nombre de colonnes non valide
|
||||
cachedrowsetimpl.tablename = Le nom de la table ne peut pas être NULL
|
||||
cachedrowsetimpl.keycols = Colonnes de clé non valides
|
||||
cachedrowsetimpl.opnotsupp = Opération non prise en charge par la base de données
|
||||
cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les mêmes que les colonnes définies
|
||||
cachedrowsetimpl.setmatchcols = Définir les colonnes correspondantes avant de les prendre
|
||||
cachedrowsetimpl.matchcols1 = Les colonnes correspondantes doivent être supérieures à zéro
|
||||
cachedrowsetimpl.matchcols2 = Les colonnes correspondantes doivent êtres vides ou ne contenir que des chaînes NULL
|
||||
cachedrowsetimpl.unsetmatch = Les colonnes définies et non définies sont différentes
|
||||
cachedrowsetimpl.unsetmatch1 = Utiliser le nom de colonne comme argument pour unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Utiliser l'ID de colonne comme argument pour unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = Le nombre de lignes est inférieur à zéro ou à la taille d'extraction
|
||||
cachedrowsetimpl.startpos = La position de départ ne peut pas être négative
|
||||
cachedrowsetimpl.nextpage = Entrer les données avant l'appel
|
||||
cachedrowsetimpl.pagesize = La taille de la page ne peut pas être négative
|
||||
cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas être supérieure à maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet va en avant seulement
|
||||
cachedrowsetimpl.type = Le type est : {0}
|
||||
cachedrowsetimpl.opnotysupp = Opération non encore prise en charge
|
||||
cachedrowsetimpl.featnotsupp = Fonctionnalité non prise en charge
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = Impossible de créer une instance de WebRowSetImpl. Table de hachage NULL fournie au constructeur
|
||||
webrowsetimpl.invalidwr = Processus d'écriture non valide
|
||||
webrowsetimpl.invalidrd = Processus de lecture non valide
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative : opération de curseur non valide
|
||||
filteredrowsetimpl.absolute = absolute : opération de curseur non valide
|
||||
filteredrowsetimpl.notallowed = Cette valeur n'est pas autorisée via le filtre
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = N'est pas une instance de RowSet
|
||||
joinrowsetimpl.matchnotset = Les colonnes correspondantes ne sont pas définies pour la jointure
|
||||
joinrowsetimpl.numnotequal = Le nombre d'éléments dans RowSet est différent du nombre de colonnes correspondantes
|
||||
joinrowsetimpl.notdefined = Ce n'est pas un type de jointure défini
|
||||
joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge
|
||||
joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet
|
||||
joinrowsetimpl.genericerr = Erreur initiale générique de JoinRowSet
|
||||
joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide à ce JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Etat non valide
|
||||
jdbcrowsetimpl.connect = Impossible de connecter JNDI JdbcRowSet (connexion)
|
||||
jdbcrowsetimpl.paramtype = Impossible de déduire le type de paramètre
|
||||
jdbcrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les mêmes que les colonnes définies
|
||||
jdbcrowsetimpl.setmatchcols = Définir les colonnes correspondantes avant de les prendre
|
||||
jdbcrowsetimpl.matchcols1 = Les colonnes correspondantes doivent être supérieures à zéro
|
||||
jdbcrowsetimpl.matchcols2 = Les colonnes correspondantes ne doivent pas êtres NULL ni contenir des chaînes vides
|
||||
jdbcrowsetimpl.unsetmatch = Les colonnes non définies ne sont pas les mêmes que les colonnes définies
|
||||
jdbcrowsetimpl.usecolname = Utiliser le nom de colonne comme argument pour unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Utiliser l'ID de colonne comme argument pour unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = La mise à jour de ResultSet est interdite
|
||||
jdbcrowsetimpl.opnotysupp = Opération non encore prise en charge
|
||||
jdbcrowsetimpl.featnotsupp = Fonctionnalité non prise en charge
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = Impossible de connecter (JNDI)
|
||||
crsreader.paramtype = Impossible de déduire le type de paramètre
|
||||
crsreader.connecterr = Erreur interne dans RowSetReader : pas de connexion ni de commande
|
||||
crsreader.datedetected = Une date a été détectée
|
||||
crsreader.caldetected = Un calendrier a été détecté
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Impossible d'obtenir la connexion
|
||||
crswriter.tname = writeData ne peut pas déterminer le nom de la table
|
||||
crswriter.params1 = Valeur de params1 : {0}
|
||||
crswriter.params2 = Valeur de params2 : {0}
|
||||
crswriter.conflictsno = conflits lors de la synchronisation
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = Aucune valeur n'a été insérée
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Valeur d'index hors plage
|
||||
syncrsimpl.noconflict = Cette colonne n'est pas en conflit
|
||||
syncrsimpl.syncnotpos = La synchronisation est impossible
|
||||
syncrsimpl.valtores = La valeur à résoudre peut être soit dans la base de données, soit dans CachedrowSet
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide
|
||||
wrsxmlreader.readxml = readXML : {0}
|
||||
wrsxmlreader.parseerr = ** Erreur d''analyse : {0} , ligne : {1} , URI : {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = Exception d''E/S : {0}
|
||||
wrsxmlwriter.sqlex = Exception SQL : {0}
|
||||
wrsxmlwriter.failedwrite = Echec d'écriture de la valeur
|
||||
wsrxmlwriter.notproper = N'est pas un type correct
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Erreur lors de la définition du mappage : {0}
|
||||
xmlrch.errmetadata = Erreur lors de la définition des métadonnées : {0}
|
||||
xmlrch.errinsertval = Erreur lors de l''insertion des valeurs : {0}
|
||||
xmlrch.errconstr = Erreur lors de la construction de la ligne : {0}
|
||||
xmlrch.errdel = Erreur lors de la suppression de la ligne : {0}
|
||||
xmlrch.errinsert = Erreur lors de la construction de la ligne à insérer : {0}
|
||||
xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0}
|
||||
xmlrch.errupdate = Erreur lors de la construction de la ligne à mettre à jour : {0}
|
||||
xmlrch.errupdrow = Erreur lors de la mise à jour de la ligne : {0}
|
||||
xmlrch.chars = caractères :
|
||||
xmlrch.badvalue = Valeur incorrecte ; cette propriété ne peut pas être NULL
|
||||
xmlrch.badvalue1 = Valeur incorrecte ; ces métadonnées ne peuvent pas être NULL
|
||||
xmlrch.warning = ** Avertissement : {0} , ligne : {1} , URI : {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = Le verrouillage de la classification n'est pas pris en charge
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = Non pris en charge avec RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Oggetto ResultSet non valido fornito per l'inserimento dati nel metodo
|
||||
cachedrowsetimpl.invalidp = Generato provider di persistenza non valido
|
||||
cachedrowsetimpl.nullhash = Impossibile creare istanza CachedRowSetImpl. Tabella hash nulla fornita al costruttore
|
||||
cachedrowsetimpl.invalidop = Operazione non valida nella riga di inserimento
|
||||
cachedrowsetimpl.accfailed = acceptChanges non riuscito
|
||||
cachedrowsetimpl.invalidcp = Posizione cursore non valida
|
||||
cachedrowsetimpl.illegalop = Operazione non valida nella riga non inserita
|
||||
cachedrowsetimpl.clonefail = Copia non riuscita: {0}
|
||||
cachedrowsetimpl.invalidcol = Indice di colonna non valido
|
||||
cachedrowsetimpl.invalcolnm = Nome di colonna non valido
|
||||
cachedrowsetimpl.boolfail = getBoolen non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.bytefail = getByte non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.shortfail = getShort non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.intfail = getInt non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.longfail = getLong non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.floatfail = getFloat non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.doublefail = getDouble non riuscito per il valore ( {0} ) nella colonna {1}
|
||||
cachedrowsetimpl.dtypemismt = Mancata corrispondenza tipo di dati
|
||||
cachedrowsetimpl.datefail = getDate non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile.
|
||||
cachedrowsetimpl.timefail = getTime non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile.
|
||||
cachedrowsetimpl.posupdate = Aggiornamenti posizionati non supportati
|
||||
cachedrowsetimpl.unableins = Impossibile creare istanza: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: operazione cursore non valida
|
||||
cachedrowsetimpl.first = First: operazione cursore non valida
|
||||
cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: posizione cursore non valida
|
||||
cachedrowsetimpl.relative = relative: posizione cursore non valida
|
||||
cachedrowsetimpl.asciistream = lettura non riuscita per il flusso ascii
|
||||
cachedrowsetimpl.binstream = lettura non riuscita per il flusso binario
|
||||
cachedrowsetimpl.failedins = operazione non riuscita nella riga di inserimento
|
||||
cachedrowsetimpl.updateins = updateRow chiamato nella riga di inserimento
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: nessun metadato
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: numero di colonne non valido
|
||||
cachedrowsetimpl.tablename = Il nome di tabella non può essere nullo
|
||||
cachedrowsetimpl.keycols = Colonne chiave non valide
|
||||
cachedrowsetimpl.opnotsupp = Operazione non supportata dal database
|
||||
cachedrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate
|
||||
cachedrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle
|
||||
cachedrowsetimpl.matchcols1 = Le colonne di corrispondenza devono essere superiori a 0
|
||||
cachedrowsetimpl.matchcols2 = Le colonne di corrispondenza devono essere una stringa vuota o nulla
|
||||
cachedrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate
|
||||
cachedrowsetimpl.unsetmatch1 = Utilizzare il nome di colonna come argomento per unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Utilizzare l'ID di colonna come argomento per unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = Il numero di righe è inferiore a zero o alla dimensione di recupero
|
||||
cachedrowsetimpl.startpos = La posizione iniziale non può essere negativa
|
||||
cachedrowsetimpl.nextpage = Inserire i dati prima di chiamare
|
||||
cachedrowsetimpl.pagesize = La dimensione della pagina non può essere inferiore a zero
|
||||
cachedrowsetimpl.pagesize1 = La dimensione della pagina non può essere superiore a maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet è a solo inoltro
|
||||
cachedrowsetimpl.type = Il tipo è: {0}
|
||||
cachedrowsetimpl.opnotysupp = Operazione attualmente non supportata
|
||||
cachedrowsetimpl.featnotsupp = Funzione non supportata
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = Impossibile creare istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore
|
||||
webrowsetimpl.invalidwr = Processo di scrittura non valido
|
||||
webrowsetimpl.invalidrd = Processo di lettura non valido
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: operazione cursore non valida
|
||||
filteredrowsetimpl.absolute = absolute: operazione cursore non valida
|
||||
filteredrowsetimpl.notallowed = Questo valore non è consentito nel filtro
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Non è un'istanza di rowset
|
||||
joinrowsetimpl.matchnotset = Colonna di corrispondenza non impostata per l'unione
|
||||
joinrowsetimpl.numnotequal = Numero di elementi in rowset diverso dalla colonna di corrispondenza
|
||||
joinrowsetimpl.notdefined = Non è un tipo di unione definito
|
||||
joinrowsetimpl.notsupported = Questo tipo di unione non è supportato
|
||||
joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet
|
||||
joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico
|
||||
joinrowsetimpl.emptyrowset = Impossibile aggiungere un set di righe vuoto al JoinRowSet corrente
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Stato non valido
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (connessione): impossibile stabilire una connessione con JNDI
|
||||
jdbcrowsetimpl.paramtype = Impossibile dedurre il tipo di parametro
|
||||
jdbcrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate
|
||||
jdbcrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle
|
||||
jdbcrowsetimpl.matchcols1 = Le colonne di corrispondenza devono essere superiori a 0
|
||||
jdbcrowsetimpl.matchcols2 = Le colonne di corrispondenza non possono essere una stringa vuota o nulla
|
||||
jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate
|
||||
jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = ResultSet non è aggiornabile
|
||||
jdbcrowsetimpl.opnotysupp = Operazione attualmente non supportata
|
||||
jdbcrowsetimpl.featnotsupp = Funzione non supportata
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) Impossibile stabilire una connessione
|
||||
crsreader.paramtype = Impossibile dedurre il tipo di parametro
|
||||
crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando
|
||||
crsreader.datedetected = È stata rilevata una data
|
||||
crsreader.caldetected = È stato rilevato un calendario
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Impossibile stabilire una connessione
|
||||
crswriter.tname = writeData non riesce a determinare il nome di tabella
|
||||
crswriter.params1 = Valore dei parametri 1: {0}
|
||||
crswriter.params2 = Valore dei parametri 2: {0}
|
||||
crswriter.conflictsno = Conflitti durante la sincronizzazione
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = Non è stato inserito alcun valore
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Valore indice non compreso nell'intervallo
|
||||
syncrsimpl.noconflict = Questa colonna non è in conflitto
|
||||
syncrsimpl.syncnotpos = Impossibile eseguire la sincronizzazione
|
||||
syncrsimpl.valtores = Il valore da risolvere può essere nel database o in cachedrowset
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = **Errore di analisi: {0}, riga: {1}, URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException: {0}
|
||||
wrsxmlwriter.sqlex = SQLException: {0}
|
||||
wrsxmlwriter.failedwrite = Impossibile scrivere il valore
|
||||
wsrxmlwriter.notproper = Non un tipo corretto
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Errore durante l''impostazione della mappa: {0}
|
||||
xmlrch.errmetadata = Errore durante l''impostazione dei metadati: {0}
|
||||
xmlrch.errinsertval = Errore durante l''inserimento dei valori: {0}
|
||||
xmlrch.errconstr = Errore durante la costruzione della riga: {0}
|
||||
xmlrch.errdel = Errore durante l''eliminazione della riga: {0}
|
||||
xmlrch.errinsert = Errore durante la costruzione della riga di inserimento: {0}
|
||||
xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0}
|
||||
xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0}
|
||||
xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0}
|
||||
xmlrch.chars = caratteri:
|
||||
xmlrch.badvalue = valore non valido; proprietà non annullabile
|
||||
xmlrch.badvalue1 = valore non valido; metadati non annullabili
|
||||
xmlrch.warning = **Avvertenza: {0}, riga: {1}, URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = La classificazione di blocco non è supportata
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = Non supportato con RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = populateメソッドに無効なResultSetオブジェクトが使用されました
|
||||
cachedrowsetimpl.invalidp = 無効な永続性プロバイダが生成されました
|
||||
cachedrowsetimpl.nullhash = CachedRowSetImplインスタンスをインスタンス化できません。コンストラクタにnullのHashtableが使用されました
|
||||
cachedrowsetimpl.invalidop = 挿入行での無効な操作
|
||||
cachedrowsetimpl.accfailed = acceptChangesの失敗
|
||||
cachedrowsetimpl.invalidcp = 無効なカーソル位置
|
||||
cachedrowsetimpl.illegalop = 挿入されなかった行の不正な操作
|
||||
cachedrowsetimpl.clonefail = クローンの失敗: {0}
|
||||
cachedrowsetimpl.invalidcol = 無効な列索引
|
||||
cachedrowsetimpl.invalcolnm = 無効な列名
|
||||
cachedrowsetimpl.boolfail = 列{1}の値({0})でgetBooleanが失敗しました
|
||||
cachedrowsetimpl.bytefail = 列{1}の値({0})でgetByteが失敗しました
|
||||
cachedrowsetimpl.shortfail = 列{1}の値({0})でgetShortが失敗しました
|
||||
cachedrowsetimpl.intfail = 列{1}の値({0})でgetIntが失敗しました
|
||||
cachedrowsetimpl.longfail = 列{1}の値({0})でgetLongが失敗しました
|
||||
cachedrowsetimpl.floatfail = 列{1}の値({0})でgetFloatが失敗しました
|
||||
cachedrowsetimpl.doublefail = 列{1}の値({0})でgetDoubleが失敗しました
|
||||
cachedrowsetimpl.dtypemismt = データ型の不一致
|
||||
cachedrowsetimpl.datefail = 列{1}の値({0})でgetDateが失敗。変換できません
|
||||
cachedrowsetimpl.timefail = 列{1}の値({0})でgetTimeが失敗。変換できません
|
||||
cachedrowsetimpl.posupdate = 位置決めされた更新がサポートされません
|
||||
cachedrowsetimpl.unableins = インスタンス化できない: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: 無効なカーソル操作
|
||||
cachedrowsetimpl.first = First: 無効なカーソル操作
|
||||
cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: 無効なカーソル位置
|
||||
cachedrowsetimpl.relative = relative: 無効なカーソル位置
|
||||
cachedrowsetimpl.asciistream = asciiストリームの読込みが失敗しました
|
||||
cachedrowsetimpl.binstream = バイナリ・ストリームの読込みが失敗しました
|
||||
cachedrowsetimpl.failedins = 行の挿入に失敗
|
||||
cachedrowsetimpl.updateins = 挿入行においてupdateRowが呼び出されました
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: メタデータなし
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: 無効な列数
|
||||
cachedrowsetimpl.tablename = 表名にnullは使用できません
|
||||
cachedrowsetimpl.keycols = 無効なキー列
|
||||
cachedrowsetimpl.opnotsupp = データベースでサポートされない操作
|
||||
cachedrowsetimpl.matchcols = 一致列が列のセットと同じではありません
|
||||
cachedrowsetimpl.setmatchcols = 一致列を取得する前に設定してください
|
||||
cachedrowsetimpl.matchcols1 = 一致列は0より大きい必要があります
|
||||
cachedrowsetimpl.matchcols2 = 一致列は空かnull文字列である必要があります
|
||||
cachedrowsetimpl.unsetmatch = 設定解除されている列はセットと同じではありません
|
||||
cachedrowsetimpl.unsetmatch1 = unsetMatchColumnへの引数として列名を使用してください
|
||||
cachedrowsetimpl.unsetmatch2 = unsetMatchColumnへの引数として列IDを使用してください
|
||||
cachedrowsetimpl.numrows = 行数がゼロまたはフェッチ・サイズより小さいです
|
||||
cachedrowsetimpl.startpos = 開始位置を負にすることはできません
|
||||
cachedrowsetimpl.nextpage = 呼出し前にデータを移入します
|
||||
cachedrowsetimpl.pagesize = ページ・サイズをゼロより小さくすることはできません
|
||||
cachedrowsetimpl.pagesize1 = ページ・サイズをmaxRowsより大きくすることができません
|
||||
cachedrowsetimpl.fwdonly = ResultSetは順方向のみです
|
||||
cachedrowsetimpl.type = タイプ: {0}
|
||||
cachedrowsetimpl.opnotysupp = まだサポートされていない操作
|
||||
cachedrowsetimpl.featnotsupp = サポートされていない機能
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = WebRowSetImplインスタンスをインスタンス化できません。コンストラクタにnullのHashtableが使用されました
|
||||
webrowsetimpl.invalidwr = 無効なライター
|
||||
webrowsetimpl.invalidrd = 無効なリーダー
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: 無効なカーソル操作
|
||||
filteredrowsetimpl.absolute = absolute: 無効なカーソル操作
|
||||
filteredrowsetimpl.notallowed = この値はフィルタで許容されません
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = 行セットのインスタンスではありません
|
||||
joinrowsetimpl.matchnotset = 一致列が結合用に設定されていません
|
||||
joinrowsetimpl.numnotequal = 行セットの要素数が一致列と等しくありません
|
||||
joinrowsetimpl.notdefined = 定義された結合のタイプではありません
|
||||
joinrowsetimpl.notsupported = このタイプの結合はサポートされていません
|
||||
joinrowsetimpl.initerror = JoinRowSet初期化エラー
|
||||
joinrowsetimpl.genericerr = 一般的なjoinrowset初期エラー
|
||||
joinrowsetimpl.emptyrowset = このJoinRowSetに空の行セットを追加することはできません
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = 無効な状態
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (connect): JNDIが接続できません
|
||||
jdbcrowsetimpl.paramtype = パラメータ・タイプを推定できません
|
||||
jdbcrowsetimpl.matchcols = 一致列が列のセットと同じではありません
|
||||
jdbcrowsetimpl.setmatchcols = 一致列を取得する前に設定してください
|
||||
jdbcrowsetimpl.matchcols1 = 一致列は0より大きい必要があります
|
||||
jdbcrowsetimpl.matchcols2 = 一致列を空またはnull文字列にすることはできません
|
||||
jdbcrowsetimpl.unsetmatch = 設定解除されている列はセットと同じではありません
|
||||
jdbcrowsetimpl.usecolname = unsetMatchColumnへの引数として列名を使用してください
|
||||
jdbcrowsetimpl.usecolid = unsetMatchColumnへの引数として列IDを使用してください
|
||||
jdbcrowsetimpl.resnotupd = ResultSetは更新できません
|
||||
jdbcrowsetimpl.opnotysupp = まだサポートされていない操作
|
||||
jdbcrowsetimpl.featnotsupp = サポートされていない機能
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI)接続できません
|
||||
crsreader.paramtype = パラメータ・タイプを推定できません
|
||||
crsreader.connecterr = RowSetReaderの内部エラー: 接続またはコマンドなし
|
||||
crsreader.datedetected = 日付を検出しました
|
||||
crsreader.caldetected = カレンダを検出しました
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = 接続を取得できません
|
||||
crswriter.tname = writeDataが表名を判別できません
|
||||
crswriter.params1 = params1の値: {0}
|
||||
crswriter.params2 = params2の値: {0}
|
||||
crswriter.conflictsno = 同期中に競合が発生します
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = 値は挿入されていません
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = 範囲外の索引値
|
||||
syncrsimpl.noconflict = この列は競合していません
|
||||
syncrsimpl.syncnotpos = 同期できません
|
||||
syncrsimpl.valtores = 解決される値はデータベースまたはcachedrowsetにある可能性があります
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = RowSetの最後に到達しました。無効なカーソル位置
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = **解析エラー: {0}、行: {1}、URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException: {0}
|
||||
wrsxmlwriter.sqlex = SQLException: {0}
|
||||
wrsxmlwriter.failedwrite = 値の書込みに失敗しました
|
||||
wsrxmlwriter.notproper = 適切なタイプではありません
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Map設定エラー: {0}
|
||||
xmlrch.errmetadata = メタデータ設定エラー: {0}
|
||||
xmlrch.errinsertval = 値の挿入エラー: {0}
|
||||
xmlrch.errconstr = 行の生成エラー: {0}
|
||||
xmlrch.errdel = 行の削除エラー: {0}
|
||||
xmlrch.errinsert = 挿入行の生成エラー: {0}
|
||||
xmlrch.errinsdel = insdel行の生成エラー: {0}
|
||||
xmlrch.errupdate = 更新行の生成エラー: {0}
|
||||
xmlrch.errupdrow = 行の更新エラー: {0}
|
||||
xmlrch.chars = 文字:
|
||||
xmlrch.badvalue = 不正な値: nullにできないプロパティ
|
||||
xmlrch.badvalue1 = 不正な値: nullにできないメタデータ
|
||||
xmlrch.warning = **警告: {0}、行: {1}、URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = ロックの分類はサポートされていません
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = RIXMLProviderでは未サポート
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = 부적합한 ResultSet 객체가 제공되어 메소드를 채울 수 없습니다.
|
||||
cachedrowsetimpl.invalidp = 부적합한 지속성 제공자가 생성되었습니다.
|
||||
cachedrowsetimpl.nullhash = CachedRowSetImpl 인스턴스를 인스턴스화할 수 없습니다. 생성자에 널 Hashtable이 제공되었습니다.
|
||||
cachedrowsetimpl.invalidop = 행을 삽입하는 중 부적합한 작업이 수행되었습니다.
|
||||
cachedrowsetimpl.accfailed = acceptChanges를 실패했습니다.
|
||||
cachedrowsetimpl.invalidcp = 커서 위치가 부적합합니다.
|
||||
cachedrowsetimpl.illegalop = 삽입된 행이 아닌 행에서 잘못된 작업이 수행되었습니다.
|
||||
cachedrowsetimpl.clonefail = 복제 실패: {0}
|
||||
cachedrowsetimpl.invalidcol = 열 인덱스가 부적합합니다.
|
||||
cachedrowsetimpl.invalcolnm = 열 이름이 부적합합니다.
|
||||
cachedrowsetimpl.boolfail = {1} 열의 값({0})에서 getBoolen을 실패했습니다.
|
||||
cachedrowsetimpl.bytefail = {1} 열의 값({0})에서 getByte를 실패했습니다.
|
||||
cachedrowsetimpl.shortfail = {1} 열의 값({0})에서 getShort를 실패했습니다.
|
||||
cachedrowsetimpl.intfail = {1} 열의 값({0})에서 getInt를 실패했습니다.
|
||||
cachedrowsetimpl.longfail = {1} 열의 값({0})에서 getLong을 실패했습니다.
|
||||
cachedrowsetimpl.floatfail = {1} 열의 값({0})에서 getFloat를 실패했습니다.
|
||||
cachedrowsetimpl.doublefail = {1} 열의 값({0})에서 getDouble을 실패했습니다.
|
||||
cachedrowsetimpl.dtypemismt = 데이터 유형이 일치하지 않습니다.
|
||||
cachedrowsetimpl.datefail = {1} 열의 값({0})에서 getDate를 실패했습니다. 변환할 수 없습니다.
|
||||
cachedrowsetimpl.timefail = {1} 열의 값({0})에서 getTime을 실패했습니다. 변환할 수 없습니다.
|
||||
cachedrowsetimpl.posupdate = 위치가 지정된 업데이트가 지원되지 않습니다.
|
||||
cachedrowsetimpl.unableins = 인스턴스화할 수 없음: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: 커서 작업이 부적합합니다.
|
||||
cachedrowsetimpl.first = 처음: 커서 작업이 부적합합니다.
|
||||
cachedrowsetimpl.last = 마지막: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = 절대: 커서 위치가 부적합합니다.
|
||||
cachedrowsetimpl.relative = 상대: 커서 위치가 부적합합니다.
|
||||
cachedrowsetimpl.asciistream = ASCII 스트림에 대한 읽기를 실패했습니다.
|
||||
cachedrowsetimpl.binstream = 바이너리 스트림에서 읽기를 실패했습니다.
|
||||
cachedrowsetimpl.failedins = 행 삽입을 실패했습니다.
|
||||
cachedrowsetimpl.updateins = 행을 삽입하는 중 updateRow가 호출되었습니다.
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: 메타데이터가 없습니다.
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: 열 수가 부적합합니다.
|
||||
cachedrowsetimpl.tablename = 테이블 이름은 널일 수 없습니다.
|
||||
cachedrowsetimpl.keycols = 키 열이 부적합합니다.
|
||||
cachedrowsetimpl.opnotsupp = 데이터베이스에서 지원하지 않는 작업입니다.
|
||||
cachedrowsetimpl.matchcols = 일치 열이 설정된 열과 동일하지 않습니다.
|
||||
cachedrowsetimpl.setmatchcols = 일치 열을 설정한 후 가져오십시오.
|
||||
cachedrowsetimpl.matchcols1 = 일치 열은 0개 이상이어야 합니다.
|
||||
cachedrowsetimpl.matchcols2 = 일치 열은 비어 있거나 널 문자열이어야 합니다.
|
||||
cachedrowsetimpl.unsetmatch = 설정을 해제하려는 열이 설정된 열과 다릅니다.
|
||||
cachedrowsetimpl.unsetmatch1 = 열 이름을 unsetMatchColumn의 인수로 사용하십시오.
|
||||
cachedrowsetimpl.unsetmatch2 = 열 ID를 unsetMatchColumn의 인수로 사용하십시오.
|
||||
cachedrowsetimpl.numrows = 행 수가 0보다 작거나 인출 크기보다 작습니다.
|
||||
cachedrowsetimpl.startpos = 시작 위치는 음수일 수 없습니다.
|
||||
cachedrowsetimpl.nextpage = 호출하기 전에 데이터를 채우십시오.
|
||||
cachedrowsetimpl.pagesize = 페이지 크기는 0보다 작을 수 없습니다.
|
||||
cachedrowsetimpl.pagesize1 = 페이지 크기는 maxRows보다 클 수 없습니다.
|
||||
cachedrowsetimpl.fwdonly = ResultSet는 전달 전용입니다.
|
||||
cachedrowsetimpl.type = 유형: {0}
|
||||
cachedrowsetimpl.opnotysupp = 작업이 아직 지원되지 않습니다.
|
||||
cachedrowsetimpl.featnotsupp = 기능이 지원되지 않습니다.
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = WebRowSetImpl 인스턴스를 인스턴스화할 수 없습니다. 생성자에 널 Hashtable이 제공되었습니다.
|
||||
webrowsetimpl.invalidwr = 기록 장치가 부적합합니다.
|
||||
webrowsetimpl.invalidrd = 읽기 프로그램이 부적합합니다.
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = 상대: 커서 작업이 부적합합니다.
|
||||
filteredrowsetimpl.absolute = 절대: 커서 작업이 부적합합니다.
|
||||
filteredrowsetimpl.notallowed = 이 값은 필터를 통과할 수 없습니다.
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Rowset의 인스턴스가 아닙니다.
|
||||
joinrowsetimpl.matchnotset = 조인할 일치 열이 설정되지 않았습니다.
|
||||
joinrowsetimpl.numnotequal = Rowset의 요소 수가 일치 열과 같지 않습니다.
|
||||
joinrowsetimpl.notdefined = 정의된 조인 유형이 아닙니다.
|
||||
joinrowsetimpl.notsupported = 이 조인 유형은 지원되지 않습니다.
|
||||
joinrowsetimpl.initerror = JoinRowSet 초기화 오류
|
||||
joinrowsetimpl.genericerr = 일반 joinrowset 초기 오류
|
||||
joinrowsetimpl.emptyrowset = 빈 rowset를 이 JoinRowSet에 추가할 수 없습니다.
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = 상태가 부적합합니다.
|
||||
jdbcrowsetimpl.connect = JdbcRowSet(접속) JNDI가 접속할 수 없습니다.
|
||||
jdbcrowsetimpl.paramtype = 매개변수 유형을 추론할 수 없습니다.
|
||||
jdbcrowsetimpl.matchcols = 일치 열이 설정된 열과 동일하지 않습니다.
|
||||
jdbcrowsetimpl.setmatchcols = 일치 열을 설정한 후 가져오십시오.
|
||||
jdbcrowsetimpl.matchcols1 = 일치 열은 0개 이상이어야 합니다.
|
||||
jdbcrowsetimpl.matchcols2 = 일치 열은 널 또는 빈 문자열일 수 없습니다.
|
||||
jdbcrowsetimpl.unsetmatch = 설정을 해제하려는 열이 설정된 열과 다릅니다.
|
||||
jdbcrowsetimpl.usecolname = 열 이름을 unsetMatchColumn의 인수로 사용하십시오.
|
||||
jdbcrowsetimpl.usecolid = 열 ID를 unsetMatchColumn의 인수로 사용하십시오.
|
||||
jdbcrowsetimpl.resnotupd = ResultSet를 업데이트할 수 없습니다.
|
||||
jdbcrowsetimpl.opnotysupp = 작업이 아직 지원되지 않습니다.
|
||||
jdbcrowsetimpl.featnotsupp = 기능이 지원되지 않습니다.
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) 접속할 수 없습니다.
|
||||
crsreader.paramtype = 매개변수 유형을 추론할 수 없습니다.
|
||||
crsreader.connecterr = RowSetReader에 내부 오류 발생: 접속 또는 명령이 없습니다.
|
||||
crsreader.datedetected = 날짜를 감지함
|
||||
crsreader.caldetected = 달력을 감지함
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = 접속할 수 없습니다.
|
||||
crswriter.tname = writeData에서 테이블 이름을 확인할 수 없습니다.
|
||||
crswriter.params1 = params1의 값: {0}
|
||||
crswriter.params2 = params2의 값: {0}
|
||||
crswriter.conflictsno = 동기화하는 중 충돌함
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = 값이 삽입되지 않았습니다.
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = 인덱스 값이 범위를 벗어났습니다.
|
||||
syncrsimpl.noconflict = 이 열은 충돌하지 않습니다.
|
||||
syncrsimpl.syncnotpos = 동기화할 수 없습니다.
|
||||
syncrsimpl.valtores = 분석할 값이 데이터베이스 또는 cachedrowset에 있을 수 있습니다.
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = RowSet의 끝에 도달했습니다. 커서 위치가 부적합합니다.
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = ** 구문분석 오류: {0}, 행: {1}, URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException : {0}
|
||||
wrsxmlwriter.sqlex = SQLException : {0}
|
||||
wrsxmlwriter.failedwrite = 값 쓰기를 실패했습니다.
|
||||
wsrxmlwriter.notproper = 적절한 유형이 아닙니다.
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = 맵을 설정하는 중 오류 발생: {0}
|
||||
xmlrch.errmetadata = 메타데이터를 설정하는 중 오류 발생: {0}
|
||||
xmlrch.errinsertval = 값을 삽입하는 중 오류 발생: {0}
|
||||
xmlrch.errconstr = 행을 생성하는 중 오류 발생: {0}
|
||||
xmlrch.errdel = 행을 삭제하는 중 오류 발생: {0}
|
||||
xmlrch.errinsert = insert 행을 생성하는 중 오류 발생: {0}
|
||||
xmlrch.errinsdel = insdel 행을 생성하는 중 오류 발생: {0}
|
||||
xmlrch.errupdate = update 행을 생성하는 중 오류 발생: {0}
|
||||
xmlrch.errupdrow = 행을 업데이트하는 중 오류 발생: {0}
|
||||
xmlrch.chars = 문자:
|
||||
xmlrch.badvalue = 잘못된 값: 널일 수 없는 속성입니다.
|
||||
xmlrch.badvalue1 = 잘못된 값: 널일 수 없는 메타데이터입니다.
|
||||
xmlrch.warning = ** 경고: {0}, 행: {1}, URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = 분류 잠금이 지원되지 않습니다.
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = RIXMLProvider에서 지원되지 않습니다.
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Objeto ResultSet inválido fornecido para preencher o método
|
||||
cachedrowsetimpl.invalidp = Fornecedor de persistências inválido gerado
|
||||
cachedrowsetimpl.nullhash = Não é possível instanciar a instância CachedRowSetImpl. Hashtable Nulo fornecido ao construtor
|
||||
cachedrowsetimpl.invalidop = Operação inválida durante a inserção de linha
|
||||
cachedrowsetimpl.accfailed = Falha em acceptChanges
|
||||
cachedrowsetimpl.invalidcp = Posição inválida do cursor
|
||||
cachedrowsetimpl.illegalop = Operação inválida em linha não inserida
|
||||
cachedrowsetimpl.clonefail = Falha ao clonar: {0}
|
||||
cachedrowsetimpl.invalidcol = Índice de coluna inválido
|
||||
cachedrowsetimpl.invalcolnm = Nome de coluna inválido
|
||||
cachedrowsetimpl.boolfail = Falha em getBoolen no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.bytefail = Falha em getByte no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.shortfail = Falha em getShort no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.intfail = Falha em getInt no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.longfail = Falha em getLong no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.floatfail = Falha em getFloat no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.doublefail = Falha em getDouble no valor ( {0} ) na coluna {1}
|
||||
cachedrowsetimpl.dtypemismt = Tipo de Dados Incompatível
|
||||
cachedrowsetimpl.datefail = Falha em getDate no valor ( {0} ) na coluna {1} sem conversão disponível
|
||||
cachedrowsetimpl.timefail = Falha em getTime no valor ( {0} ) na coluna {1} sem conversão disponível
|
||||
cachedrowsetimpl.posupdate = Atualizações posicionadas não suportadas
|
||||
cachedrowsetimpl.unableins = Não é possível instanciar : {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst : Operação do cursor inválida
|
||||
cachedrowsetimpl.first = First : Operação inválida do cursor
|
||||
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute : Posição inválida do cursor
|
||||
cachedrowsetimpl.relative = relative : Posição inválida do cursor
|
||||
cachedrowsetimpl.asciistream = falha na leitura do fluxo ascii
|
||||
cachedrowsetimpl.binstream = falha na leitura do fluxo binário
|
||||
cachedrowsetimpl.failedins = Falha ao inserir a linha
|
||||
cachedrowsetimpl.updateins = updateRow chamado durante a inserção de linha
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow : sem metadados
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow : número de colunas inválido
|
||||
cachedrowsetimpl.tablename = O nome da tabela não pode ser nulo
|
||||
cachedrowsetimpl.keycols = Colunas de chaves inválidas
|
||||
cachedrowsetimpl.opnotsupp = Operação não suportada pelo Banco de Dados
|
||||
cachedrowsetimpl.matchcols = As colunas correspondentes não são iguais às colunas definidas
|
||||
cachedrowsetimpl.setmatchcols = Definir Colunas correspondentes antes de obtê-las
|
||||
cachedrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
|
||||
cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser strings vazias ou nulas
|
||||
cachedrowsetimpl.unsetmatch = As colunas não definidas não são iguais às colunas definidas
|
||||
cachedrowsetimpl.unsetmatch1 = Usar o nome da coluna como argumento para unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Usar o ID da coluna como argumento para unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = O número de linhas é menor do que zero ou menor do que o tamanho obtido
|
||||
cachedrowsetimpl.startpos = A posição de início não pode ser negativa
|
||||
cachedrowsetimpl.nextpage = Preencher dados antes de chamar
|
||||
cachedrowsetimpl.pagesize = O tamanho da página não pode ser menor do que zero
|
||||
cachedrowsetimpl.pagesize1 = O tamanho da página não pode ser maior do que maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet é somente para frente
|
||||
cachedrowsetimpl.type = O tipo é : {0}
|
||||
cachedrowsetimpl.opnotysupp = Operação ainda não suportada
|
||||
cachedrowsetimpl.featnotsupp = Recurso não suportado
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = Não é possível instanciar a instância WebRowSetImpl. Hashtable nulo fornecido ao construtor
|
||||
webrowsetimpl.invalidwr = Gravador inválido
|
||||
webrowsetimpl.invalidrd = Leitor inválido
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative : Operação inválida do cursor
|
||||
filteredrowsetimpl.absolute = absolute : Operação inválida do cursor
|
||||
filteredrowsetimpl.notallowed = Este valor não é permitido no filtro
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Não é uma instância do conjunto de linhas
|
||||
joinrowsetimpl.matchnotset = Coluna Correspondente não definida para junção
|
||||
joinrowsetimpl.numnotequal = Número de elementos no conjunto de linhas diferente da coluna correspondente
|
||||
joinrowsetimpl.notdefined = Não é um tipo definido de junção
|
||||
joinrowsetimpl.notsupported = Este tipo de junção não é suportada
|
||||
joinrowsetimpl.initerror = Erro de inicialização do JoinRowSet
|
||||
joinrowsetimpl.genericerr = Erro inicial de joinrowset genérico
|
||||
joinrowsetimpl.emptyrowset = O conjunto de linha vazio não pode ser adicionado a este JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Estado inválido
|
||||
jdbcrowsetimpl.connect = Não é possível conectar JdbcRowSet (connect) a JNDI
|
||||
jdbcrowsetimpl.paramtype = Não é possível deduzir o tipo de parâmetro
|
||||
jdbcrowsetimpl.matchcols = As Colunas Correspondentes não são iguais às colunas definidas
|
||||
jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obtê-las
|
||||
jdbcrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
|
||||
jdbcrowsetimpl.matchcols2 = As colunas correspondentes não podem ser strings vazias ou nulas
|
||||
jdbcrowsetimpl.unsetmatch = As colunas não definidas não são iguais às colunas definidas
|
||||
jdbcrowsetimpl.usecolname = Usar o nome da coluna como argumento para unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Usar o ID da coluna como argumento para unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = ResultSet não é atualizável
|
||||
jdbcrowsetimpl.opnotysupp = Operação ainda não suportada
|
||||
jdbcrowsetimpl.featnotsupp = Recurso não suportado
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) Não é possível conectar
|
||||
crsreader.paramtype = Não é possível deduzir o tipo de parâmetro
|
||||
crsreader.connecterr = Erro Interno no RowSetReader: sem conexão ou comando
|
||||
crsreader.datedetected = Data Detectada
|
||||
crsreader.caldetected = Calendário Detectado
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Não é possível obter a conexão
|
||||
crswriter.tname = writeData não pode determinar o nome da tabela
|
||||
crswriter.params1 = Valor de params1 : {0}
|
||||
crswriter.params2 = Valor de params2 : {0}
|
||||
crswriter.conflictsno = conflitos durante a sincronização
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = Nenhum valor foi inserido
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Valor de índice fora da faixa
|
||||
syncrsimpl.noconflict = Está coluna não está em conflito
|
||||
syncrsimpl.syncnotpos = A sincronização não é possível
|
||||
syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado no cache
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Fim de RowSet atingido. Posição inválida do cursor
|
||||
wrsxmlreader.readxml = readXML : {0}
|
||||
wrsxmlreader.parseerr = ** Erro de Parsing : {0} , linha : {1} , uri : {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException : {0}
|
||||
wrsxmlwriter.sqlex = SQLException : {0}
|
||||
wrsxmlwriter.failedwrite = Falha ao gravar o valor
|
||||
wsrxmlwriter.notproper = Não é um tipo adequado
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Erro ao definir o Mapa : {0}
|
||||
xmlrch.errmetadata = Erro ao definir metadados : {0}
|
||||
xmlrch.errinsertval = Erro ao inserir valores : {0}
|
||||
xmlrch.errconstr = Erro ao construir a linha : {0}
|
||||
xmlrch.errdel = Erro ao excluir a linha : {0}
|
||||
xmlrch.errinsert = Erro ao construir a linha de inserção : {0}
|
||||
xmlrch.errinsdel = Erro ao construir a linha insdel : {0}
|
||||
xmlrch.errupdate = Erro ao construir a linha de atualização : {0}
|
||||
xmlrch.errupdrow = Erro ao atualizar a linha : {0}
|
||||
xmlrch.chars = caracteres :
|
||||
xmlrch.badvalue = Valor incorreto ; propriedade não anulável
|
||||
xmlrch.badvalue1 = Valor incorreto ; metadado não anulável
|
||||
xmlrch.warning = ** Advertência : {0} , linha : {1} , uri : {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = O bloqueio de classificação não é suportado
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = Não suportado com RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = Ifyllningsmetoden fick ett ogiltigt ResultSet-objekt
|
||||
cachedrowsetimpl.invalidp = En ogiltig beständig leverantör genererades
|
||||
cachedrowsetimpl.nullhash = Kan inte instansiera CachedRowSetImpl. Null-hashtabell skickades till konstruktor
|
||||
cachedrowsetimpl.invalidop = En ogiltig åtgärd utfördes på infogad rad
|
||||
cachedrowsetimpl.accfailed = acceptChanges utfördes inte
|
||||
cachedrowsetimpl.invalidcp = Ogiltigt markörläge
|
||||
cachedrowsetimpl.illegalop = En otillåten åtgärd utfördes på en icke infogad rad
|
||||
cachedrowsetimpl.clonefail = Kloningen utfördes inte: {0}
|
||||
cachedrowsetimpl.invalidcol = Ogiltigt kolumnindex
|
||||
cachedrowsetimpl.invalcolnm = Ogiltigt kolumnnamn
|
||||
cachedrowsetimpl.boolfail = getBoolen utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.bytefail = getByte utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.shortfail = getShort utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.intfail = getInt utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.longfail = getLong utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.floatfail = getFloat utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.doublefail = getDouble utfördes inte för värdet ({0}) i kolumnen {1}
|
||||
cachedrowsetimpl.dtypemismt = Felmatchad datatyp
|
||||
cachedrowsetimpl.datefail = getDate utfördes inte för värdet ({0}) i kolumnen {1}, ingen konvertering tillgänglig
|
||||
cachedrowsetimpl.timefail = getTime utfördes inte för värdet ({0}) i kolumnen {1}, ingen konvertering tillgänglig
|
||||
cachedrowsetimpl.posupdate = Det finns inte stöd för positionerad uppdatering
|
||||
cachedrowsetimpl.unableins = Kan inte instansiera {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: Ogiltig marköråtgärd
|
||||
cachedrowsetimpl.first = First: Ogiltig marköråtgärd
|
||||
cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: Markörpositionen är ogiltig
|
||||
cachedrowsetimpl.relative = relative: Markörpositionen är ogiltig
|
||||
cachedrowsetimpl.asciistream = kunde inte läsa ASCII-strömmen
|
||||
cachedrowsetimpl.binstream = kunde inte läsa den binära strömmen
|
||||
cachedrowsetimpl.failedins = Kunde inte infoga rad
|
||||
cachedrowsetimpl.updateins = updateRow anropades från infogad rad
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: inga metadata
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner
|
||||
cachedrowsetimpl.tablename = Tabellnamnet kan inte vara null
|
||||
cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner
|
||||
cachedrowsetimpl.opnotsupp = Databasen har inte stöd för denna åtgärd
|
||||
cachedrowsetimpl.matchcols = Matchningskolumnerna är inte samma som de som ställts in
|
||||
cachedrowsetimpl.setmatchcols = Ställ in matchningskolumnerna innan du hämtar dem
|
||||
cachedrowsetimpl.matchcols1 = Matchningskolumnerna måste vara större än 0
|
||||
cachedrowsetimpl.matchcols2 = Matchningskolumnerna måste vara tomma eller en null-sträng
|
||||
cachedrowsetimpl.unsetmatch = Kolumnerna som återställs är inte samma som de som ställts in
|
||||
cachedrowsetimpl.unsetmatch1 = Använd kolumnnamn som argument för unsetMatchColumn
|
||||
cachedrowsetimpl.unsetmatch2 = Använd kolumn-id som argument för unsetMatchColumn
|
||||
cachedrowsetimpl.numrows = Antalet rader understiger noll eller är mindre än hämtningsstorleken
|
||||
cachedrowsetimpl.startpos = Startpositionen får inte vara negativ
|
||||
cachedrowsetimpl.nextpage = Fyll i data innan anrop
|
||||
cachedrowsetimpl.pagesize = Sidstorleken får inte understiga noll
|
||||
cachedrowsetimpl.pagesize1 = Sidstorleken får inte överstiga maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet kan endast gå framåt
|
||||
cachedrowsetimpl.type = Typ: {0}
|
||||
cachedrowsetimpl.opnotysupp = Det finns ännu inget stöd för denna åtgärd
|
||||
cachedrowsetimpl.featnotsupp = Funktionen stöds inte
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = Kan inte instansiera WebRowSetImpl. Null-hashtabell skickades till konstruktor.
|
||||
webrowsetimpl.invalidwr = Ogiltig skrivfunktion
|
||||
webrowsetimpl.invalidrd = Ogiltig läsare
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: Ogiltig marköråtgärd
|
||||
filteredrowsetimpl.absolute = absolute: Ogiltig marköråtgärd
|
||||
filteredrowsetimpl.notallowed = Detta värde kommer att filtreras bort
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = Detta är inte en instans av raduppsättning
|
||||
joinrowsetimpl.matchnotset = Matchningskolumnen är inte inställd på koppling
|
||||
joinrowsetimpl.numnotequal = Antal objekt i raduppsättning stämmer inte med matchningskolumnens
|
||||
joinrowsetimpl.notdefined = Detta är inte någon definierad kopplingstyp
|
||||
joinrowsetimpl.notsupported = Det finns inget stöd för denna kopplingstyp
|
||||
joinrowsetimpl.initerror = Initieringsfel för JoinRowSet
|
||||
joinrowsetimpl.genericerr = Allmänt initieringsfel för JoinRowSet
|
||||
joinrowsetimpl.emptyrowset = Tomma raduppsättningar kan inte läggas till i denna JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = Ogiltigt tillstånd
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (anslut) JNDI kan inte anslutas
|
||||
jdbcrowsetimpl.paramtype = Kan inte härleda parametertypen
|
||||
jdbcrowsetimpl.matchcols = Matchningskolumnerna är inte samma som de som ställts in
|
||||
jdbcrowsetimpl.setmatchcols = Ställ in matchningskolumnerna innan du hämtar dem
|
||||
jdbcrowsetimpl.matchcols1 = Matchningskolumnerna måste vara större än 0
|
||||
jdbcrowsetimpl.matchcols2 = Matchningskolumnerna kan inte vara en null-sträng eller tomma
|
||||
jdbcrowsetimpl.unsetmatch = Kolumnerna som återställs är inte samma som de som ställts in
|
||||
jdbcrowsetimpl.usecolname = Använd kolumnnamn som argument för unsetMatchColumn
|
||||
jdbcrowsetimpl.usecolid = Använd kolumn-id som argument för unsetMatchColumn
|
||||
jdbcrowsetimpl.resnotupd = ResultSet är inte uppdateringsbart
|
||||
jdbcrowsetimpl.opnotysupp = Det finns ännu inget stöd för denna åtgärd
|
||||
jdbcrowsetimpl.featnotsupp = Funktionen stöds inte
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) kan inte anslutas
|
||||
crsreader.paramtype = Kan inte härleda parametertypen
|
||||
crsreader.connecterr = Internt fel i RowSetReader: ingen anslutning eller inget kommando
|
||||
crsreader.datedetected = Ett datum har identifierats
|
||||
crsreader.caldetected = En kalender har identifierats
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = Kan inte upprätta anslutning
|
||||
crswriter.tname = writeData kan inte fastställa tabellnamnet
|
||||
crswriter.params1 = Parametervärde1: {0}
|
||||
crswriter.params2 = Parametervärde2: {0}
|
||||
crswriter.conflictsno = orsakar konflikt vid synkronisering
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = Inget värde har infogats
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = Indexvärdet ligger utanför intervallet
|
||||
syncrsimpl.noconflict = Kolumnen orsakar ingen konflikt
|
||||
syncrsimpl.syncnotpos = Synkronisering är inte möjlig
|
||||
syncrsimpl.valtores = Värdet som ska fastställas kan antingen finnas i databasen eller i cachedrowset
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = Slutet på RowSet har nåtts. Markörpositionen är ogiltig.
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = ** Tolkningsfel: {0}, rad: {1}, URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException: {0}
|
||||
wrsxmlwriter.sqlex = SQLException: {0}
|
||||
wrsxmlwriter.failedwrite = Kunde inte skriva värdet
|
||||
wsrxmlwriter.notproper = Ingen riktig typ
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = Ett fel inträffade vid inställning av mappning: {0}
|
||||
xmlrch.errmetadata = Ett fel inträffade vid inställning av metadata: {0}
|
||||
xmlrch.errinsertval = Ett fel inträffade vid infogning av värden: {0}
|
||||
xmlrch.errconstr = Ett fel inträffade vid konstruktion av rad: {0}
|
||||
xmlrch.errdel = Ett fel inträffade vid borttagning av rad: {0}
|
||||
xmlrch.errinsert = Ett fel inträffade vid konstruktion av infogad rad: {0}
|
||||
xmlrch.errinsdel = Ett fel inträffade vid konstruktion av insdel-rad: {0}
|
||||
xmlrch.errupdate = Ett fel inträffade vid konstruktion av uppdateringsrad: {0}
|
||||
xmlrch.errupdrow = Ett fel inträffade vid uppdatering av rad: {0}
|
||||
xmlrch.chars = tecken:
|
||||
xmlrch.badvalue = Felaktigt värde; egenskapen får inte ha värdet null
|
||||
xmlrch.badvalue1 = Felaktigt värde; metadata får inte ha värdet null
|
||||
xmlrch.warning = ** Varning! {0}, rad: {1}, URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = Det finns inte stöd för denna låsningsklassificering
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = RIXMLProvider har inte stöd för detta
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = 提供给填充方法的 ResultSet 对象无效
|
||||
cachedrowsetimpl.invalidp = 生成的持久性提供方无效
|
||||
cachedrowsetimpl.nullhash = 无法实例化 CachedRowSetImpl 实例。提供给构造器的 Hashtable 为空值
|
||||
cachedrowsetimpl.invalidop = 对插入行执行的操作无效
|
||||
cachedrowsetimpl.accfailed = acceptChanges 失败
|
||||
cachedrowsetimpl.invalidcp = 光标位置无效
|
||||
cachedrowsetimpl.illegalop = 对非插入行执行的操作非法
|
||||
cachedrowsetimpl.clonefail = 克隆失败: {0}
|
||||
cachedrowsetimpl.invalidcol = 列索引无效
|
||||
cachedrowsetimpl.invalcolnm = 列名无效
|
||||
cachedrowsetimpl.boolfail = 对列 {1} 中的值 ({0}) 执行 getBoolen 失败
|
||||
cachedrowsetimpl.bytefail = 对列 {1} 中的值 ({0}) 执行 getByte 失败
|
||||
cachedrowsetimpl.shortfail = 对列 {1} 中的值 ({0}) 执行 getShort 失败
|
||||
cachedrowsetimpl.intfail = 对列 {1} 中的值 ({0}) 执行 getInt 失败
|
||||
cachedrowsetimpl.longfail = 对列 {1} 中的值 ({0}) 执行 getLong 失败
|
||||
cachedrowsetimpl.floatfail = 对列 {1} 中的值 ({0}) 执行 getFloat 失败
|
||||
cachedrowsetimpl.doublefail = 对列 {1} 中的值 ({0}) 执行 getDouble 失败
|
||||
cachedrowsetimpl.dtypemismt = 数据类型不匹配
|
||||
cachedrowsetimpl.datefail = 对列 {1} 中的值 ({0}) 执行 getDate 失败, 无可用转换
|
||||
cachedrowsetimpl.timefail = 对列 {1} 中的值 ({0}) 执行 getTime 失败, 无可用转换
|
||||
cachedrowsetimpl.posupdate = 不支持定位更新
|
||||
cachedrowsetimpl.unableins = 无法实例化: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: 光标操作无效
|
||||
cachedrowsetimpl.first = First: 光标操作无效
|
||||
cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: 光标位置无效
|
||||
cachedrowsetimpl.relative = relative: 光标位置无效
|
||||
cachedrowsetimpl.asciistream = 未能读取 ASCII 流
|
||||
cachedrowsetimpl.binstream = 未能读取二进制流
|
||||
cachedrowsetimpl.failedins = 对插入行执行操作失败
|
||||
cachedrowsetimpl.updateins = 为插入行调用 updateRow
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: 无元数据
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: 列数无效
|
||||
cachedrowsetimpl.tablename = 表名不能为空值
|
||||
cachedrowsetimpl.keycols = 关键字列无效
|
||||
cachedrowsetimpl.opnotsupp = 操作不受数据库支持
|
||||
cachedrowsetimpl.matchcols = 匹配列与设置的那些匹配列不同
|
||||
cachedrowsetimpl.setmatchcols = 在获取匹配列之前先设置匹配列
|
||||
cachedrowsetimpl.matchcols1 = 匹配列数应当大于 0
|
||||
cachedrowsetimpl.matchcols2 = 匹配列数应当为空或空值字符串
|
||||
cachedrowsetimpl.unsetmatch = 要取消设置的列与设置的列不同
|
||||
cachedrowsetimpl.unsetmatch1 = 使用列名作为 unsetMatchColumn 的参数
|
||||
cachedrowsetimpl.unsetmatch2 = 使用列 ID 作为 unsetMatchColumn 的参数
|
||||
cachedrowsetimpl.numrows = 行数小于零或小于要提取的行数
|
||||
cachedrowsetimpl.startpos = 起始位置不能为负数
|
||||
cachedrowsetimpl.nextpage = 在调用之前先填充数据
|
||||
cachedrowsetimpl.pagesize = 页面大小不能小于零
|
||||
cachedrowsetimpl.pagesize1 = 页面大小不能大于 maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet 的类型为仅向前类型
|
||||
cachedrowsetimpl.type = 类型为: {0}
|
||||
cachedrowsetimpl.opnotysupp = 尚不支持该操作
|
||||
cachedrowsetimpl.featnotsupp = 尚不支持该功能
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = 无法实例化 WebRowSetImpl 实例。提供给构造器的 Hashtable 为空值
|
||||
webrowsetimpl.invalidwr = 写进程无效
|
||||
webrowsetimpl.invalidrd = 读进程无效
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: 光标操作无效
|
||||
filteredrowsetimpl.absolute = absolute: 光标操作无效
|
||||
filteredrowsetimpl.notallowed = 不允许此值通过筛选器
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = 不是 RowSet 的实例
|
||||
joinrowsetimpl.matchnotset = 未设置匹配列以进行联接
|
||||
joinrowsetimpl.numnotequal = RowSet 中的元素个数不等于匹配列数
|
||||
joinrowsetimpl.notdefined = 这不是定义的联接类型
|
||||
joinrowsetimpl.notsupported = 不支持此联接类型
|
||||
joinrowsetimpl.initerror = JoinRowSet 初始化错误
|
||||
joinrowsetimpl.genericerr = 一般 joinrowset 初始错误
|
||||
joinrowsetimpl.emptyrowset = 无法将空 RowSet 添加到此 JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = 状态无效
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (连接) JNDI 无法连接
|
||||
jdbcrowsetimpl.paramtype = 无法推断参数类型
|
||||
jdbcrowsetimpl.matchcols = 匹配列与设置的那些匹配列不同
|
||||
jdbcrowsetimpl.setmatchcols = 在获取匹配列之前先设置匹配列
|
||||
jdbcrowsetimpl.matchcols1 = 匹配列数应当大于 0
|
||||
jdbcrowsetimpl.matchcols2 = 匹配列不能为空值或空字符串
|
||||
jdbcrowsetimpl.unsetmatch = 要取消设置的列与设置的列不同
|
||||
jdbcrowsetimpl.usecolname = 使用列名作为 unsetMatchColumn 的参数
|
||||
jdbcrowsetimpl.usecolid = 使用列 ID 作为 unsetMatchColumn 的参数
|
||||
jdbcrowsetimpl.resnotupd = ResultSet 不可更新
|
||||
jdbcrowsetimpl.opnotysupp = 尚不支持该操作
|
||||
jdbcrowsetimpl.featnotsupp = 尚不支持该功能
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) 无法连接
|
||||
crsreader.paramtype = 无法推断参数类型
|
||||
crsreader.connecterr = RowSetReader 中出现内部错误: 无连接或命令
|
||||
crsreader.datedetected = 检测到日期
|
||||
crsreader.caldetected = 检测到日历
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = 无法获取连接
|
||||
crswriter.tname = writeData 无法确定表名
|
||||
crswriter.params1 = params1 的值: {0}
|
||||
crswriter.params2 = params2 的值: {0}
|
||||
crswriter.conflictsno = 同步时发生冲突
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = 尚未插入任何值
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = 索引值超出范围
|
||||
syncrsimpl.noconflict = 此列不冲突
|
||||
syncrsimpl.syncnotpos = 不能同步
|
||||
syncrsimpl.valtores = 要解析的值可以在数据库中, 也可以在 CachedRowSet 中
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = 已到达 RowSet 的结尾。光标位置无效
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = ** 解析错误: {0}, 行: {1}, URI: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException: {0}
|
||||
wrsxmlwriter.sqlex = SQLException: {0}
|
||||
wrsxmlwriter.failedwrite = 无法写入值
|
||||
wsrxmlwriter.notproper = 类型不正确
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = 设置映射时出错: {0}
|
||||
xmlrch.errmetadata = 设置元数据时出错: {0}
|
||||
xmlrch.errinsertval = 插入值时出错: {0}
|
||||
xmlrch.errconstr = 构造行时出错: {0}
|
||||
xmlrch.errdel = 删除行时出错: {0}
|
||||
xmlrch.errinsert = 构造插入行时出错: {0}
|
||||
xmlrch.errinsdel = 构造 insdel 行时出错: {0}
|
||||
xmlrch.errupdate = 构造更新行时出错: {0}
|
||||
xmlrch.errupdrow = 更新行时出错: {0}
|
||||
xmlrch.chars = 字符:
|
||||
xmlrch.badvalue = 值错误; 属性不可为空值
|
||||
xmlrch.badvalue1 = 值错误; 元数据不可为空值
|
||||
xmlrch.warning = ** 警告: {0}, 行: {1}, URI: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = 不支持锁定分类
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = 不支持 RIXMLProvider
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
#
|
||||
# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# CacheRowSetImpl exceptions
|
||||
cachedrowsetimpl.populate = 為植入方法提供的 ResultSet 物件無效
|
||||
cachedrowsetimpl.invalidp = 產生的持續性提供者無效
|
||||
cachedrowsetimpl.nullhash = 無法建立 CachedRowSetImpl 執行處理。為建構子提供的 Hashtable 為空值
|
||||
cachedrowsetimpl.invalidop = 插入列時的作業無效
|
||||
cachedrowsetimpl.accfailed = acceptChanges 失敗
|
||||
cachedrowsetimpl.invalidcp = 游標位置無效
|
||||
cachedrowsetimpl.illegalop = 非插入列上存在無效作業
|
||||
cachedrowsetimpl.clonefail = 複製失敗: {0}
|
||||
cachedrowsetimpl.invalidcol = 欄索引無效
|
||||
cachedrowsetimpl.invalcolnm = 欄名無效
|
||||
cachedrowsetimpl.boolfail = 對欄 {1} 中的值 ( {0} ) 執行 getBoolen 失敗
|
||||
cachedrowsetimpl.bytefail = 對欄 {1} 中的值 ( {0} ) 執行 getByte 失敗
|
||||
cachedrowsetimpl.shortfail = 對欄 {1} 中的值 ( {0} ) 執行 getShort 失敗
|
||||
cachedrowsetimpl.intfail = 對欄 {1} 中的值 ( {0} ) 執行 getInt 失敗
|
||||
cachedrowsetimpl.longfail = 對欄 {1} 中的值 ( {0} ) 執行 getLong 失敗
|
||||
cachedrowsetimpl.floatfail = 對欄 {1} 中的值 ( {0} ) 執行 getFloat 失敗
|
||||
cachedrowsetimpl.doublefail = 對欄 {1} 中的值 ( {0} ) 執行 getDouble 失敗
|
||||
cachedrowsetimpl.dtypemismt = 資料類型不相符
|
||||
cachedrowsetimpl.datefail = 對欄 {1} 中的值 ( {0} ) 執行 getDate 失敗,未進行轉換
|
||||
cachedrowsetimpl.timefail = 對欄 {1} 中的值 ( {0} ) 執行 getTime 失敗,未進行轉換
|
||||
cachedrowsetimpl.posupdate = 不支援定位的更新
|
||||
cachedrowsetimpl.unableins = 無法建立: {0}
|
||||
cachedrowsetimpl.beforefirst = beforeFirst: 游標作業無效
|
||||
cachedrowsetimpl.first = First: 游標作業無效
|
||||
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
|
||||
cachedrowsetimpl.absolute = absolute: 游標位置無效
|
||||
cachedrowsetimpl.relative = relative: 游標位置無效
|
||||
cachedrowsetimpl.asciistream = 讀取 ascii 串流失敗
|
||||
cachedrowsetimpl.binstream = 讀取二進位串流失敗
|
||||
cachedrowsetimpl.failedins = 插入列失敗
|
||||
cachedrowsetimpl.updateins = 插入列時呼叫 updateRow
|
||||
cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
|
||||
cachedrowsetimpl.movetoins1 = moveToInsertRow: 沒有描述資料
|
||||
cachedrowsetimpl.movetoins2 = moveToInsertRow: 欄數無效
|
||||
cachedrowsetimpl.tablename = 表格名稱不能為空值
|
||||
cachedrowsetimpl.keycols = 關鍵欄無效
|
||||
cachedrowsetimpl.opnotsupp = 資料庫不支援作業
|
||||
cachedrowsetimpl.matchcols = 匹配欄和設定的欄不同
|
||||
cachedrowsetimpl.setmatchcols = 在取得匹配欄之前設定它們
|
||||
cachedrowsetimpl.matchcols1 = 匹配欄應大於 0
|
||||
cachedrowsetimpl.matchcols2 = 匹配欄應為空白字串或空值字串
|
||||
cachedrowsetimpl.unsetmatch = 取消設定的欄和設定的欄不同
|
||||
cachedrowsetimpl.unsetmatch1 = 使用欄名作為 unsetMatchColumn 的引數
|
||||
cachedrowsetimpl.unsetmatch2 = 使用欄 ID 作為 unsetMatchColumn 的引數
|
||||
cachedrowsetimpl.numrows = 列數小於零或小於擷取大小
|
||||
cachedrowsetimpl.startpos = 起始位置不能為負數
|
||||
cachedrowsetimpl.nextpage = 在呼叫之前植入資料
|
||||
cachedrowsetimpl.pagesize = 頁面大小不能小於零
|
||||
cachedrowsetimpl.pagesize1 = 頁面大小不能大於 maxRows
|
||||
cachedrowsetimpl.fwdonly = ResultSet 只能向前進行
|
||||
cachedrowsetimpl.type = 類型是: {0}
|
||||
cachedrowsetimpl.opnotysupp = 尚不支援該作業
|
||||
cachedrowsetimpl.featnotsupp = 不支援該功能
|
||||
|
||||
# WebRowSetImpl exceptions
|
||||
webrowsetimpl.nullhash = 無法建立 WebRowSetImpl 執行處理。為建構子提供的 Hashtable 為空值
|
||||
webrowsetimpl.invalidwr = 寫入器無效
|
||||
webrowsetimpl.invalidrd = 讀取器無效
|
||||
|
||||
#FilteredRowSetImpl exceptions
|
||||
filteredrowsetimpl.relative = relative: 游標作業無效
|
||||
filteredrowsetimpl.absolute = absolute: 游標作業無效
|
||||
filteredrowsetimpl.notallowed = 不允許此值通過篩選
|
||||
|
||||
#JoinRowSetImpl exceptions
|
||||
joinrowsetimpl.notinstance = 不是 rowset 的執行處理
|
||||
joinrowsetimpl.matchnotset = 未設定用於連結的匹配欄
|
||||
joinrowsetimpl.numnotequal = rowset 中的元素數不等於匹配欄
|
||||
joinrowsetimpl.notdefined = 這不是連結的已定義類型
|
||||
joinrowsetimpl.notsupported = 不支援此類連結
|
||||
joinrowsetimpl.initerror = JoinRowSet 初始化錯誤
|
||||
joinrowsetimpl.genericerr = 一般的 joinrowset 初始化錯誤
|
||||
joinrowsetimpl.emptyrowset = 無法將空 rowset 新增至此 JoinRowSet
|
||||
|
||||
#JdbcRowSetImpl exceptions
|
||||
jdbcrowsetimpl.invalstate = 狀態無效
|
||||
jdbcrowsetimpl.connect = JdbcRowSet (連線) JNDI 無法連線
|
||||
jdbcrowsetimpl.paramtype = 無法推斷參數類型
|
||||
jdbcrowsetimpl.matchcols = 匹配欄和設定的欄不同
|
||||
jdbcrowsetimpl.setmatchcols = 要先設定匹配欄,才能取得它們
|
||||
jdbcrowsetimpl.matchcols1 = 匹配欄應大於 0
|
||||
jdbcrowsetimpl.matchcols2 = 匹配欄不能為空白字串或空值字串
|
||||
jdbcrowsetimpl.unsetmatch = 取消設定的欄和設定的欄不同
|
||||
jdbcrowsetimpl.usecolname = 使用欄名作為 unsetMatchColumn 的引數
|
||||
jdbcrowsetimpl.usecolid = 使用欄 ID 作為 unsetMatchColumn 的引數
|
||||
jdbcrowsetimpl.resnotupd = ResultSet 不可更新
|
||||
jdbcrowsetimpl.opnotysupp = 尚不支援該作業
|
||||
jdbcrowsetimpl.featnotsupp = 不支援該功能
|
||||
|
||||
#CachedRowSetReader exceptions
|
||||
crsreader.connect = (JNDI) 無法連線
|
||||
crsreader.paramtype = 無法推斷參數類型
|
||||
crsreader.connecterr = RowSetReader 中出現內部錯誤: 無連線或命令
|
||||
crsreader.datedetected = 偵測到日期
|
||||
crsreader.caldetected = 偵測到行事曆
|
||||
|
||||
#CachedRowSetWriter exceptions
|
||||
crswriter.connect = 無法取得連線
|
||||
crswriter.tname = writeData 不能決定表格名稱
|
||||
crswriter.params1 = params1 的值: {0}
|
||||
crswriter.params2 = params2 的值: {0}
|
||||
crswriter.conflictsno = 同步化時發生衝突
|
||||
|
||||
#InsertRow exceptions
|
||||
insertrow.novalue = 尚未插入值
|
||||
|
||||
#SyncResolverImpl exceptions
|
||||
syncrsimpl.indexval = 索引值超出範圍
|
||||
syncrsimpl.noconflict = 此欄不衝突
|
||||
syncrsimpl.syncnotpos = 不可能同步化
|
||||
syncrsimpl.valtores = 要解析的值可位於資料庫或 cachedrowset 中
|
||||
|
||||
#WebRowSetXmlReader exception
|
||||
wrsxmlreader.invalidcp = 已到達 RowSet 結尾。游標位置無效
|
||||
wrsxmlreader.readxml = readXML: {0}
|
||||
wrsxmlreader.parseerr = ** 剖析錯誤: {0},行: {1},uri: {2}
|
||||
|
||||
#WebRowSetXmlWriter exceptions
|
||||
wrsxmlwriter.ioex = IOException : {0}
|
||||
wrsxmlwriter.sqlex = SQLException : {0}
|
||||
wrsxmlwriter.failedwrite = 寫入值失敗
|
||||
wsrxmlwriter.notproper = 不是正確類型
|
||||
|
||||
#XmlReaderContentHandler exceptions
|
||||
xmlrch.errmap = 設定對映時發生錯誤: {0}
|
||||
xmlrch.errmetadata = 設定描述資料時發生錯誤: {0}
|
||||
xmlrch.errinsertval = 插入值時發生錯誤: {0}
|
||||
xmlrch.errconstr = 建構列時發生錯誤: {0}
|
||||
xmlrch.errdel = 刪除列時發生錯誤: {0}
|
||||
xmlrch.errinsert = 建構插入列時發生錯誤 : {0}
|
||||
xmlrch.errinsdel = 建構 insdel 列時發生錯誤: {0}
|
||||
xmlrch.errupdate = 建構更新列時發生錯誤: {0}
|
||||
xmlrch.errupdrow = 更新列時發生錯誤: {0}
|
||||
xmlrch.chars = 字元:
|
||||
xmlrch.badvalue = 錯誤的值; 屬性不能為空值
|
||||
xmlrch.badvalue1 = 錯誤的值; 描述資料不能為空值
|
||||
xmlrch.warning = ** 警告: {0},行: {1},uri: {2}
|
||||
|
||||
#RIOptimisticProvider Exceptions
|
||||
riop.locking = 不支援鎖定分類
|
||||
|
||||
#RIXMLProvider exceptions
|
||||
rixml.unsupp = RIXMLProvider 不支援
|
||||
|
|
@ -0,0 +1,293 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset;
|
||||
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
import java.io.*;
|
||||
import java.math.*;
|
||||
import java.util.*;
|
||||
import java.text.*;
|
||||
|
||||
import org.xml.sax.*;
|
||||
|
||||
import javax.sql.rowset.*;
|
||||
import javax.sql.rowset.spi.*;
|
||||
|
||||
import com.sun.rowset.providers.*;
|
||||
import com.sun.rowset.internal.*;
|
||||
|
||||
/**
|
||||
* The standard implementation of the <code>WebRowSet</code> interface. See the interface
|
||||
* definition for full behavior and implementation requirements.
|
||||
*
|
||||
* @author Jonathan Bruce, Amit Handa
|
||||
*/
|
||||
public class WebRowSetImpl extends CachedRowSetImpl implements WebRowSet {
|
||||
|
||||
/**
|
||||
* The <code>WebRowSetXmlReader</code> object that this
|
||||
* <code>WebRowSet</code> object will call when the method
|
||||
* <code>WebRowSet.readXml</code> is invoked.
|
||||
*/
|
||||
private WebRowSetXmlReader xmlReader;
|
||||
|
||||
/**
|
||||
* The <code>WebRowSetXmlWriter</code> object that this
|
||||
* <code>WebRowSet</code> object will call when the method
|
||||
* <code>WebRowSet.writeXml</code> is invoked.
|
||||
*/
|
||||
private WebRowSetXmlWriter xmlWriter;
|
||||
|
||||
/* This stores the cursor position prior to calling the writeXML.
|
||||
* This variable is used after the write to restore the position
|
||||
* to the point where the writeXml was called.
|
||||
*/
|
||||
private int curPosBfrWrite;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
private SyncProvider provider;
|
||||
|
||||
/**
|
||||
* Constructs a new <code>WebRowSet</code> object initialized with the
|
||||
* default values for a <code>CachedRowSet</code> object instance. This
|
||||
* provides the <code>RIOptimistic</code> provider to deliver
|
||||
* synchronization capabilities to relational datastores and a default
|
||||
* <code>WebRowSetXmlReader</code> object and a default
|
||||
* <code>WebRowSetXmlWriter</code> object to enable XML output
|
||||
* capabilities.
|
||||
*
|
||||
* @throws SQLException if an error occurs in configuring the default
|
||||
* synchronization providers for relational and XML providers.
|
||||
*/
|
||||
public WebRowSetImpl() throws SQLException {
|
||||
super();
|
||||
|
||||
// %%%
|
||||
// Needs to use to SPI XmlReader,XmlWriters
|
||||
//
|
||||
xmlReader = new WebRowSetXmlReader();
|
||||
xmlWriter = new WebRowSetXmlWriter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new <code>WebRowSet</code> object initialized with the
|
||||
* synchronization SPI provider properties as specified in the <code>Hashtable</code>. If
|
||||
* this hashtable is empty or is <code>null</code> the default constructor is invoked.
|
||||
*
|
||||
* @throws SQLException if an error occurs in configuring the specified
|
||||
* synchronization providers for the relational and XML providers; or
|
||||
* if the Hashtanle is null
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public WebRowSetImpl(Hashtable env) throws SQLException {
|
||||
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
if ( env == null) {
|
||||
throw new SQLException(resBundle.handleGetObject("webrowsetimpl.nullhash").toString());
|
||||
}
|
||||
|
||||
String providerName =
|
||||
(String)env.get(javax.sql.rowset.spi.SyncFactory.ROWSET_SYNC_PROVIDER);
|
||||
|
||||
// set the Reader, this maybe overridden latter
|
||||
provider = SyncFactory.getInstance(providerName);
|
||||
|
||||
// xmlReader = provider.getRowSetReader();
|
||||
// xmlWriter = provider.getRowSetWriter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates this <code>WebRowSet</code> object with the
|
||||
* data in the given <code>ResultSet</code> object and writes itself
|
||||
* to the given <code>java.io.Writer</code> object in XML format.
|
||||
* This includes the rowset's data, properties, and metadata.
|
||||
*
|
||||
* @throws SQLException if an error occurs writing out the rowset
|
||||
* contents to XML
|
||||
*/
|
||||
public void writeXml(ResultSet rs, java.io.Writer writer)
|
||||
throws SQLException {
|
||||
// WebRowSetImpl wrs = new WebRowSetImpl();
|
||||
this.populate(rs);
|
||||
|
||||
// Store the cursor position before writing
|
||||
curPosBfrWrite = this.getRow();
|
||||
|
||||
this.writeXml(writer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes this <code>WebRowSet</code> object to the given
|
||||
* <code>java.io.Writer</code> object in XML format. This
|
||||
* includes the rowset's data, properties, and metadata.
|
||||
*
|
||||
* @throws SQLException if an error occurs writing out the rowset
|
||||
* contents to XML
|
||||
*/
|
||||
public void writeXml(java.io.Writer writer) throws SQLException {
|
||||
// %%%
|
||||
// This will change to a XmlReader, which over-rides the default
|
||||
// Xml that is used when a WRS is instantiated.
|
||||
// WebRowSetXmlWriter xmlWriter = getXmlWriter();
|
||||
if (xmlWriter != null) {
|
||||
|
||||
// Store the cursor position before writing
|
||||
curPosBfrWrite = this.getRow();
|
||||
|
||||
xmlWriter.writeXML(this, writer);
|
||||
} else {
|
||||
throw new SQLException(resBundle.handleGetObject("webrowsetimpl.invalidwr").toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads this <code>WebRowSet</code> object in its XML format.
|
||||
*
|
||||
* @throws SQLException if a database access error occurs
|
||||
*/
|
||||
public void readXml(java.io.Reader reader) throws SQLException {
|
||||
// %%%
|
||||
// This will change to a XmlReader, which over-rides the default
|
||||
// Xml that is used when a WRS is instantiated.
|
||||
//WebRowSetXmlReader xmlReader = getXmlReader();
|
||||
try {
|
||||
if (reader != null) {
|
||||
xmlReader.readXML(this, reader);
|
||||
|
||||
// Position is before the first row
|
||||
// The cursor position is to be stored while serializng
|
||||
// and deserializing the WebRowSet Object.
|
||||
if(curPosBfrWrite == 0) {
|
||||
this.beforeFirst();
|
||||
}
|
||||
|
||||
// Return the position back to place prior to callin writeXml
|
||||
else {
|
||||
this.absolute(curPosBfrWrite);
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new SQLException(resBundle.handleGetObject("webrowsetimpl.invalidrd").toString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new SQLException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Stream based methods
|
||||
/**
|
||||
* Reads a stream based XML input to populate this <code>WebRowSet</code>
|
||||
* object.
|
||||
*
|
||||
* @throws SQLException if a data source access error occurs
|
||||
* @throws IOException if a IO exception occurs
|
||||
*/
|
||||
public void readXml(java.io.InputStream iStream) throws SQLException, IOException {
|
||||
if (iStream != null) {
|
||||
xmlReader.readXML(this, iStream);
|
||||
|
||||
// Position is before the first row
|
||||
// The cursor position is to be stored while serializng
|
||||
// and deserializing the WebRowSet Object.
|
||||
if(curPosBfrWrite == 0) {
|
||||
this.beforeFirst();
|
||||
}
|
||||
|
||||
// Return the position back to place prior to callin writeXml
|
||||
else {
|
||||
this.absolute(curPosBfrWrite);
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new SQLException(resBundle.handleGetObject("webrowsetimpl.invalidrd").toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes this <code>WebRowSet</code> object to the given <code> OutputStream</code>
|
||||
* object in XML format.
|
||||
* Creates an output stream of the internal state and contents of a
|
||||
* <code>WebRowSet</code> for XML proceessing
|
||||
*
|
||||
* @throws SQLException if a datasource access error occurs
|
||||
* @throws IOException if an IO exception occurs
|
||||
*/
|
||||
public void writeXml(java.io.OutputStream oStream) throws SQLException, IOException {
|
||||
if (xmlWriter != null) {
|
||||
|
||||
// Store the cursor position before writing
|
||||
curPosBfrWrite = this.getRow();
|
||||
|
||||
xmlWriter.writeXML(this, oStream);
|
||||
} else {
|
||||
throw new SQLException(resBundle.handleGetObject("webrowsetimpl.invalidwr").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates this <code>WebRowSet</code> object with the
|
||||
* data in the given <code>ResultSet</code> object and writes itself
|
||||
* to the given <code>java.io.OutputStream</code> object in XML format.
|
||||
* This includes the rowset's data, properties, and metadata.
|
||||
*
|
||||
* @throws SQLException if a datasource access error occurs
|
||||
* @throws IOException if an IO exception occurs
|
||||
*/
|
||||
public void writeXml(ResultSet rs, java.io.OutputStream oStream) throws SQLException, IOException {
|
||||
this.populate(rs);
|
||||
|
||||
// Store the cursor position before writing
|
||||
curPosBfrWrite = this.getRow();
|
||||
|
||||
this.writeXml(oStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method re populates the resBundle
|
||||
* during the deserialization process
|
||||
*
|
||||
*/
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of transient Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final long serialVersionUID = -8771775154092422943L;
|
||||
}
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import java.sql.*;
|
||||
import java.io.*;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* The abstract base class from which the classes <code>Row</code>
|
||||
* The class <code>BaseRow</code> stores
|
||||
* a row's original values as an array of <code>Object</code>
|
||||
* values, which can be retrieved with the method <code>getOrigRow</code>.
|
||||
* This class also provides methods for getting and setting individual
|
||||
* values in the row.
|
||||
* <P>
|
||||
* A row's original values are the values it contained before it was last
|
||||
* modified. For example, when the <code>CachedRowSet</code>method
|
||||
* <code>acceptChanges</code> is called, it will reset a row's original
|
||||
* values to be the row's current values. Then, when the row is modified,
|
||||
* the values that were previously the current values will become the row's
|
||||
* original values (the values the row had immediately before it was modified).
|
||||
* If a row has not been modified, its original values are its initial values.
|
||||
* <P>
|
||||
* Subclasses of this class contain more specific details, such as
|
||||
* the conditions under which an exception is thrown or the bounds for
|
||||
* index parameters.
|
||||
*/
|
||||
public abstract class BaseRow implements Serializable, Cloneable {
|
||||
|
||||
/**
|
||||
* Specify the serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 4152013523511412238L;
|
||||
|
||||
/**
|
||||
* The array containing the original values for this <code>BaseRow</code>
|
||||
* object.
|
||||
* @serial
|
||||
*/
|
||||
@SuppressWarnings("serial") // Array component type is not Serializable
|
||||
protected Object[] origVals;
|
||||
|
||||
/**
|
||||
* Retrieves the values that this row contained immediately
|
||||
* prior to its last modification.
|
||||
*
|
||||
* @return an array of <code>Object</code> values containing this row's
|
||||
* original values
|
||||
*/
|
||||
public Object[] getOrigRow() {
|
||||
Object[] origRow = this.origVals;
|
||||
return (origRow == null) ? null: Arrays.copyOf(origRow, origRow.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the array element at the given index, which is
|
||||
* the original value of column number <i>idx</i> in this row.
|
||||
*
|
||||
* @param idx the index of the element to return
|
||||
* @return the <code>Object</code> value at the given index into this
|
||||
* row's array of original values
|
||||
* @throws SQLException if there is an error
|
||||
*/
|
||||
public abstract Object getColumnObject(int idx) throws SQLException;
|
||||
|
||||
/**
|
||||
* Sets the element at the given index into this row's array of
|
||||
* original values to the given value. Implementations of the classes
|
||||
* <code>Row</code> and determine what happens
|
||||
* when the cursor is on the insert row and when it is on any other row.
|
||||
*
|
||||
* @param idx the index of the element to be set
|
||||
* @param obj the <code>Object</code> to which the element at index
|
||||
* <code>idx</code> to be set
|
||||
* @throws SQLException if there is an error
|
||||
*/
|
||||
public abstract void setColumnObject(int idx, Object obj) throws SQLException;
|
||||
}
|
||||
|
|
@ -0,0 +1,510 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
import javax.naming.*;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
|
||||
import com.sun.rowset.*;
|
||||
import javax.sql.rowset.*;
|
||||
import javax.sql.rowset.spi.*;
|
||||
|
||||
/**
|
||||
* The facility called by the <code>RIOptimisticProvider</code> object
|
||||
* internally to read data into it. The calling <code>RowSet</code> object
|
||||
* must have implemented the <code>RowSetInternal</code> interface
|
||||
* and have the standard <code>CachedRowSetReader</code> object set as its
|
||||
* reader.
|
||||
* <P>
|
||||
* This implementation always reads all rows of the data source,
|
||||
* and it assumes that the <code>command</code> property for the caller
|
||||
* is set with a query that is appropriate for execution by a
|
||||
* <code>PreparedStatement</code> object.
|
||||
* <P>
|
||||
* Typically the <code>SyncFactory</code> manages the <code>RowSetReader</code> and
|
||||
* the <code>RowSetWriter</code> implementations using <code>SyncProvider</code> objects.
|
||||
* Standard JDBC RowSet implementations provide an object instance of this
|
||||
* reader by invoking the <code>SyncProvider.getRowSetReader()</code> method.
|
||||
*
|
||||
* @author Jonathan Bruce
|
||||
* @see javax.sql.rowset.spi.SyncProvider
|
||||
* @see javax.sql.rowset.spi.SyncFactory
|
||||
* @see javax.sql.rowset.spi.SyncFactoryException
|
||||
*/
|
||||
public class CachedRowSetReader implements RowSetReader, Serializable {
|
||||
|
||||
/**
|
||||
* The field that keeps track of whether the writer associated with
|
||||
* this <code>CachedRowSetReader</code> object's rowset has been called since
|
||||
* the rowset was populated.
|
||||
* <P>
|
||||
* When this <code>CachedRowSetReader</code> object reads data into
|
||||
* its rowset, it sets the field <code>writerCalls</code> to 0.
|
||||
* When the writer associated with the rowset is called to write
|
||||
* data back to the underlying data source, its <code>writeData</code>
|
||||
* method calls the method <code>CachedRowSetReader.reset</code>,
|
||||
* which increments <code>writerCalls</code> and returns <code>true</code>
|
||||
* if <code>writerCalls</code> is 1. Thus, <code>writerCalls</code> equals
|
||||
* 1 after the first call to <code>writeData</code> that occurs
|
||||
* after the rowset has had data read into it.
|
||||
*
|
||||
* @serial
|
||||
*/
|
||||
private int writerCalls = 0;
|
||||
|
||||
private boolean userCon = false;
|
||||
|
||||
private int startPosition;
|
||||
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
public CachedRowSetReader() {
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reads data from a data source and populates the given
|
||||
* <code>RowSet</code> object with that data.
|
||||
* This method is called by the rowset internally when
|
||||
* the application invokes the method <code>execute</code>
|
||||
* to read a new set of rows.
|
||||
* <P>
|
||||
* After clearing the rowset of its contents, if any, and setting
|
||||
* the number of writer calls to <code>0</code>, this reader calls
|
||||
* its <code>connect</code> method to make
|
||||
* a connection to the rowset's data source. Depending on which
|
||||
* of the rowset's properties have been set, the <code>connect</code>
|
||||
* method will use a <code>DataSource</code> object or the
|
||||
* <code>DriverManager</code> facility to make a connection to the
|
||||
* data source.
|
||||
* <P>
|
||||
* Once the connection to the data source is made, this reader
|
||||
* executes the query in the calling <code>CachedRowSet</code> object's
|
||||
* <code>command</code> property. Then it calls the rowset's
|
||||
* <code>populate</code> method, which reads data from the
|
||||
* <code>ResultSet</code> object produced by executing the rowset's
|
||||
* command. The rowset is then populated with this data.
|
||||
* <P>
|
||||
* This method's final act is to close the connection it made, thus
|
||||
* leaving the rowset disconnected from its data source.
|
||||
*
|
||||
* @param caller a <code>RowSet</code> object that has implemented
|
||||
* the <code>RowSetInternal</code> interface and had
|
||||
* this <code>CachedRowSetReader</code> object set as
|
||||
* its reader
|
||||
* @throws SQLException if there is a database access error, there is a
|
||||
* problem making the connection, or the command property has not
|
||||
* been set
|
||||
*/
|
||||
public void readData(RowSetInternal caller) throws SQLException
|
||||
{
|
||||
Connection con = null;
|
||||
try {
|
||||
CachedRowSet crs = (CachedRowSet)caller;
|
||||
|
||||
// Get rid of the current contents of the rowset.
|
||||
|
||||
/**
|
||||
* Checking added to verify whether page size has been set or not.
|
||||
* If set then do not close the object as certain parameters need
|
||||
* to be maintained.
|
||||
*/
|
||||
|
||||
if(crs.getPageSize() == 0 && crs.size() >0 ) {
|
||||
// When page size is not set,
|
||||
// crs.size() will show the total no of rows.
|
||||
crs.close();
|
||||
}
|
||||
|
||||
writerCalls = 0;
|
||||
|
||||
// Get a connection. This reader assumes that the necessary
|
||||
// properties have been set on the caller to let it supply a
|
||||
// connection.
|
||||
userCon = false;
|
||||
|
||||
con = this.connect(caller);
|
||||
|
||||
// Check our assumptions.
|
||||
if (con == null || crs.getCommand() == null)
|
||||
throw new SQLException(resBundle.handleGetObject("crsreader.connecterr").toString());
|
||||
|
||||
try {
|
||||
con.setTransactionIsolation(crs.getTransactionIsolation());
|
||||
} catch (Exception ex) {
|
||||
;
|
||||
}
|
||||
// Use JDBC to read the data.
|
||||
PreparedStatement pstmt = con.prepareStatement(crs.getCommand());
|
||||
// Pass any input parameters to JDBC.
|
||||
|
||||
decodeParams(caller.getParams(), pstmt);
|
||||
try {
|
||||
pstmt.setMaxRows(crs.getMaxRows());
|
||||
pstmt.setMaxFieldSize(crs.getMaxFieldSize());
|
||||
pstmt.setEscapeProcessing(crs.getEscapeProcessing());
|
||||
pstmt.setQueryTimeout(crs.getQueryTimeout());
|
||||
} catch (Exception ex) {
|
||||
/*
|
||||
* drivers may not support the above - esp. older
|
||||
* drivers being used by the bridge..
|
||||
*/
|
||||
throw new SQLException(ex.getMessage());
|
||||
}
|
||||
|
||||
if(crs.getCommand().toLowerCase().indexOf("select") != -1) {
|
||||
// can be (crs.getCommand()).indexOf("select")) == 0
|
||||
// because we will be getting resultset when
|
||||
// it may be the case that some false select query with
|
||||
// select coming in between instead of first.
|
||||
|
||||
// if ((crs.getCommand()).indexOf("?")) does not return -1
|
||||
// implies a Prepared Statement like query exists.
|
||||
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
if(crs.getPageSize() == 0){
|
||||
crs.populate(rs);
|
||||
}
|
||||
else {
|
||||
/**
|
||||
* If page size has been set then create a ResultSet object that is scrollable using a
|
||||
* PreparedStatement handle.Also call the populate(ResultSet,int) function to populate
|
||||
* a page of data as specified by the page size.
|
||||
*/
|
||||
pstmt = con.prepareStatement(crs.getCommand(),ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
|
||||
decodeParams(caller.getParams(), pstmt);
|
||||
try {
|
||||
pstmt.setMaxRows(crs.getMaxRows());
|
||||
pstmt.setMaxFieldSize(crs.getMaxFieldSize());
|
||||
pstmt.setEscapeProcessing(crs.getEscapeProcessing());
|
||||
pstmt.setQueryTimeout(crs.getQueryTimeout());
|
||||
} catch (Exception ex) {
|
||||
/*
|
||||
* drivers may not support the above - esp. older
|
||||
* drivers being used by the bridge..
|
||||
*/
|
||||
throw new SQLException(ex.getMessage());
|
||||
}
|
||||
rs = pstmt.executeQuery();
|
||||
crs.populate(rs,startPosition);
|
||||
}
|
||||
rs.close();
|
||||
} else {
|
||||
pstmt.executeUpdate();
|
||||
}
|
||||
|
||||
// Get the data.
|
||||
pstmt.close();
|
||||
try {
|
||||
con.commit();
|
||||
} catch (SQLException ex) {
|
||||
;
|
||||
}
|
||||
// only close connections we created...
|
||||
if (getCloseConnection() == true)
|
||||
con.close();
|
||||
}
|
||||
catch (SQLException ex) {
|
||||
// Throw an exception if reading fails for any reason.
|
||||
throw ex;
|
||||
} finally {
|
||||
try {
|
||||
// only close connections we created...
|
||||
if (con != null && getCloseConnection() == true) {
|
||||
try {
|
||||
if (!con.getAutoCommit()) {
|
||||
con.rollback();
|
||||
}
|
||||
} catch (Exception dummy) {
|
||||
/*
|
||||
* not an error condition, we're closing anyway, but
|
||||
* we'd like to clean up any locks if we can since
|
||||
* it is not clear the connection pool will clean
|
||||
* these connections in a timely manner
|
||||
*/
|
||||
}
|
||||
con.close();
|
||||
con = null;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
// will get exception if something already went wrong, but don't
|
||||
// override that exception with this one
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the writer associated with this reader needs
|
||||
* to reset its state. The writer will need to initialize its state
|
||||
* if new contents have been read since the writer was last called.
|
||||
* This method is called by the writer that was registered with
|
||||
* this reader when components were being wired together.
|
||||
*
|
||||
* @return <code>true</code> if writer associated with this reader needs
|
||||
* to reset the values of its fields; <code>false</code> otherwise
|
||||
* @throws SQLException if an access error occurs
|
||||
*/
|
||||
public boolean reset() throws SQLException {
|
||||
writerCalls++;
|
||||
return writerCalls == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Establishes a connection with the data source for the given
|
||||
* <code>RowSet</code> object. If the rowset's <code>dataSourceName</code>
|
||||
* property has been set, this method uses the JNDI API to retrieve the
|
||||
* <code>DataSource</code> object that it can use to make the connection.
|
||||
* If the url, username, and password properties have been set, this
|
||||
* method uses the <code>DriverManager.getConnection</code> method to
|
||||
* make the connection.
|
||||
* <P>
|
||||
* This method is used internally by the reader and writer associated with
|
||||
* the calling <code>RowSet</code> object; an application never calls it
|
||||
* directly.
|
||||
*
|
||||
* @param caller a <code>RowSet</code> object that has implemented
|
||||
* the <code>RowSetInternal</code> interface and had
|
||||
* this <code>CachedRowSetReader</code> object set as
|
||||
* its reader
|
||||
* @return a <code>Connection</code> object that represents a connection
|
||||
* to the caller's data source
|
||||
* @throws SQLException if an access error occurs
|
||||
*/
|
||||
public Connection connect(RowSetInternal caller) throws SQLException {
|
||||
|
||||
// Get a JDBC connection.
|
||||
if (caller.getConnection() != null) {
|
||||
// A connection was passed to execute(), so use it.
|
||||
// As we are using a connection the user gave us we
|
||||
// won't close it.
|
||||
userCon = true;
|
||||
return caller.getConnection();
|
||||
}
|
||||
else if (((RowSet)caller).getDataSourceName() != null) {
|
||||
// Connect using JNDI.
|
||||
try {
|
||||
Context ctx = new InitialContext();
|
||||
DataSource ds = (DataSource)ctx.lookup
|
||||
(((RowSet)caller).getDataSourceName());
|
||||
|
||||
// Check for username, password,
|
||||
// if it exists try getting a Connection handle through them
|
||||
// else try without these
|
||||
// else throw SQLException
|
||||
|
||||
if(((RowSet)caller).getUsername() != null) {
|
||||
return ds.getConnection(((RowSet)caller).getUsername(),
|
||||
((RowSet)caller).getPassword());
|
||||
} else {
|
||||
return ds.getConnection();
|
||||
}
|
||||
}
|
||||
catch (javax.naming.NamingException ex) {
|
||||
SQLException sqlEx = new SQLException(resBundle.handleGetObject("crsreader.connect").toString());
|
||||
sqlEx.initCause(ex);
|
||||
throw sqlEx;
|
||||
}
|
||||
} else if (((RowSet)caller).getUrl() != null) {
|
||||
// Connect using the driver manager.
|
||||
return DriverManager.getConnection(((RowSet)caller).getUrl(),
|
||||
((RowSet)caller).getUsername(),
|
||||
((RowSet)caller).getPassword());
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the parameter placeholders
|
||||
* in the rowset's command (the given <code>PreparedStatement</code>
|
||||
* object) with the parameters in the given array.
|
||||
* This method, called internally by the method
|
||||
* <code>CachedRowSetReader.readData</code>, reads each parameter, and
|
||||
* based on its type, determines the correct
|
||||
* <code>PreparedStatement.setXXX</code> method to use for setting
|
||||
* that parameter.
|
||||
*
|
||||
* @param params an array of parameters to be used with the given
|
||||
* <code>PreparedStatement</code> object
|
||||
* @param pstmt the <code>PreparedStatement</code> object that is the
|
||||
* command for the calling rowset and into which
|
||||
* the given parameters are to be set
|
||||
* @throws SQLException if an access error occurs
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void decodeParams(Object[] params,
|
||||
PreparedStatement pstmt) throws SQLException {
|
||||
// There is a corresponding decodeParams in JdbcRowSetImpl
|
||||
// which does the same as this method. This is a design flaw.
|
||||
// Update the JdbcRowSetImpl.decodeParams when you update
|
||||
// this method.
|
||||
|
||||
// Adding the same comments to JdbcRowSetImpl.decodeParams.
|
||||
|
||||
int arraySize;
|
||||
Object[] param = null;
|
||||
|
||||
for (int i=0; i < params.length; i++) {
|
||||
if (params[i] instanceof Object[]) {
|
||||
param = (Object[])params[i];
|
||||
|
||||
if (param.length == 2) {
|
||||
if (param[0] == null) {
|
||||
pstmt.setNull(i + 1, ((Integer)param[1]).intValue());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (param[0] instanceof java.sql.Date ||
|
||||
param[0] instanceof java.sql.Time ||
|
||||
param[0] instanceof java.sql.Timestamp) {
|
||||
System.err.println(resBundle.handleGetObject("crsreader.datedetected").toString());
|
||||
if (param[1] instanceof java.util.Calendar) {
|
||||
System.err.println(resBundle.handleGetObject("crsreader.caldetected").toString());
|
||||
pstmt.setDate(i + 1, (java.sql.Date)param[0],
|
||||
(java.util.Calendar)param[1]);
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
throw new SQLException(resBundle.handleGetObject("crsreader.paramtype").toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (param[0] instanceof Reader) {
|
||||
pstmt.setCharacterStream(i + 1, (Reader)param[0],
|
||||
((Integer)param[1]).intValue());
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* What's left should be setObject(int, Object, scale)
|
||||
*/
|
||||
if (param[1] instanceof Integer) {
|
||||
pstmt.setObject(i + 1, param[0], ((Integer)param[1]).intValue());
|
||||
continue;
|
||||
}
|
||||
|
||||
} else if (param.length == 3) {
|
||||
|
||||
if (param[0] == null) {
|
||||
pstmt.setNull(i + 1, ((Integer)param[1]).intValue(),
|
||||
(String)param[2]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (param[0] instanceof java.io.InputStream) {
|
||||
switch (((Integer)param[2]).intValue()) {
|
||||
case CachedRowSetImpl.UNICODE_STREAM_PARAM:
|
||||
pstmt.setUnicodeStream(i + 1,
|
||||
(java.io.InputStream)param[0],
|
||||
((Integer)param[1]).intValue());
|
||||
break;
|
||||
case CachedRowSetImpl.BINARY_STREAM_PARAM:
|
||||
pstmt.setBinaryStream(i + 1,
|
||||
(java.io.InputStream)param[0],
|
||||
((Integer)param[1]).intValue());
|
||||
break;
|
||||
case CachedRowSetImpl.ASCII_STREAM_PARAM:
|
||||
pstmt.setAsciiStream(i + 1,
|
||||
(java.io.InputStream)param[0],
|
||||
((Integer)param[1]).intValue());
|
||||
break;
|
||||
default:
|
||||
throw new SQLException(resBundle.handleGetObject("crsreader.paramtype").toString());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* no point at looking at the first element now;
|
||||
* what's left must be the setObject() cases.
|
||||
*/
|
||||
if (param[1] instanceof Integer && param[2] instanceof Integer) {
|
||||
pstmt.setObject(i + 1, param[0], ((Integer)param[1]).intValue(),
|
||||
((Integer)param[2]).intValue());
|
||||
continue;
|
||||
}
|
||||
|
||||
throw new SQLException(resBundle.handleGetObject("crsreader.paramtype").toString());
|
||||
|
||||
} else {
|
||||
// common case - this catches all SQL92 types
|
||||
pstmt.setObject(i + 1, params[i]);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
// Try to get all the params to be set here
|
||||
pstmt.setObject(i + 1, params[i]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assists in determining whether the current connection was created by this
|
||||
* CachedRowSet to ensure incorrect connections are not prematurely terminated.
|
||||
*
|
||||
* @return a boolean giving the status of whether the connection has been closed.
|
||||
*/
|
||||
protected boolean getCloseConnection() {
|
||||
if (userCon == true)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* This sets the start position in the ResultSet from where to begin. This is
|
||||
* called by the Reader in the CachedRowSetImpl to set the position on the page
|
||||
* to begin populating from.
|
||||
* @param pos integer indicating the position in the <code>ResultSet</code> to begin
|
||||
* populating from.
|
||||
*/
|
||||
public void setStartPosition(int pos){
|
||||
startPosition = pos;
|
||||
}
|
||||
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final long serialVersionUID =5049738185801363801L;
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,179 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import com.sun.rowset.JdbcRowSetResourceBundle;
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* A class used internally to manage a <code>CachedRowSet</code> object's
|
||||
* insert row. This class keeps track of the number of columns in the
|
||||
* insert row and which columns have had a value inserted. It provides
|
||||
* methods for retrieving a column value, setting a column value, and finding
|
||||
* out whether the insert row is complete.
|
||||
*/
|
||||
public class InsertRow extends BaseRow implements Serializable, Cloneable {
|
||||
|
||||
/**
|
||||
* An internal <code>BitSet</code> object used to keep track of the
|
||||
* columns in this <code>InsertRow</code> object that have had a value
|
||||
* inserted.
|
||||
*/
|
||||
private BitSet colsInserted;
|
||||
|
||||
/**
|
||||
* The number of columns in this <code>InsertRow</code> object.
|
||||
*/
|
||||
private int cols;
|
||||
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
/**
|
||||
* Creates an <code>InsertRow</code> object initialized with the
|
||||
* given number of columns, an array for keeping track of the
|
||||
* original values in this insert row, and a
|
||||
* <code>BitSet</code> object with the same number of bits as
|
||||
* there are columns.
|
||||
*
|
||||
* @param numCols an <code>int</code> indicating the number of columns
|
||||
* in this <code>InsertRow</code> object
|
||||
*/
|
||||
public InsertRow(int numCols) {
|
||||
origVals = new Object[numCols];
|
||||
colsInserted = new BitSet(numCols);
|
||||
cols = numCols;
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bit in this <code>InsertRow</code> object's internal
|
||||
* <code>BitSet</code> object that corresponds to the specified column
|
||||
* in this <code>InsertRow</code> object. Setting a bit indicates
|
||||
* that a value has been set.
|
||||
*
|
||||
* @param col the number of the column to be marked as inserted;
|
||||
* the first column is <code>1</code>
|
||||
*/
|
||||
protected void markColInserted(int col) {
|
||||
colsInserted.set(col);
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether this <code>InsertRow</code> object has a value
|
||||
* for every column that cannot be null.
|
||||
* @param RowSetMD the <code>RowSetMetaData</code> object for the
|
||||
* <code>CachedRowSet</code> object that maintains this
|
||||
* <code>InsertRow</code> object
|
||||
* @return <code>true</code> if this <code>InsertRow</code> object is
|
||||
* complete; <code>false</code> otherwise
|
||||
* @throws SQLException if there is an error accessing data
|
||||
*/
|
||||
public boolean isCompleteRow(RowSetMetaData RowSetMD) throws SQLException {
|
||||
for (int i = 0; i < cols; i++) {
|
||||
if (colsInserted.get(i) == false &&
|
||||
RowSetMD.isNullable(i + 1) ==
|
||||
ResultSetMetaData.columnNoNulls) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all the bits in the internal <code>BitSet</code> object
|
||||
* maintained by this <code>InsertRow</code> object. Clearing all the bits
|
||||
* indicates that none of the columns have had a value inserted.
|
||||
*/
|
||||
public void initInsertRow() {
|
||||
for (int i = 0; i < cols; i++) {
|
||||
colsInserted.clear(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the value of the designated column in this
|
||||
* <code>InsertRow</code> object. If no value has been inserted
|
||||
* into the designated column, this method throws an
|
||||
* <code>SQLException</code>.
|
||||
*
|
||||
* @param idx the column number of the value to be retrieved;
|
||||
* the first column is <code>1</code>
|
||||
* @throws SQLException if no value has been inserted into
|
||||
* the designated column
|
||||
*/
|
||||
public Object getColumnObject(int idx) throws SQLException {
|
||||
if (colsInserted.get(idx - 1) == false) {
|
||||
throw new SQLException(resBundle.handleGetObject("insertrow.novalue").toString());
|
||||
}
|
||||
return (origVals[idx - 1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the element in this <code>InsertRow</code> object's
|
||||
* internal array of original values that corresponds to the
|
||||
* designated column with the given value. If the third
|
||||
* argument is <code>true</code>,
|
||||
* which means that the cursor is on the insert row, this
|
||||
* <code>InsertRow</code> object's internal <code>BitSet</code> object
|
||||
* is set so that the bit corresponding to the column being set is
|
||||
* turned on.
|
||||
*
|
||||
* @param idx the number of the column in the insert row to be set;
|
||||
* the first column is <code>1</code>
|
||||
* @param val the value to be set
|
||||
*/
|
||||
public void setColumnObject(int idx, Object val) {
|
||||
origVals[idx - 1] = val;
|
||||
markColInserted(idx - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method re populates the resBundle
|
||||
* during the deserialization process
|
||||
*
|
||||
*/
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of transient Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final long serialVersionUID = 1066099658102869344L;
|
||||
}
|
||||
|
|
@ -0,0 +1,342 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import java.sql.*;
|
||||
import java.io.*;
|
||||
import java.lang.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* A class that keeps track of a row's values. A <code>Row</code> object
|
||||
* maintains an array of current column values and an array of original
|
||||
* column values, and it provides methods for getting and setting the
|
||||
* value of a column. It also keeps track of which columns have
|
||||
* changed and whether the change was a delete, insert, or update.
|
||||
* <P>
|
||||
* Note that column numbers for rowsets start at <code>1</code>,
|
||||
* whereas the first element of an array or bitset is <code>0</code>.
|
||||
* The argument for the method <code>getColumnUpdated</code> refers to
|
||||
* the column number in the rowset (the first column is <code>1</code>);
|
||||
* the argument for <code>setColumnUpdated</code> refers to the index
|
||||
* into the rowset's internal bitset (the first bit is <code>0</code>).
|
||||
*/
|
||||
public class Row extends BaseRow implements Serializable, Cloneable {
|
||||
|
||||
static final long serialVersionUID = 5047859032611314762L;
|
||||
|
||||
/**
|
||||
* An array containing the current column values for this <code>Row</code>
|
||||
* object.
|
||||
* @serial
|
||||
*/
|
||||
@SuppressWarnings("serial") // Array component type is not Serializable
|
||||
private Object[] currentVals;
|
||||
|
||||
/**
|
||||
* A <code>BitSet</code> object containing a flag for each column in
|
||||
* this <code>Row</code> object, with each flag indicating whether or
|
||||
* not the value in the column has been changed.
|
||||
* @serial
|
||||
*/
|
||||
private BitSet colsChanged;
|
||||
|
||||
/**
|
||||
* A <code>boolean</code> indicating whether or not this <code>Row</code>
|
||||
* object has been deleted. <code>true</code> indicates that it has
|
||||
* been deleted; <code>false</code> indicates that it has not.
|
||||
* @serial
|
||||
*/
|
||||
private boolean deleted;
|
||||
|
||||
/**
|
||||
* A <code>boolean</code> indicating whether or not this <code>Row</code>
|
||||
* object has been updated. <code>true</code> indicates that it has
|
||||
* been updated; <code>false</code> indicates that it has not.
|
||||
* @serial
|
||||
*/
|
||||
private boolean updated;
|
||||
|
||||
/**
|
||||
* A <code>boolean</code> indicating whether or not this <code>Row</code>
|
||||
* object has been inserted. <code>true</code> indicates that it has
|
||||
* been inserted; <code>false</code> indicates that it has not.
|
||||
* @serial
|
||||
*/
|
||||
private boolean inserted;
|
||||
|
||||
/**
|
||||
* The number of columns in this <code>Row</code> object.
|
||||
* @serial
|
||||
*/
|
||||
private int numCols;
|
||||
|
||||
/**
|
||||
* Creates a new <code>Row</code> object with the given number of columns.
|
||||
* The newly-created row includes an array of original values,
|
||||
* an array for storing its current values, and a <code>BitSet</code>
|
||||
* object for keeping track of which column values have been changed.
|
||||
*/
|
||||
public Row(int numCols) {
|
||||
origVals = new Object[numCols];
|
||||
currentVals = new Object[numCols];
|
||||
colsChanged = new BitSet(numCols);
|
||||
this.numCols = numCols;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new <code>Row</code> object with the given number of columns
|
||||
* and with its array of original values initialized to the given array.
|
||||
* The new <code>Row</code> object also has an array for storing its
|
||||
* current values and a <code>BitSet</code> object for keeping track
|
||||
* of which column values have been changed.
|
||||
*/
|
||||
public Row(int numCols, Object[] vals) {
|
||||
origVals = new Object[numCols];
|
||||
System.arraycopy(vals, 0, origVals, 0, numCols);
|
||||
currentVals = new Object[numCols];
|
||||
colsChanged = new BitSet(numCols);
|
||||
this.numCols = numCols;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This method is called internally by the <code>CachedRowSet.populate</code>
|
||||
* methods.
|
||||
*
|
||||
* @param idx the number of the column in this <code>Row</code> object
|
||||
* that is to be set; the index of the first column is
|
||||
* <code>1</code>
|
||||
* @param val the new value to be set
|
||||
*/
|
||||
public void initColumnObject(int idx, Object val) {
|
||||
origVals[idx - 1] = val;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* This method is called internally by the <code>CachedRowSet.updateXXX</code>
|
||||
* methods.
|
||||
*
|
||||
* @param idx the number of the column in this <code>Row</code> object
|
||||
* that is to be set; the index of the first column is
|
||||
* <code>1</code>
|
||||
* @param val the new value to be set
|
||||
*/
|
||||
public void setColumnObject(int idx, Object val) {
|
||||
currentVals[idx - 1] = val;
|
||||
setColUpdated(idx - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the column value stored in the designated column of this
|
||||
* <code>Row</code> object.
|
||||
*
|
||||
* @param columnIndex the index of the column value to be retrieved;
|
||||
* the index of the first column is <code>1</code>
|
||||
* @return an <code>Object</code> in the Java programming language that
|
||||
* represents the value stored in the designated column
|
||||
* @throws SQLException if there is a database access error
|
||||
*/
|
||||
public Object getColumnObject(int columnIndex) throws SQLException {
|
||||
if (getColUpdated(columnIndex - 1)) {
|
||||
return(currentVals[columnIndex - 1]); // maps to array!!
|
||||
} else {
|
||||
return(origVals[columnIndex - 1]); // maps to array!!
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the designated column of this <code>Row</code> object
|
||||
* has been changed.
|
||||
* @param idx the index into the <code>BitSet</code> object maintained by
|
||||
* this <code>Row</code> object to keep track of which column
|
||||
* values have been modified; the index of the first bit is
|
||||
* <code>0</code>
|
||||
* @return <code>true</code> if the designated column value has been changed;
|
||||
* <code>false</code> otherwise
|
||||
*
|
||||
*/
|
||||
public boolean getColUpdated(int idx) {
|
||||
return colsChanged.get(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this <code>Row</code> object's <code>deleted</code> field
|
||||
* to <code>true</code>.
|
||||
*
|
||||
* @see #getDeleted
|
||||
*/
|
||||
public void setDeleted() { // %%% was public
|
||||
deleted = true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves the value of this <code>Row</code> object's <code>deleted</code> field,
|
||||
* which will be <code>true</code> if one or more of its columns has been
|
||||
* deleted.
|
||||
* @return <code>true</code> if a column value has been deleted; <code>false</code>
|
||||
* otherwise
|
||||
*
|
||||
* @see #setDeleted
|
||||
*/
|
||||
public boolean getDeleted() {
|
||||
return(deleted);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the <code>deleted</code> field for this <code>Row</code> object to
|
||||
* <code>false</code>.
|
||||
*/
|
||||
public void clearDeleted() {
|
||||
deleted = false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the value of this <code>Row</code> object's <code>inserted</code> field
|
||||
* to <code>true</code>.
|
||||
*
|
||||
* @see #getInserted
|
||||
*/
|
||||
public void setInserted() {
|
||||
inserted = true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves the value of this <code>Row</code> object's <code>inserted</code> field,
|
||||
* which will be <code>true</code> if this row has been inserted.
|
||||
* @return <code>true</code> if this row has been inserted; <code>false</code>
|
||||
* otherwise
|
||||
*
|
||||
* @see #setInserted
|
||||
*/
|
||||
public boolean getInserted() {
|
||||
return(inserted);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the <code>inserted</code> field for this <code>Row</code> object to
|
||||
* <code>false</code>.
|
||||
*/
|
||||
public void clearInserted() { // %%% was public
|
||||
inserted = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the value of this <code>Row</code> object's
|
||||
* <code>updated</code> field.
|
||||
* @return <code>true</code> if this <code>Row</code> object has been
|
||||
* updated; <code>false</code> if it has not
|
||||
*
|
||||
* @see #setUpdated
|
||||
*/
|
||||
public boolean getUpdated() {
|
||||
return(updated);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the <code>updated</code> field for this <code>Row</code> object to
|
||||
* <code>true</code> if one or more of its column values has been changed.
|
||||
*
|
||||
* @see #getUpdated
|
||||
*/
|
||||
public void setUpdated() {
|
||||
// only mark something as updated if one or
|
||||
// more of the columns has been changed.
|
||||
for (int i = 0; i < numCols; i++) {
|
||||
if (getColUpdated(i) == true) {
|
||||
updated = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bit at the given index into this <code>Row</code> object's internal
|
||||
* <code>BitSet</code> object, indicating that the corresponding column value
|
||||
* (column <code>idx</code> + 1) has been changed.
|
||||
*
|
||||
* @param idx the index into the <code>BitSet</code> object maintained by
|
||||
* this <code>Row</code> object; the first bit is at index
|
||||
* <code>0</code>
|
||||
*
|
||||
*/
|
||||
private void setColUpdated(int idx) {
|
||||
colsChanged.set(idx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the <code>updated</code> field for this <code>Row</code> object to
|
||||
* <code>false</code>, sets all the column values in this <code>Row</code>
|
||||
* object's internal array of current values to <code>null</code>, and clears
|
||||
* all of the bits in the <code>BitSet</code> object maintained by this
|
||||
* <code>Row</code> object.
|
||||
*/
|
||||
public void clearUpdated() {
|
||||
updated = false;
|
||||
for (int i = 0; i < numCols; i++) {
|
||||
currentVals[i] = null;
|
||||
colsChanged.clear(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the column values in this <code>Row</code> object's internal
|
||||
* array of original values with the values in its internal array of
|
||||
* current values, sets all the values in this <code>Row</code>
|
||||
* object's internal array of current values to <code>null</code>,
|
||||
* clears all the bits in this <code>Row</code> object's internal bitset,
|
||||
* and sets its <code>updated</code> field to <code>false</code>.
|
||||
* <P>
|
||||
* This method is called internally by the <code>CachedRowSet</code>
|
||||
* method <code>makeRowOriginal</code>.
|
||||
*/
|
||||
public void moveCurrentToOrig() {
|
||||
for (int i = 0; i < numCols; i++) {
|
||||
if (getColUpdated(i) == true) {
|
||||
origVals[i] = currentVals[i];
|
||||
currentVals[i] = null;
|
||||
colsChanged.clear(i);
|
||||
}
|
||||
}
|
||||
updated = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the row on which the cursor is positioned.
|
||||
*
|
||||
* @return the <code>Row</code> object on which the <code>CachedRowSet</code>
|
||||
* implementation objects's cursor is positioned
|
||||
*/
|
||||
public BaseRow getCurrentRow() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,237 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
import java.io.*;
|
||||
|
||||
import org.xml.sax.*;
|
||||
import org.xml.sax.helpers.*;
|
||||
import javax.xml.parsers.*;
|
||||
|
||||
import com.sun.rowset.*;
|
||||
import java.text.MessageFormat;
|
||||
import javax.sql.rowset.*;
|
||||
import javax.sql.rowset.spi.*;
|
||||
|
||||
/**
|
||||
* An implementation of the <code>XmlReader</code> interface, which
|
||||
* reads and parses an XML formatted <code>WebRowSet</code> object.
|
||||
* This implementation uses an <code>org.xml.sax.Parser</code> object
|
||||
* as its parser.
|
||||
*/
|
||||
public class WebRowSetXmlReader implements XmlReader, Serializable {
|
||||
|
||||
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
public WebRowSetXmlReader(){
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the given <code>WebRowSet</code> object, getting its input from
|
||||
* the given <code>java.io.Reader</code> object. The parser will send
|
||||
* notifications of parse events to the rowset's
|
||||
* <code>XmlReaderDocHandler</code>, which will build the rowset as
|
||||
* an XML document.
|
||||
* <P>
|
||||
* This method is called internally by the method
|
||||
* <code>WebRowSet.readXml</code>.
|
||||
* <P>
|
||||
* If a parsing error occurs, the exception thrown will include
|
||||
* information for locating the error in the original XML document.
|
||||
*
|
||||
* @param caller the <code>WebRowSet</code> object to be parsed, whose
|
||||
* <code>xmlReader</code> field must contain a reference to
|
||||
* this <code>XmlReader</code> object
|
||||
* @param reader the <code>java.io.Reader</code> object from which
|
||||
* the parser will get its input
|
||||
* @exception SQLException if a database access error occurs or
|
||||
* this <code>WebRowSetXmlReader</code> object is not the
|
||||
* reader for the given rowset
|
||||
* @see XmlReaderContentHandler
|
||||
*/
|
||||
public void readXML(WebRowSet caller, java.io.Reader reader) throws SQLException {
|
||||
try {
|
||||
// Crimson Parser(as in J2SE 1.4.1 is NOT able to handle
|
||||
// Reader(s)(FileReader).
|
||||
//
|
||||
// But getting the file as a Stream works fine. So we are going to take
|
||||
// the reader but send it as a InputStream to the parser. Note that this
|
||||
// functionality needs to work against any parser
|
||||
// Crimson(J2SE 1.4.x) / Xerces(J2SE 1.5.x).
|
||||
InputSource is = new InputSource(reader);
|
||||
DefaultHandler dh = new XmlErrorHandler();
|
||||
XmlReaderContentHandler hndr = new XmlReaderContentHandler((RowSet)caller);
|
||||
SAXParserFactory factory = SAXParserFactory.newInstance();
|
||||
factory.setNamespaceAware(true);
|
||||
factory.setValidating(true);
|
||||
SAXParser parser = factory.newSAXParser() ;
|
||||
|
||||
parser.setProperty(
|
||||
"http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
|
||||
|
||||
XMLReader reader1 = parser.getXMLReader() ;
|
||||
reader1.setEntityResolver(new XmlResolver());
|
||||
reader1.setContentHandler(hndr);
|
||||
|
||||
reader1.setErrorHandler(dh);
|
||||
|
||||
reader1.parse(is);
|
||||
|
||||
} catch (SAXParseException err) {
|
||||
System.out.println (MessageFormat.format(resBundle.handleGetObject("wrsxmlreader.parseerr").toString(), new Object[]{ err.getMessage (), err.getLineNumber(), err.getSystemId()}));
|
||||
err.printStackTrace();
|
||||
throw new SQLException(err.getMessage());
|
||||
|
||||
} catch (SAXException e) {
|
||||
Exception x = e;
|
||||
if (e.getException () != null)
|
||||
x = e.getException();
|
||||
x.printStackTrace ();
|
||||
throw new SQLException(x.getMessage());
|
||||
|
||||
}
|
||||
|
||||
// Will be here if trying to write beyond the RowSet limits
|
||||
|
||||
catch (ArrayIndexOutOfBoundsException aie) {
|
||||
throw new SQLException(resBundle.handleGetObject("wrsxmlreader.invalidcp").toString());
|
||||
}
|
||||
catch (Throwable e) {
|
||||
throw new SQLException(MessageFormat.format(resBundle.handleGetObject("wrsxmlreader.readxml").toString() , e.getMessage()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parses the given <code>WebRowSet</code> object, getting its input from
|
||||
* the given <code>java.io.InputStream</code> object. The parser will send
|
||||
* notifications of parse events to the rowset's
|
||||
* <code>XmlReaderDocHandler</code>, which will build the rowset as
|
||||
* an XML document.
|
||||
* <P>
|
||||
* Using streams is a much faster way than using <code>java.io.Reader</code>
|
||||
* <P>
|
||||
* This method is called internally by the method
|
||||
* <code>WebRowSet.readXml</code>.
|
||||
* <P>
|
||||
* If a parsing error occurs, the exception thrown will include
|
||||
* information for locating the error in the original XML document.
|
||||
*
|
||||
* @param caller the <code>WebRowSet</code> object to be parsed, whose
|
||||
* <code>xmlReader</code> field must contain a reference to
|
||||
* this <code>XmlReader</code> object
|
||||
* @param iStream the <code>java.io.InputStream</code> object from which
|
||||
* the parser will get its input
|
||||
* @throws SQLException if a database access error occurs or
|
||||
* this <code>WebRowSetXmlReader</code> object is not the
|
||||
* reader for the given rowset
|
||||
* @see XmlReaderContentHandler
|
||||
*/
|
||||
public void readXML(WebRowSet caller, java.io.InputStream iStream) throws SQLException {
|
||||
try {
|
||||
InputSource is = new InputSource(iStream);
|
||||
DefaultHandler dh = new XmlErrorHandler();
|
||||
|
||||
XmlReaderContentHandler hndr = new XmlReaderContentHandler((RowSet)caller);
|
||||
SAXParserFactory factory = SAXParserFactory.newInstance();
|
||||
factory.setNamespaceAware(true);
|
||||
factory.setValidating(true);
|
||||
|
||||
SAXParser parser = factory.newSAXParser() ;
|
||||
|
||||
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
|
||||
"http://www.w3.org/2001/XMLSchema");
|
||||
|
||||
XMLReader reader1 = parser.getXMLReader() ;
|
||||
reader1.setEntityResolver(new XmlResolver());
|
||||
reader1.setContentHandler(hndr);
|
||||
|
||||
reader1.setErrorHandler(dh);
|
||||
|
||||
reader1.parse(is);
|
||||
|
||||
} catch (SAXParseException err) {
|
||||
System.out.println (MessageFormat.format(resBundle.handleGetObject("wrsxmlreader.parseerr").toString(), new Object[]{err.getLineNumber(), err.getSystemId() }));
|
||||
System.out.println(" " + err.getMessage ());
|
||||
err.printStackTrace();
|
||||
throw new SQLException(err.getMessage());
|
||||
|
||||
} catch (SAXException e) {
|
||||
Exception x = e;
|
||||
if (e.getException () != null)
|
||||
x = e.getException();
|
||||
x.printStackTrace ();
|
||||
throw new SQLException(x.getMessage());
|
||||
|
||||
}
|
||||
|
||||
// Will be here if trying to write beyond the RowSet limits
|
||||
|
||||
catch (ArrayIndexOutOfBoundsException aie) {
|
||||
throw new SQLException(resBundle.handleGetObject("wrsxmlreader.invalidcp").toString());
|
||||
}
|
||||
|
||||
catch (Throwable e) {
|
||||
throw new SQLException(MessageFormat.format(resBundle.handleGetObject("wrsxmlreader.readxml").toString() , e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For code coverage purposes only right now
|
||||
*
|
||||
*/
|
||||
|
||||
public void readData(RowSetInternal caller) {
|
||||
}
|
||||
|
||||
/**
|
||||
* This method re populates the resBundle
|
||||
* during the deserialization process
|
||||
*
|
||||
*/
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of transient Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final long serialVersionUID = -9127058392819008014L;
|
||||
}
|
||||
|
|
@ -0,0 +1,680 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import com.sun.rowset.JdbcRowSetResourceBundle;
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
import java.io.*;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
|
||||
import javax.sql.rowset.*;
|
||||
import javax.sql.rowset.spi.*;
|
||||
|
||||
/**
|
||||
* An implementation of the {@code XmlWriter} interface, which writes a
|
||||
* {@code WebRowSet} object to an output stream as an XML document.
|
||||
*/
|
||||
|
||||
public class WebRowSetXmlWriter implements XmlWriter, Serializable {
|
||||
|
||||
/**
|
||||
* The {@code java.io.Writer} object to which this {@code WebRowSetXmlWriter}
|
||||
* object will write when its {@code writeXML} method is called. The value
|
||||
* for this field is set with the {@code java.io.Writer} object given
|
||||
* as the second argument to the {@code writeXML} method.
|
||||
*/
|
||||
private transient java.io.Writer writer;
|
||||
|
||||
/**
|
||||
* The {@code java.util.Stack} object that this {@code WebRowSetXmlWriter}
|
||||
* object will use for storing the tags to be used for writing the calling
|
||||
* {@code WebRowSet} object as an XML document.
|
||||
*/
|
||||
private java.util.Stack<String> stack;
|
||||
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
public WebRowSetXmlWriter() {
|
||||
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the given {@code WebRowSet} object as an XML document
|
||||
* using the given {@code java.io.Writer} object. The XML document
|
||||
* will include the {@code WebRowSet} object's data, metadata, and
|
||||
* properties. If a data value has been updated, that information is also
|
||||
* included.
|
||||
* <P>
|
||||
* This method is called by the {@code XmlWriter} object that is
|
||||
* referenced in the calling {@code WebRowSet} object's
|
||||
* {@code xmlWriter} field. The {@code XmlWriter.writeXML}
|
||||
* method passes to this method the arguments that were supplied to it.
|
||||
*
|
||||
* @param caller the {@code WebRowSet} object to be written; must
|
||||
* be a rowset for which this {@code WebRowSetXmlWriter} object
|
||||
* is the writer
|
||||
* @param wrt the {@code java.io.Writer} object to which
|
||||
* {@code caller} will be written
|
||||
* @exception SQLException if a database access error occurs or
|
||||
* this {@code WebRowSetXmlWriter} object is not the writer
|
||||
* for the given rowset
|
||||
* @see XmlWriter#writeXML
|
||||
*/
|
||||
public void writeXML(WebRowSet caller, java.io.Writer wrt)
|
||||
throws SQLException {
|
||||
|
||||
// create a new stack for tag checking.
|
||||
stack = new java.util.Stack<>();
|
||||
writer = wrt;
|
||||
writeRowSet(caller);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the given {@code WebRowSet} object as an XML document
|
||||
* using the given {@code java.io.OutputStream} object. The XML document
|
||||
* will include the {@code WebRowSet} object's data, metadata, and
|
||||
* properties. If a data value has been updated, that information is also
|
||||
* included.
|
||||
* <P>
|
||||
* Using stream is a faster way than using {@code java.io.Writer}
|
||||
*
|
||||
* This method is called by the {@code XmlWriter} object that is
|
||||
* referenced in the calling {@code WebRowSet} object's
|
||||
* {@code xmlWriter} field. The {@code XmlWriter.writeXML}
|
||||
* method passes to this method the arguments that were supplied to it.
|
||||
*
|
||||
* @param caller the {@code WebRowSet} object to be written; must
|
||||
* be a rowset for which this {@code WebRowSetXmlWriter} object
|
||||
* is the writer
|
||||
* @param oStream the {@code java.io.OutputStream} object to which
|
||||
* {@code caller} will be written
|
||||
* @throws SQLException if a database access error occurs or
|
||||
* this {@code WebRowSetXmlWriter} object is not the writer
|
||||
* for the given rowset
|
||||
* @see XmlWriter#writeXML
|
||||
*/
|
||||
public void writeXML(WebRowSet caller, java.io.OutputStream oStream)
|
||||
throws SQLException {
|
||||
|
||||
// create a new stack for tag checking.
|
||||
stack = new java.util.Stack<>();
|
||||
writer = new OutputStreamWriter(oStream);
|
||||
writeRowSet(caller);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @exception SQLException if a database access error occurs
|
||||
*/
|
||||
private void writeRowSet(WebRowSet caller) throws SQLException {
|
||||
|
||||
try {
|
||||
|
||||
startHeader();
|
||||
|
||||
writeProperties(caller);
|
||||
writeMetaData(caller);
|
||||
writeData(caller);
|
||||
|
||||
endHeader();
|
||||
|
||||
} catch (java.io.IOException ex) {
|
||||
throw new SQLException(MessageFormat.format(resBundle.handleGetObject("wrsxmlwriter.ioex").toString(), ex.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
private void startHeader() throws java.io.IOException {
|
||||
|
||||
setTag("webRowSet");
|
||||
writer.write("<?xml version=\"1.0\"?>\n");
|
||||
writer.write("<webRowSet xmlns=\"http://java.sun.com/xml/ns/jdbc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
|
||||
writer.write("xsi:schemaLocation=\"http://java.sun.com/xml/ns/jdbc http://java.sun.com/xml/ns/jdbc/webrowset.xsd\">\n");
|
||||
}
|
||||
|
||||
private void endHeader() throws java.io.IOException {
|
||||
endTag("webRowSet");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @exception SQLException if a database access error occurs
|
||||
*/
|
||||
private void writeProperties(WebRowSet caller) throws java.io.IOException {
|
||||
|
||||
beginSection("properties");
|
||||
|
||||
try {
|
||||
propString("command", processSpecialCharacters(caller.getCommand()));
|
||||
propInteger("concurrency", caller.getConcurrency());
|
||||
propString("datasource", caller.getDataSourceName());
|
||||
propBoolean("escape-processing",
|
||||
caller.getEscapeProcessing());
|
||||
|
||||
try {
|
||||
propInteger("fetch-direction", caller.getFetchDirection());
|
||||
} catch(SQLException sqle) {
|
||||
// it may be the case that fetch direction has not been set
|
||||
// fetchDir == 0
|
||||
// in that case it will throw a SQLException.
|
||||
// To avoid that catch it here
|
||||
}
|
||||
|
||||
propInteger("fetch-size", caller.getFetchSize());
|
||||
propInteger("isolation-level",
|
||||
caller.getTransactionIsolation());
|
||||
|
||||
beginSection("key-columns");
|
||||
|
||||
int[] kc = caller.getKeyColumns();
|
||||
for (int i = 0; kc != null && i < kc.length; i++)
|
||||
propInteger("column", kc[i]);
|
||||
|
||||
endSection("key-columns");
|
||||
|
||||
//Changed to beginSection and endSection for maps for proper indentation
|
||||
beginSection("map");
|
||||
Map<String, Class<?>> typeMap = caller.getTypeMap();
|
||||
if(typeMap != null) {
|
||||
for(Map.Entry<String, Class<?>> mm : typeMap.entrySet()) {
|
||||
propString("type", mm.getKey());
|
||||
propString("class", mm.getValue().getName());
|
||||
}
|
||||
}
|
||||
endSection("map");
|
||||
|
||||
propInteger("max-field-size", caller.getMaxFieldSize());
|
||||
propInteger("max-rows", caller.getMaxRows());
|
||||
propInteger("query-timeout", caller.getQueryTimeout());
|
||||
propBoolean("read-only", caller.isReadOnly());
|
||||
|
||||
int itype = caller.getType();
|
||||
String strType = "";
|
||||
|
||||
if(itype == 1003) {
|
||||
strType = "ResultSet.TYPE_FORWARD_ONLY";
|
||||
} else if(itype == 1004) {
|
||||
strType = "ResultSet.TYPE_SCROLL_INSENSITIVE";
|
||||
} else if(itype == 1005) {
|
||||
strType = "ResultSet.TYPE_SCROLL_SENSITIVE";
|
||||
}
|
||||
|
||||
propString("rowset-type", strType);
|
||||
|
||||
propBoolean("show-deleted", caller.getShowDeleted());
|
||||
propString("table-name", caller.getTableName());
|
||||
propString("url", caller.getUrl());
|
||||
|
||||
beginSection("sync-provider");
|
||||
// Remove the string after "@xxxx"
|
||||
// before writing it to the xml file.
|
||||
String strProviderInstance = (caller.getSyncProvider()).toString();
|
||||
String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf('@'));
|
||||
|
||||
propString("sync-provider-name", strProvider);
|
||||
propString("sync-provider-vendor", "Oracle Corporation");
|
||||
propString("sync-provider-version", "1.0");
|
||||
propInteger("sync-provider-grade", caller.getSyncProvider().getProviderGrade());
|
||||
propInteger("data-source-lock", caller.getSyncProvider().getDataSourceLock());
|
||||
|
||||
endSection("sync-provider");
|
||||
|
||||
} catch (SQLException ex) {
|
||||
throw new java.io.IOException(MessageFormat.format(resBundle.handleGetObject("wrsxmlwriter.sqlex").toString(), ex.getMessage()));
|
||||
}
|
||||
|
||||
endSection("properties");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @exception SQLException if a database access error occurs
|
||||
*/
|
||||
private void writeMetaData(WebRowSet caller) throws java.io.IOException {
|
||||
int columnCount;
|
||||
|
||||
beginSection("metadata");
|
||||
|
||||
try {
|
||||
|
||||
ResultSetMetaData rsmd = caller.getMetaData();
|
||||
columnCount = rsmd.getColumnCount();
|
||||
propInteger("column-count", columnCount);
|
||||
|
||||
for (int colIndex = 1; colIndex <= columnCount; colIndex++) {
|
||||
beginSection("column-definition");
|
||||
|
||||
propInteger("column-index", colIndex);
|
||||
propBoolean("auto-increment", rsmd.isAutoIncrement(colIndex));
|
||||
propBoolean("case-sensitive", rsmd.isCaseSensitive(colIndex));
|
||||
propBoolean("currency", rsmd.isCurrency(colIndex));
|
||||
propInteger("nullable", rsmd.isNullable(colIndex));
|
||||
propBoolean("signed", rsmd.isSigned(colIndex));
|
||||
propBoolean("searchable", rsmd.isSearchable(colIndex));
|
||||
propInteger("column-display-size",rsmd.getColumnDisplaySize(colIndex));
|
||||
propString("column-label", rsmd.getColumnLabel(colIndex));
|
||||
propString("column-name", rsmd.getColumnName(colIndex));
|
||||
propString("schema-name", rsmd.getSchemaName(colIndex));
|
||||
propInteger("column-precision", rsmd.getPrecision(colIndex));
|
||||
propInteger("column-scale", rsmd.getScale(colIndex));
|
||||
propString("table-name", rsmd.getTableName(colIndex));
|
||||
propString("catalog-name", rsmd.getCatalogName(colIndex));
|
||||
propInteger("column-type", rsmd.getColumnType(colIndex));
|
||||
propString("column-type-name", rsmd.getColumnTypeName(colIndex));
|
||||
|
||||
endSection("column-definition");
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
throw new java.io.IOException(MessageFormat.format(resBundle.handleGetObject("wrsxmlwriter.sqlex").toString(), ex.getMessage()));
|
||||
}
|
||||
|
||||
endSection("metadata");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @exception SQLException if a database access error occurs
|
||||
*/
|
||||
private void writeData(WebRowSet caller) throws java.io.IOException {
|
||||
ResultSet rs;
|
||||
|
||||
try {
|
||||
ResultSetMetaData rsmd = caller.getMetaData();
|
||||
int columnCount = rsmd.getColumnCount();
|
||||
int i;
|
||||
|
||||
beginSection("data");
|
||||
|
||||
caller.beforeFirst();
|
||||
caller.setShowDeleted(true);
|
||||
while (caller.next()) {
|
||||
if (caller.rowDeleted() && caller.rowInserted()) {
|
||||
beginSection("modifyRow");
|
||||
} else if (caller.rowDeleted()) {
|
||||
beginSection("deleteRow");
|
||||
} else if (caller.rowInserted()) {
|
||||
beginSection("insertRow");
|
||||
} else {
|
||||
beginSection("currentRow");
|
||||
}
|
||||
|
||||
for (i = 1; i <= columnCount; i++) {
|
||||
if (caller.columnUpdated(i)) {
|
||||
rs = caller.getOriginalRow();
|
||||
rs.next();
|
||||
beginTag("columnValue");
|
||||
writeValue(i, (RowSet)rs);
|
||||
endTag("columnValue");
|
||||
beginTag("updateRow");
|
||||
writeValue(i, caller);
|
||||
endTag("updateRow");
|
||||
} else {
|
||||
beginTag("columnValue");
|
||||
writeValue(i, caller);
|
||||
endTag("columnValue");
|
||||
}
|
||||
}
|
||||
|
||||
endSection(); // this is unchecked
|
||||
}
|
||||
endSection("data");
|
||||
} catch (SQLException ex) {
|
||||
throw new java.io.IOException(MessageFormat.format(resBundle.handleGetObject("wrsxmlwriter.sqlex").toString(), ex.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
private void writeValue(int idx, RowSet caller) throws java.io.IOException {
|
||||
try {
|
||||
int type = caller.getMetaData().getColumnType(idx);
|
||||
|
||||
switch (type) {
|
||||
case java.sql.Types.BIT:
|
||||
case java.sql.Types.BOOLEAN:
|
||||
boolean b = caller.getBoolean(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeBoolean(b);
|
||||
break;
|
||||
case java.sql.Types.TINYINT:
|
||||
case java.sql.Types.SMALLINT:
|
||||
short s = caller.getShort(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeShort(s);
|
||||
break;
|
||||
case java.sql.Types.INTEGER:
|
||||
int i = caller.getInt(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeInteger(i);
|
||||
break;
|
||||
case java.sql.Types.BIGINT:
|
||||
long l = caller.getLong(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeLong(l);
|
||||
break;
|
||||
case java.sql.Types.REAL:
|
||||
case java.sql.Types.FLOAT:
|
||||
float f = caller.getFloat(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeFloat(f);
|
||||
break;
|
||||
case java.sql.Types.DOUBLE:
|
||||
double d = caller.getDouble(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeDouble(d);
|
||||
break;
|
||||
case java.sql.Types.NUMERIC:
|
||||
case java.sql.Types.DECIMAL:
|
||||
writeBigDecimal(caller.getBigDecimal(idx));
|
||||
break;
|
||||
case java.sql.Types.BINARY:
|
||||
case java.sql.Types.VARBINARY:
|
||||
case java.sql.Types.LONGVARBINARY:
|
||||
break;
|
||||
case java.sql.Types.DATE:
|
||||
java.sql.Date date = caller.getDate(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeLong(date.getTime());
|
||||
break;
|
||||
case java.sql.Types.TIME:
|
||||
java.sql.Time time = caller.getTime(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeLong(time.getTime());
|
||||
break;
|
||||
case java.sql.Types.TIMESTAMP:
|
||||
java.sql.Timestamp ts = caller.getTimestamp(idx);
|
||||
if (caller.wasNull())
|
||||
writeNull();
|
||||
else
|
||||
writeLong(ts.getTime());
|
||||
break;
|
||||
case java.sql.Types.CHAR:
|
||||
case java.sql.Types.VARCHAR:
|
||||
case java.sql.Types.LONGVARCHAR:
|
||||
writeStringData(caller.getString(idx));
|
||||
break;
|
||||
default:
|
||||
System.out.println(resBundle.handleGetObject("wsrxmlwriter.notproper").toString());
|
||||
//Need to take care of BLOB, CLOB, Array, Ref here
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
throw new java.io.IOException(resBundle.handleGetObject("wrsxmlwriter.failedwrite").toString()+ ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This begins a new tag with a indent
|
||||
*
|
||||
*/
|
||||
private void beginSection(String tag) throws java.io.IOException {
|
||||
// store the current tag
|
||||
setTag(tag);
|
||||
|
||||
writeIndent(stack.size());
|
||||
|
||||
// write it out
|
||||
writer.write("<" + tag + ">\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* This closes a tag started by beginTag with a indent
|
||||
*
|
||||
*/
|
||||
private void endSection(String tag) throws java.io.IOException {
|
||||
writeIndent(stack.size());
|
||||
|
||||
String beginTag = getTag();
|
||||
|
||||
if(beginTag.indexOf("webRowSet") != -1) {
|
||||
beginTag ="webRowSet";
|
||||
}
|
||||
|
||||
if (tag.equals(beginTag) ) {
|
||||
// get the current tag and write it out
|
||||
writer.write("</" + beginTag + ">\n");
|
||||
} else {
|
||||
;
|
||||
}
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
private void endSection() throws java.io.IOException {
|
||||
writeIndent(stack.size());
|
||||
|
||||
// get the current tag and write it out
|
||||
String beginTag = getTag();
|
||||
writer.write("</" + beginTag + ">\n");
|
||||
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
private void beginTag(String tag) throws java.io.IOException {
|
||||
// store the current tag
|
||||
setTag(tag);
|
||||
|
||||
writeIndent(stack.size());
|
||||
|
||||
// write tag out
|
||||
writer.write("<" + tag + ">");
|
||||
}
|
||||
|
||||
private void endTag(String tag) throws java.io.IOException {
|
||||
String beginTag = getTag();
|
||||
if (tag.equals(beginTag)) {
|
||||
// get the current tag and write it out
|
||||
writer.write("</" + beginTag + ">\n");
|
||||
} else {
|
||||
;
|
||||
}
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
private void emptyTag(String tag) throws java.io.IOException {
|
||||
// write an emptyTag
|
||||
writer.write("<" + tag + "/>");
|
||||
}
|
||||
|
||||
private void setTag(String tag) {
|
||||
// add the tag to stack
|
||||
stack.push(tag);
|
||||
}
|
||||
|
||||
private String getTag() {
|
||||
return stack.pop();
|
||||
}
|
||||
|
||||
private void writeNull() throws java.io.IOException {
|
||||
emptyTag("null");
|
||||
}
|
||||
|
||||
private void writeStringData(String s) throws java.io.IOException {
|
||||
if (s == null) {
|
||||
writeNull();
|
||||
} else if (s.isEmpty()) {
|
||||
writeEmptyString();
|
||||
} else {
|
||||
|
||||
s = processSpecialCharacters(s);
|
||||
|
||||
writer.write(s);
|
||||
}
|
||||
}
|
||||
|
||||
private void writeString(String s) throws java.io.IOException {
|
||||
if (s != null) {
|
||||
writer.write(s);
|
||||
} else {
|
||||
writeNull();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void writeShort(short s) throws java.io.IOException {
|
||||
writer.write(Short.toString(s));
|
||||
}
|
||||
|
||||
private void writeLong(long l) throws java.io.IOException {
|
||||
writer.write(Long.toString(l));
|
||||
}
|
||||
|
||||
private void writeInteger(int i) throws java.io.IOException {
|
||||
writer.write(Integer.toString(i));
|
||||
}
|
||||
|
||||
private void writeBoolean(boolean b) throws java.io.IOException {
|
||||
writer.write(Boolean.toString(b));
|
||||
}
|
||||
|
||||
private void writeFloat(float f) throws java.io.IOException {
|
||||
writer.write(Float.toString(f));
|
||||
}
|
||||
|
||||
private void writeDouble(double d) throws java.io.IOException {
|
||||
writer.write(Double.toString(d));
|
||||
}
|
||||
|
||||
private void writeBigDecimal(java.math.BigDecimal bd) throws java.io.IOException {
|
||||
if (bd != null)
|
||||
writer.write(bd.toString());
|
||||
else
|
||||
emptyTag("null");
|
||||
}
|
||||
|
||||
private void writeIndent(int tabs) throws java.io.IOException {
|
||||
// indent...
|
||||
for (int i = 1; i < tabs; i++) {
|
||||
writer.write(" ");
|
||||
}
|
||||
}
|
||||
|
||||
private void propString(String tag, String s) throws java.io.IOException {
|
||||
beginTag(tag);
|
||||
writeString(s);
|
||||
endTag(tag);
|
||||
}
|
||||
|
||||
private void propInteger(String tag, int i) throws java.io.IOException {
|
||||
beginTag(tag);
|
||||
writeInteger(i);
|
||||
endTag(tag);
|
||||
}
|
||||
|
||||
private void propBoolean(String tag, boolean b) throws java.io.IOException {
|
||||
beginTag(tag);
|
||||
writeBoolean(b);
|
||||
endTag(tag);
|
||||
}
|
||||
|
||||
private void writeEmptyString() throws java.io.IOException {
|
||||
emptyTag("emptyString");
|
||||
}
|
||||
/**
|
||||
* Purely for code coverage purposes..
|
||||
*/
|
||||
public boolean writeData(RowSetInternal caller) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This function has been added for the processing of special characters
|
||||
* like <,>,'," and & in the data to be serialized. These have to be taken
|
||||
* of specifically or else there will be parsing error while trying to read
|
||||
* the contents of the XML file.
|
||||
**/
|
||||
|
||||
private String processSpecialCharacters(String s) {
|
||||
|
||||
if(s == null) {
|
||||
return null;
|
||||
}
|
||||
char []charStr = s.toCharArray();
|
||||
String specialStr = "";
|
||||
|
||||
for(int i = 0; i < charStr.length; i++) {
|
||||
if(charStr[i] == '&') {
|
||||
specialStr = specialStr.concat("&");
|
||||
} else if(charStr[i] == '<') {
|
||||
specialStr = specialStr.concat("<");
|
||||
} else if(charStr[i] == '>') {
|
||||
specialStr = specialStr.concat(">");
|
||||
} else if(charStr[i] == '\'') {
|
||||
specialStr = specialStr.concat("'");
|
||||
} else if(charStr[i] == '\"') {
|
||||
specialStr = specialStr.concat(""");
|
||||
} else {
|
||||
specialStr = specialStr.concat(String.valueOf(charStr[i]));
|
||||
}
|
||||
}
|
||||
|
||||
s = specialStr;
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method re populates the resBundle
|
||||
* during the deserialization process
|
||||
*
|
||||
*/
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of transient Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static final long serialVersionUID = 7163134986189677641L;
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import org.xml.sax.*;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
import com.sun.rowset.*;
|
||||
import javax.sql.rowset.*;
|
||||
|
||||
|
||||
/**
|
||||
* An implementation of the <code>DefaultHandler</code> interface, which
|
||||
* handles all the errors, fatalerrors and warnings while reading the xml file.
|
||||
* This is the ErrorHandler which helps <code>WebRowSetXmlReader</code>
|
||||
* to handle any errors while reading the xml data.
|
||||
*/
|
||||
|
||||
|
||||
public class XmlErrorHandler extends DefaultHandler {
|
||||
public int errorCounter = 0;
|
||||
|
||||
public void error(SAXParseException e) throws SAXException {
|
||||
errorCounter++;
|
||||
|
||||
}
|
||||
|
||||
public void fatalError(SAXParseException e) throws SAXException {
|
||||
errorCounter++;
|
||||
|
||||
}
|
||||
|
||||
public void warning(SAXParseException exception) throws SAXException {
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.internal;
|
||||
|
||||
import org.xml.sax.*;
|
||||
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
/**
|
||||
* An implementation of the <code>EntityResolver</code> interface, which
|
||||
* reads and parses an XML formatted <code>WebRowSet</code> object.
|
||||
* This is an implementation of org.xml.sax
|
||||
*
|
||||
*/
|
||||
public class XmlResolver implements EntityResolver {
|
||||
|
||||
public InputSource resolveEntity(String publicId, String systemId) {
|
||||
String schemaName = systemId.substring(systemId.lastIndexOf('/'));
|
||||
|
||||
if(systemId.startsWith("http://java.sun.com/xml/ns/jdbc")) {
|
||||
return new InputSource(this.getClass().getResourceAsStream(schemaName));
|
||||
|
||||
} else {
|
||||
// use the default behaviour
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Provides five standard implementations of the standard JDBC {@code RowSet} implementation
|
||||
* interface definitions. These reference implementations are included with the J2SE version
|
||||
* 1.5 platform and represent the benchmark standard {@code RowSet} implementations as verified
|
||||
* by the Test Compatibility Kit (TCK) as mandated by the Java Community Process.
|
||||
* <br>
|
||||
*
|
||||
* <h2>1.0 Available JDBC RowSet Reference Implementations </h2>
|
||||
* The following implementations are provided:<br>
|
||||
*
|
||||
* <blockquote><b>{@code JdbcRowSetImpl}</b> - The {@code javax.sql.rowset.JdbcRowSet}
|
||||
* interface reference implementation. <br>
|
||||
* <br>
|
||||
* <b>{@code CachedRowSetImpl}</b> - The {@code javax.sql.rowset.CachedRowSet} interface
|
||||
* reference implementation.<br>
|
||||
* <br>
|
||||
* <b>{@code WebRowSetImpl}</b> - The {@code javax.sql.rowset.WebRowSet} interface
|
||||
* reference implementation.<br>
|
||||
* <br>
|
||||
* <b>{@code FilteredRowSetImpl}</b> - The {@code javax.sql.rowset.FilteredRowSet}
|
||||
* interface reference implementation.<br>
|
||||
* <br>
|
||||
* <b>{@code JoinRowSetImpl}</b> - The {@code javax.sql.rowset.JoinRowSet} interface
|
||||
* reference implementation.<br>
|
||||
* </blockquote>
|
||||
*
|
||||
* All details on their expected behavior, including their interactions with the {@code SyncProvider}
|
||||
* SPI and helper classes are provided in the interface definitions in the {@code javax.sql.rowset}
|
||||
* package specification.<br>
|
||||
*
|
||||
* <h2>2.0 Usage</h2>
|
||||
* The reference implementations represent robust implementations of the standard
|
||||
* {@code RowSet} interfaces defined in the {@code javax.sql.rowset} package.
|
||||
* All disconnected {@code RowSet} implementations, such as the {@code CachedRowSetImpl}
|
||||
* and {@code WebRowSetImpl}, are flexible enough to use the {@code SyncFactory} SPIs to
|
||||
* leverage non-reference implementation {@code SyncProvider} implementations to obtain
|
||||
* differing synchronization semantics. Furthermore, developers and vendors alike are free
|
||||
* to use these implementations and integrate them into their products just as they
|
||||
* can with to other components of the Java platform.<br>
|
||||
*
|
||||
* <h2>3.0 Extending the JDBC RowSet Implementations</h2>
|
||||
*
|
||||
* The JDBC {@code RowSet} reference implementations are provided as non-final
|
||||
* classes so that any developer can extend them to provide additional features
|
||||
* while maintaining the core required standard functionality and compatibility. It
|
||||
* is anticipated that many vendors and developers will extend the standard feature
|
||||
* set to their particular needs. The website for JDBC Technology will
|
||||
* provider a portal where implementations can be listed, similar to the way it
|
||||
* provides a site for JDBC drivers.
|
||||
* @since 1.5
|
||||
*/
|
||||
package com.sun.rowset;
|
||||
|
|
@ -0,0 +1,262 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.providers;
|
||||
|
||||
import com.sun.rowset.JdbcRowSetResourceBundle;
|
||||
import javax.sql.*;
|
||||
import java.io.*;
|
||||
|
||||
import javax.sql.rowset.spi.*;
|
||||
import com.sun.rowset.internal.*;
|
||||
|
||||
/**
|
||||
* The reference implementation of a JDBC Rowset synchronization provider
|
||||
* providing optimistic synchronization with a relational datastore
|
||||
* using any JDBC technology-enabled driver.
|
||||
*
|
||||
* <h2>1.0 Background</h2>
|
||||
* This synchronization provider is registered with the
|
||||
* <code>SyncFactory</code> by default as the
|
||||
* <code>com.sun.rowset.providers.RIOptimisticProvider</code>.
|
||||
* As an extension of the <code>SyncProvider</code> abstract
|
||||
* class, it provides the reader and writer classes required by disconnected
|
||||
* rowsets as <code>javax.sql.RowSetReader</code> and <code>javax.sql.RowSetWriter</code>
|
||||
* interface implementations. As a reference implementation,
|
||||
* <code>RIOptimisticProvider</code> provides a
|
||||
* fully functional implementation offering a medium grade classification of
|
||||
* synchronization, namely GRADE_CHECK_MODIFIED_AT_COMMIT. A
|
||||
* disconnected <code>RowSet</code> implementation using the
|
||||
* <code>RIOptimisticProvider</code> can expect the writer to
|
||||
* check only rows that have been modified in the <code>RowSet</code> against
|
||||
* the values in the data source. If there is a conflict, that is, if a value
|
||||
* in the data source has been changed by another party, the
|
||||
* <code>RIOptimisticProvider</code> will not write any of the changes to the data
|
||||
* source and will throw a <code>SyncProviderException</code> object.
|
||||
*
|
||||
* <h2>2.0 Usage</h2>
|
||||
* Standard disconnected <code>RowSet</code> implementations may opt to use this
|
||||
* <code>SyncProvider</code> implementation in one of two ways:
|
||||
* <OL>
|
||||
* <LI>By specifically calling the <code>setSyncProvider</code> method
|
||||
defined in the <code>CachedRowSet</code> interface
|
||||
* <pre>
|
||||
* CachedRowset crs = new FooCachedRowSetImpl();
|
||||
* crs.setSyncProvider("com.sun.rowset.providers.RIOptimisticProvider");
|
||||
* </pre>
|
||||
* <LI>By specifying it in the constructor of the <code>RowSet</code>
|
||||
* implementation
|
||||
* <pre>
|
||||
* CachedRowset crs = new FooCachedRowSetImpl(
|
||||
* "com.sun.rowset.providers.RIOptimisticProvider");
|
||||
* </pre>
|
||||
* </OL>
|
||||
* Note that because the <code>RIOptimisticProvider</code> implementation is
|
||||
* the default provider, it will always be the provider when no provider ID is
|
||||
* specified to the constructor.
|
||||
* <P>
|
||||
* See the standard <code>RowSet</code> reference implementations in the
|
||||
* <code>com.sun.rowset</code> package for more details.
|
||||
*
|
||||
* @author Jonathan Bruce
|
||||
* @see javax.sql.rowset.spi.SyncProvider
|
||||
* @see javax.sql.rowset.spi.SyncProviderException
|
||||
* @see javax.sql.rowset.spi.SyncFactory
|
||||
* @see javax.sql.rowset.spi.SyncFactoryException
|
||||
*
|
||||
*/
|
||||
public final class RIOptimisticProvider extends SyncProvider implements Serializable {
|
||||
|
||||
private CachedRowSetReader reader;
|
||||
private CachedRowSetWriter writer;
|
||||
|
||||
/**
|
||||
* The unique provider identifier.
|
||||
*/
|
||||
private String providerID = "com.sun.rowset.providers.RIOptimisticProvider";
|
||||
|
||||
/**
|
||||
* The vendor name of this SyncProvider implementation
|
||||
*/
|
||||
private String vendorName = "Oracle Corporation";
|
||||
|
||||
/**
|
||||
* The version number of this SyncProvider implementation
|
||||
*/
|
||||
private String versionNumber = "1.0";
|
||||
|
||||
/**
|
||||
* ResourceBundle
|
||||
*/
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
/**
|
||||
* Creates an <code>RIOptimisticProvider</code> object initialized with the
|
||||
* fully qualified class name of this <code>SyncProvider</code> implementation
|
||||
* and a default reader and writer.
|
||||
* <P>
|
||||
* This provider is available to all disconnected <code>RowSet</code> implementations
|
||||
* as the default persistence provider.
|
||||
*/
|
||||
public RIOptimisticProvider() {
|
||||
providerID = this.getClass().getName();
|
||||
reader = new CachedRowSetReader();
|
||||
writer = new CachedRowSetWriter();
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>'javax.sql.rowset.providers.RIOptimisticProvider'</code>
|
||||
* provider identification string.
|
||||
*
|
||||
* @return String Provider ID of this persistence provider
|
||||
*/
|
||||
public String getProviderID() {
|
||||
return providerID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>javax.sql.RowSetWriter</code> object for this
|
||||
* <code>RIOptimisticProvider</code> object. This is the writer that will
|
||||
* write changes made to the <code>Rowset</code> object back to the data source.
|
||||
*
|
||||
* @return the <code>javax.sql.RowSetWriter</code> object for this
|
||||
* <code>RIOptimisticProvider</code> object
|
||||
*/
|
||||
public RowSetWriter getRowSetWriter() {
|
||||
try {
|
||||
writer.setReader(reader);
|
||||
} catch (java.sql.SQLException e) {}
|
||||
return writer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>javax.sql.RowSetReader</code> object for this
|
||||
* <code>RIOptimisticProvider</code> object. This is the reader that will
|
||||
* populate a <code>RowSet</code> object using this <code>RIOptimisticProvider</code>.
|
||||
*
|
||||
* @return the <code>javax.sql.RowSetReader</code> object for this
|
||||
* <code>RIOptimisticProvider</code> object
|
||||
*/
|
||||
public RowSetReader getRowSetReader() {
|
||||
return reader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>SyncProvider</code> grade of synchronization that
|
||||
* <code>RowSet</code> objects can expect when using this
|
||||
* implementation. As an optimistic synchronization provider, the writer
|
||||
* will only check rows that have been modified in the <code>RowSet</code>
|
||||
* object.
|
||||
*/
|
||||
public int getProviderGrade() {
|
||||
return SyncProvider.GRADE_CHECK_MODIFIED_AT_COMMIT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifies the data source lock severity according to the standard
|
||||
* <code>SyncProvider</code> classifications.
|
||||
*
|
||||
* @param datasource_lock An <code>int</code> indicating the level of locking to be
|
||||
* set; must be one of the following constants:
|
||||
* <PRE>
|
||||
* SyncProvider.DATASOURCE_NO_LOCK,
|
||||
* SyncProvider.DATASOURCE_ROW_LOCK,
|
||||
* SyncProvider.DATASOURCE_TABLE_LOCK,
|
||||
* SyncProvider.DATASOURCE_DB_LOCk
|
||||
* </PRE>
|
||||
* @throws SyncProviderException if the parameter specified is not
|
||||
* <code>SyncProvider.DATASOURCE_NO_LOCK</code>
|
||||
*/
|
||||
public void setDataSourceLock(int datasource_lock) throws SyncProviderException {
|
||||
if(datasource_lock != SyncProvider.DATASOURCE_NO_LOCK ) {
|
||||
throw new SyncProviderException(resBundle.handleGetObject("riop.locking").toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the active data source lock severity in this
|
||||
* reference implementation of the <code>SyncProvider</code>
|
||||
* abstract class.
|
||||
*
|
||||
* @return <code>SyncProvider.DATASOURCE_NO_LOCK</code>.
|
||||
* The reference implementation does not support data source locks.
|
||||
*/
|
||||
public int getDataSourceLock() throws SyncProviderException {
|
||||
return SyncProvider.DATASOURCE_NO_LOCK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the supported updatable view abilities of the
|
||||
* reference implementation of the <code>SyncProvider</code>
|
||||
* abstract class.
|
||||
*
|
||||
* @return <code>SyncProvider.NONUPDATABLE_VIEW_SYNC</code>. The
|
||||
* the reference implementation does not support updating tables
|
||||
* that are the source of a view.
|
||||
*/
|
||||
public int supportsUpdatableView() {
|
||||
return SyncProvider.NONUPDATABLE_VIEW_SYNC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the release version ID of the Reference Implementation Optimistic
|
||||
* Synchronization Provider.
|
||||
*
|
||||
* @return the <code>String</code> detailing the version number of this SyncProvider
|
||||
*/
|
||||
public String getVersion() {
|
||||
return this.versionNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the vendor name of the Reference Implementation Optimistic
|
||||
* Synchronization Provider
|
||||
*
|
||||
* @return the <code>String</code> detailing the vendor name of this
|
||||
* SyncProvider
|
||||
*/
|
||||
public String getVendor() {
|
||||
return this.vendorName;
|
||||
}
|
||||
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
// Default state initialization happens here
|
||||
ois.defaultReadObject();
|
||||
// Initialization of transient Res Bundle happens here .
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
|
||||
}
|
||||
static final long serialVersionUID =-3143367176751761936L;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.rowset.providers;
|
||||
|
||||
import com.sun.rowset.JdbcRowSetResourceBundle;
|
||||
import java.io.IOException;
|
||||
import java.sql.*;
|
||||
import javax.sql.*;
|
||||
|
||||
import javax.sql.rowset.spi.*;
|
||||
|
||||
/**
|
||||
* A reference implementation of a JDBC RowSet synchronization provider
|
||||
* with the ability to read and write rowsets in well formed XML using the
|
||||
* standard WebRowSet schema.
|
||||
*
|
||||
* <h2>1.0 Background</h2>
|
||||
* This synchronization provider is registered with the
|
||||
* <code>SyncFactory</code> by default as the
|
||||
* <code>com.sun.rowset.providers.RIXMLProvider</code>.
|
||||
* <P>
|
||||
* A <code>WebRowSet</code> object uses an <code>RIXMLProvider</code> implementation
|
||||
* to read an XML data source or to write itself in XML format using the
|
||||
* <code>WebRowSet</code> XML schema definition available at
|
||||
* <pre>
|
||||
* <a href="http://xmlns.jcp.org/xml/ns//jdbc/webrowset.xsd">http://xmlns.jcp.org/xml/ns//jdbc/webrowset.xsd</a>
|
||||
* </pre>
|
||||
* The <code>RIXMLProvider</code> implementation has a synchronization level of
|
||||
* GRADE_NONE, which means that it does no checking at all for conflicts. It
|
||||
* simply writes a <code>WebRowSet</code> object to a file.
|
||||
* <h2>2.0 Usage</h2>
|
||||
* A <code>WebRowSet</code> implementation is created with an <code>RIXMLProvider</code>
|
||||
* by default.
|
||||
* <pre>
|
||||
* WebRowSet wrs = new FooWebRowSetImpl();
|
||||
* </pre>
|
||||
* The <code>SyncFactory</code> always provides an instance of
|
||||
* <code>RIOptimisticProvider</code> when no provider is specified,
|
||||
* but the implementation of the default constructor for <code>WebRowSet</code> sets the
|
||||
* provider to be the <code>RIXMLProvider</code> implementation. Therefore,
|
||||
* the following line of code is executed behind the scenes as part of the
|
||||
* implementation of the default constructor.
|
||||
* <pre>
|
||||
* wrs.setSyncProvider("com.sun.rowset.providers.RIXMLProvider");
|
||||
* </pre>
|
||||
* See the standard <code>RowSet</code> reference implementations in the
|
||||
* <code>com.sun.rowset</code> package for more details.
|
||||
*
|
||||
* @author Jonathan Bruce
|
||||
* @see javax.sql.rowset.spi.SyncProvider
|
||||
* @see javax.sql.rowset.spi.SyncProviderException
|
||||
* @see javax.sql.rowset.spi.SyncFactory
|
||||
* @see javax.sql.rowset.spi.SyncFactoryException
|
||||
*/
|
||||
public final class RIXMLProvider extends SyncProvider {
|
||||
|
||||
/**
|
||||
* The unique provider identifier.
|
||||
*/
|
||||
private String providerID = "com.sun.rowset.providers.RIXMLProvider";
|
||||
|
||||
/**
|
||||
* The vendor name of this SyncProvider implementation.
|
||||
*/
|
||||
private String vendorName = "Oracle Corporation";
|
||||
|
||||
/**
|
||||
* The version number of this SyncProvider implementation.
|
||||
*/
|
||||
private String versionNumber = "1.0";
|
||||
|
||||
private JdbcRowSetResourceBundle resBundle;
|
||||
|
||||
private XmlReader xmlReader;
|
||||
private XmlWriter xmlWriter;
|
||||
|
||||
/**
|
||||
* This provider is available to all JDBC <code>RowSet</code> implementations as the
|
||||
* default persistence provider.
|
||||
*/
|
||||
public RIXMLProvider() {
|
||||
providerID = this.getClass().getName();
|
||||
try {
|
||||
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
|
||||
} catch(IOException ioe) {
|
||||
throw new RuntimeException(ioe);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>"javax.sql.rowset.providers.RIXMLProvider"</code>, which is
|
||||
* the fully qualified class name of this provider implementation.
|
||||
*
|
||||
* @return a <code>String</code> object with the fully specified class name of
|
||||
* this <code>RIOptimisticProvider</code> implementation
|
||||
*/
|
||||
public String getProviderID() {
|
||||
return providerID;
|
||||
}
|
||||
|
||||
// additional methods that sit on top of reader/writer methods back to
|
||||
// original datasource. Allow XML state to be written out and in
|
||||
|
||||
/**
|
||||
* Sets this <code>WebRowSet</code> object's reader to the given
|
||||
* <code>XmlReader</code> object.
|
||||
*
|
||||
* @throws SQLException if a database access error occurs
|
||||
*/
|
||||
public void setXmlReader(XmlReader reader) throws SQLException {
|
||||
xmlReader = reader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this <code>WebRowSet</code> object's writer to the given
|
||||
* <code>XmlWriter</code> object.
|
||||
*
|
||||
* @throws SQLException if a database access error occurs
|
||||
*/
|
||||
public void setXmlWriter(XmlWriter writer) throws SQLException {
|
||||
xmlWriter = writer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the reader that this <code>WebRowSet</code> object
|
||||
* will call when its <code>readXml</code> method is called.
|
||||
*
|
||||
* @return the <code>XmlReader</code> object for this SyncProvider
|
||||
* @throws SQLException if a database access error occurs
|
||||
*/
|
||||
public XmlReader getXmlReader() throws SQLException {
|
||||
return xmlReader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the writer that this <code>WebRowSet</code> object
|
||||
* will call when its <code>writeXml</code> method is called.
|
||||
*
|
||||
* @return the <code>XmlWriter</code> for this SyncProvider
|
||||
* @throws SQLException if a database access error occurs
|
||||
*/
|
||||
public XmlWriter getXmlWriter() throws SQLException {
|
||||
return xmlWriter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>SyncProvider</code> grade of syncrhonization that
|
||||
* <code>RowSet</code> object instances can expect when using this
|
||||
* implementation. As this implementation provides no synchronization
|
||||
* facilities to the XML data source, the lowest grade is returned.
|
||||
*
|
||||
* @return the <code>SyncProvider</code> synchronization grade of this
|
||||
* provider; must be one of the following constants:
|
||||
* <PRE>
|
||||
* SyncProvider.GRADE_NONE,
|
||||
* SyncProvider.GRADE_MODIFIED_AT_COMMIT,
|
||||
* SyncProvider.GRADE_CHECK_ALL_AT_COMMIT,
|
||||
* SyncProvider.GRADE_LOCK_WHEN_MODIFIED,
|
||||
* SyncProvider.GRADE_LOCK_WHEN_LOADED
|
||||
* </PRE>
|
||||
*
|
||||
*/
|
||||
public int getProviderGrade() {
|
||||
return SyncProvider.GRADE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default UPDATABLE_VIEW behavior of this reader
|
||||
*
|
||||
*/
|
||||
public int supportsUpdatableView() {
|
||||
return SyncProvider.NONUPDATABLE_VIEW_SYNC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default DATASOURCE_LOCK behavior of this reader
|
||||
*/
|
||||
public int getDataSourceLock() throws SyncProviderException {
|
||||
return SyncProvider.DATASOURCE_NO_LOCK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an unsupported operation exception as this method does
|
||||
* function with non-locking XML data sources.
|
||||
*/
|
||||
public void setDataSourceLock(int lock) throws SyncProviderException {
|
||||
throw new UnsupportedOperationException(resBundle.handleGetObject("rixml.unsupp").toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a null object as RowSetWriters are not returned by this SyncProvider
|
||||
*/
|
||||
public RowSetWriter getRowSetWriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a null object as RowSetWriter objects are not returned by this
|
||||
* SyncProvider
|
||||
*/
|
||||
public RowSetReader getRowSetReader() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the release version ID of the Reference Implementation Optimistic
|
||||
* Synchronization Provider.
|
||||
*
|
||||
* @return the <code>String</code> detailing the version number of this SyncProvider
|
||||
*/
|
||||
public String getVersion() {
|
||||
return this.versionNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the vendor name of the Reference Implementation Optimistic
|
||||
* Synchronization Provider
|
||||
*
|
||||
* @return the <code>String</code> detailing the vendor name of this
|
||||
* SyncProvider
|
||||
*/
|
||||
public String getVendor() {
|
||||
return this.vendorName;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* Repository for the {@code RowSet} reference implementations of the
|
||||
* {@code SyncProvider} abstract class. These implementations provide a
|
||||
* disconnected {@code RowSet}
|
||||
* object with the ability to synchronize the data in the underlying data
|
||||
* source with its data. These implementations are provided as
|
||||
* the default {@code SyncProvider} implementations and are accessible via the
|
||||
* {@code SyncProvider} SPI managed by the {@code SyncFactory}.
|
||||
*
|
||||
* <h2>1.0 {@code SyncProvider} Reference Implementations</h2>
|
||||
* The main job of a {@code SyncProvider} implementation is to manage
|
||||
* the reader and writer mechanisms.
|
||||
* The {@code SyncProvider} SPI, as specified in the {@code javax.sql.rowset.spi}
|
||||
* package, provides a pluggable mechanism by which {@code javax.sql.RowSetReader}
|
||||
* and {@code javax.sql.RowSetWriter} implementations can be supplied to a disconnected
|
||||
* {@code RowSet} object.
|
||||
* <P>
|
||||
* A reader, a {@code javax.sql.RowSetReader}
|
||||
* object, does the work necessary to populate a {@code RowSet} object with data.
|
||||
* A writer, a {@code javax.sql.RowSetWriter} object, does the work necessary for
|
||||
* synchronizing a {@code RowSet} object's data with the data in the originating
|
||||
* source of data. Put another way, a writer writes a {@code RowSet}
|
||||
* object's data back to the data source.
|
||||
* <P>
|
||||
* Generally speaking, the course of events is this. The reader makes a connection to
|
||||
* the data source and reads the data from a {@code ResultSet} object into its
|
||||
* {@code RowSet} object. Then it closes the connection. While
|
||||
* the {@code RowSet} object is disconnected, an application makes some modifications
|
||||
* to the data and calls the method {@code acceptChanges}. At this point, the
|
||||
* writer is called to write the changes back to the database table or view
|
||||
* from which the original data came. This is called <i>synchronization</i>.
|
||||
* <P>
|
||||
* If the data in the originating data source has not changed, there is no problem
|
||||
* with just writing the {@code RowSet} object's new data to the data source.
|
||||
* If it has changed, however, there is a conflict that needs to be resolved. One
|
||||
* way to solve the problem is not to let the data in the data source be changed in
|
||||
* the first place, which can be done by setting locks on a row, a table, or the
|
||||
* whole data source. Setting locks is a way to avoid conflicts, but it can be
|
||||
* very expensive. Another approach, which is at the other end of the spectrum,
|
||||
* is simply to assume that no conflicts will occur and thus do nothing to avoid
|
||||
* conflicts.
|
||||
* Different {@code SyncProvider} implementations may handle synchronization in
|
||||
* any of these ways, varying from doing no checking for
|
||||
* conflicts, to doing various levels of checking, to guaranteeing that there are no
|
||||
* conflicts.
|
||||
* <P>
|
||||
* The {@code SyncProvider} class offers methods to help a {@code RowSet}
|
||||
* object discover and manage how a provider handles synchronization.
|
||||
* The method {@code getProviderGrade} returns the
|
||||
* grade of synchronization a provider offers. An application can
|
||||
* direct the provider to use a particular level of locking by calling
|
||||
* the method {@code setDataSourceLock} and specifying the level of locking desired.
|
||||
* If a {@code RowSet} object's data came from an SQL {@code VIEW}, an
|
||||
* application may call the method {@code supportsUpdatableView} to
|
||||
* find out whether the {@code VIEW} can be updated.
|
||||
* <P>
|
||||
* Synchronization is done completely behind the scenes, so it is third party vendors of
|
||||
* synchronization provider implementations who have to take care of this complex task.
|
||||
* Application programmers can decide which provider to use and the level of locking to
|
||||
* be done, but they are free from having to worry about the implementation details.
|
||||
* <P>
|
||||
* The JDBC {@code RowSet} Implementations reference implementation provides two
|
||||
* implementations of the {@code SyncProvider} class:
|
||||
*
|
||||
* <UL>
|
||||
* <LI>
|
||||
* <b>{@code RIOptimisticProvider}</b> - provides the {@code javax.sql.RowSetReader}
|
||||
* and {@code javax.sql.RowSetWriter} interface implementations and provides
|
||||
* an optimistic concurrency model for synchronization. This model assumes that there
|
||||
* will be few conflicts and therefore uses a relatively low grade of synchronization.
|
||||
* If no other provider is available, this is the default provider that the
|
||||
* {@code SyncFactory} will supply to a {@code RowSet} object.
|
||||
* <br>
|
||||
* <LI>
|
||||
* <b>{@code RIXMLProvider}</b> - provides the {@code XmlReader} (an extension
|
||||
* of the {@code javax.sql.RowSetReader} interface) and the {@code XmlWriter}
|
||||
* (an extension of the {@code javax.sql.RowSetWriter} interface) to enable
|
||||
* {@code WebRowSet} objects to write their state to a
|
||||
* well formed XML document according to the {@code WebRowSet} XML schema
|
||||
* definition.<br>
|
||||
* </UL>
|
||||
*
|
||||
* <h2>2.0 Basics in RowSet Population & Synchronization</h2>
|
||||
* A rowset's first task is to populate itself with rows of column values.
|
||||
* Generally, these rows will come from a relational database, so a rowset
|
||||
* has properties that supply what is necessary for making a connection to
|
||||
* a database and executing a query. A rowset that does not need to establish
|
||||
* a connection and execute a command, such as one that gets its data from
|
||||
* a tabular file instead of a relational database, does not need to have these
|
||||
* properties set. The vast majority of RowSets, however, do need to set these
|
||||
* properties. The general rule is that a RowSet is required to set only the
|
||||
* properties that it uses.<br>
|
||||
* <br>
|
||||
* The {@code command} property contains the query that determines what
|
||||
* data a {@code RowSet} will contain. Rowsets have methods for setting a query's
|
||||
* parameter(s), which means that a query can be executed multiple times with
|
||||
* different parameters to produce different result sets. Or the query can be
|
||||
* changed to something completely new to get a new result set.
|
||||
* <p>Once a rowset contains the rows from a {@code ResultSet} object or some
|
||||
* other data source, its column values can be updated, and its rows can be
|
||||
* inserted or deleted. Any method that causes a change in the rowset's values
|
||||
* or cursor position also notifies any object that has been registered as
|
||||
* a listener with the rowset. So, for example, a table that displays the rowset's
|
||||
* data in an applet can be notified of changes and make updates as they
|
||||
* occur.<br>
|
||||
* <br>
|
||||
* The changes made to a rowset can be propagated back to the original data
|
||||
* source to keep the rowset and its data source synchronized. Although this
|
||||
* involves many operations behind the scenes, it is completely transparent
|
||||
* to the application programmer and remains the concern of the RowSet provider
|
||||
* developer. All an application has to do is invoke the method {@code acceptChanges},
|
||||
* and the data source backing the rowset will be updated to match the current
|
||||
* values in the rowset. </p>
|
||||
*
|
||||
* <p>A disconnected rowset, such as a {@code CachedRowSet} or {@code WebRowSet}
|
||||
* object, establishes a connection to populate itself with data from a database
|
||||
* and then closes the connection. The {@code RowSet} object will remain
|
||||
* disconnected until it wants to propagate changes back to its database table,
|
||||
* which is optional. To write its changes back to the database (synchronize with
|
||||
* the database), the rowset establishes a connection, write the changes, and then
|
||||
* once again disconnects itself.<br>
|
||||
* </p>
|
||||
*
|
||||
* <h2> 3.0 Other Possible Implementations</h2>
|
||||
* There are many other possible implementations of the {@code SyncProvider} abstract
|
||||
* class. One possibility is to employ a more robust synchronization model, which
|
||||
* would give a {@code RowSet} object increased trust in the provider's
|
||||
* ability to get any updates back to the original data source. Another possibility
|
||||
* is a more formal synchronization mechanism such as SyncML
|
||||
* (<a href="http://www.syncml.org/">http://www.syncml.org/</a>) <br>
|
||||
* @since 1.5
|
||||
*/
|
||||
package com.sun.rowset.providers;
|
||||
Loading…
Add table
Add a link
Reference in a new issue