Package org.exist.xmldb.concurrent.action

Source Code of org.exist.xmldb.concurrent.action.ValueAppendAction

/*
*  eXist Open Source Native XML Database
*  Copyright (C) 2001-04 The eXist Project
*  http://exist-db.org
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU Lesser General Public License
*  as published by the Free Software Foundation; either version 2
*  of the License, or (at your option) any later version.
*  This program 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 Lesser General Public License for more details.
*  You should have received a copy of the GNU Lesser General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*  $Id$
*/
package org.exist.xmldb.concurrent.action;

import junit.framework.Assert;

import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.ResourceSet;
import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.modules.XPathQueryService;
import org.xmldb.api.modules.XUpdateQueryService;

/**
* @author wolf
*/
public class ValueAppendAction extends Action {

    private static final String REMOVE =
        "<xu:modifications xmlns:xu=\"http://www.xmldb.org/xupdate\" version=\"1.0\">"
        + "<xu:remove select=\"//item[last()]\">"
        + "</xu:remove>"
        + "</xu:modifications>";
   
    public ValueAppendAction(String collectionPath, String resourceName) {
    super(collectionPath, resourceName);
  }
   
    /* (non-Javadoc)
     * @see org.exist.xmldb.test.concurrent.Action#execute()
     */
    public boolean execute() throws Exception {
        Collection col = DatabaseManager.getCollection(collectionPath, "admin", null);
    XUpdateQueryService service = (XUpdateQueryService)
      col.getService("XUpdateQueryService", "1.0");
    XPathQueryService query = (XPathQueryService)
        col.getService("XPathQueryService", "1.0");
    append(service);
    query(query);
        remove(service);
        return false;
    }

    private void remove(XUpdateQueryService service) throws XMLDBException {
    System.out.println(Thread.currentThread().getName() + ": removing elements ...");
    for(int i = 0; i < 10; i++)
      service.update(REMOVE);
  }
   
    private void append(XUpdateQueryService service) throws Exception {
    final String updateOpen =
      "<xu:modifications xmlns:xu=\"http://www.xmldb.org/xupdate\" version=\"1.0\">" +
      "<xu:append select=\"/items\" child=\"1\">";
    final String updateClose =
      "</xu:append>" +
      "</xu:modifications>";
    System.out.println(Thread.currentThread().getName() + ": inserting elements ...");
    for (int i = 0; i < 10; i++) {
      String update = updateOpen +
        "<item id=\"" + i + "\"><name>abcdefg</name>" +
        "<value>" + (44.53 + i) + "</value></item>"
        + updateClose;
      service.update(update);
    }
  }
   
    private void query(XPathQueryService service) throws Exception {
        ResourceSet result = service.queryResource(resourceName, "/items/item[value = 44.53]");
        Assert.assertEquals(1, result.getSize());
        result = service.queryResource(resourceName, "/items/item[@id=1]/name[.='abcdefg']/text()");
        Assert.assertEquals(1, result.getSize());
        Assert.assertEquals("abcdefg", result.getResource(0).getContent().toString());
       
    }
}
TOP

Related Classes of org.exist.xmldb.concurrent.action.ValueAppendAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.