vgritsenko 2004/01/15 06:23:21
Modified: java/src/org/apache/xindice/tools/command AddDocument.java config commands.xml Added: java/src/org/apache/xindice/tools/command AddResource.java Log: Add separate command, add_resource, for adding binary resources Revision Changes Path 1.12 +21 -45 xml-xindice/java/src/org/apache/xindice/tools/command/AddDocument.java Index: AddDocument.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/tools/command/AddDocument.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- AddDocument.java 9 Jan 2004 04:14:24 -0000 1.11 +++ AddDocument.java 15 Jan 2004 14:23:20 -0000 1.12 @@ -60,17 +60,12 @@ package org.apache.xindice.tools.command; import org.apache.xindice.tools.XMLTools; -import org.apache.xindice.client.xmldb.xmlrpc.CollectionImpl; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import org.xmldb.api.DatabaseManager; import org.xmldb.api.base.Collection; import org.xmldb.api.base.Resource; -import org.xmldb.api.modules.XMLResource; -import org.xmldb.api.modules.BinaryResource; import javax.xml.parsers.SAXParserFactory; import java.io.File; @@ -79,9 +74,9 @@ import java.util.Hashtable; /** - * AddDocument.java is designed to let the user add Single Documents - * and/or Multiple Documents to an existing Collection or Nested Collection - * within the current Database. + * AddDocument is designed to let the user add single document + * and/or multiple documents to any existing collection + * within the current database. * * @version CVS $Revision$, $Date$ */ @@ -116,37 +111,22 @@ File file = new File((String) table.get(XMLTools.FILE_PATH)); InputStream fis = new FileInputStream(file); - // XML or Binary? Check XML prolog "<?xml ". - Resource resource; - byte[] prolog = new byte[6]; - fis.read(prolog); - fis = new FileInputStream(file); - if (new String(prolog).equals("<?xml ")) { - // Parse in XML using Xerces - SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance(); - spf.setNamespaceAware(true); - - XMLReader reader = spf.newSAXParser().getXMLReader(); - StringSerializer ser = new StringSerializer(null); - reader.setContentHandler(ser); - reader.setProperty("http://xml.org/sax/properties/lexical-handler", ser); - reader.parse(new InputSource(fis)); - fis.close(); - - // Create the XMLResource and store the document - resource = col.createResource((String) table.get(XMLTools.NAME_OF), - "XMLResource"); - resource.setContent(ser.toString()); - col.storeResource(resource); - } else { - resource = col.createResource((String) table.get(XMLTools.NAME_OF), - "BinaryResource"); - byte[] data = new byte[fis.available()]; - fis.read(data); - resource.setContent(data); - col.storeResource(resource); - } - + // Parse in XML using Xerces + SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance(); + spf.setNamespaceAware(true); + + XMLReader reader = spf.newSAXParser().getXMLReader(); + StringSerializer ser = new StringSerializer(null); + reader.setContentHandler(ser); + reader.setProperty("http://xml.org/sax/properties/lexical-handler", ser); + reader.parse(new InputSource(fis)); + fis.close(); + + // Create the XMLResource and store the document + Resource resource = col.createResource((String) table.get(XMLTools.NAME_OF), + "XMLResource"); + resource.setContent(ser.toString()); + col.storeResource(resource); System.out.println("Added document " + table.get(XMLTools.COLLECTION) + "/" + resource.getId()); @@ -160,8 +140,4 @@ return true; } - } - - - 1.1 xml-xindice/java/src/org/apache/xindice/tools/command/AddResource.java Index: AddResource.java =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xindice" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999-2001, The dbXML * Group, L.L.C., http://www.dbxmlgroup.com. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * CVS $Id: AddResource.java,v 1.1 2004/01/15 14:23:20 vgritsenko Exp $ */ package org.apache.xindice.tools.command; import org.apache.xindice.tools.XMLTools; import org.xmldb.api.DatabaseManager; import org.xmldb.api.base.Collection; import org.xmldb.api.base.Resource; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Hashtable; /** * AddResource is designed to let the user add single binary resource * and/or multiple binary resources to any existing collection * within the current database. * * @version CVS $Revision: 1.1 $, $Date: 2004/01/15 14:23:20 $ */ public class AddResource extends Command { /** * Adds a resource to the collection */ public boolean execute(Hashtable table) throws Exception { Collection col = null; if (table.get(XMLTools.COLLECTION) == null) { System.out.println("ERROR : Collection and switch required"); return false; } if (table.get(XMLTools.FILE_PATH) == "") { System.out.println("ERROR : File path required"); return false; } try { // Create a collection instance String colstring = normalizeCollectionURI((String) table.get(XMLTools.COLLECTION), (String) table.get(XMLTools.LOCAL)); col = DatabaseManager.getCollection(colstring); if (col == null) { System.out.println("ERROR : Collection not found!"); return false; } // Read data File file = new File((String) table.get(XMLTools.FILE_PATH)); InputStream fis = new FileInputStream(file); byte[] data = new byte[fis.available()]; fis.read(data); fis.close(); // Create the BinaryResource and store the resource Resource resource = col.createResource((String) table.get(XMLTools.NAME_OF), "BinaryResource"); resource.setContent(data); col.storeResource(resource); System.out.println("Added resource " + table.get(XMLTools.COLLECTION) + "/" + resource.getId()); resource = null; } finally { if (col != null) { col.close(); } col = null; } return true; } } 1.6 +6 -1 xml-xindice/config/commands.xml Index: commands.xml =================================================================== RCS file: /home/cvs/xml-xindice/config/commands.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- commands.xml 5 Aug 2003 08:47:00 -0000 1.5 +++ commands.xml 15 Jan 2004 14:23:20 -0000 1.6 @@ -54,6 +54,11 @@ class="org.apache.xindice.tools.command.AddDocument" helpclass="document" description="Adds a document" /> + <command switch="ar" + name="add_resource" + class="org.apache.xindice.tools.command.AddResource" + helpclass="document" + description="Adds a resource" /> <command switch="addmultiple" name="add_multiple_documents" class="org.apache.xindice.tools.command.AddMultipleDocuments"