Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.xmlcalabash.extensions.marklogic;
  
 import  com.marklogic.xcc.*;
 import  com.marklogic.xcc.types.*;
 import  com.marklogic.xcc.types.XdmItem;
 
 import java.net.URI;
 import java.io.*;
 
Created by IntelliJ IDEA. User: ndw Date: Nov 4, 2008 Time: 11:24:59 AM To change this template use File | Settings | File Templates.
 
 public class XCCInsertDocument extends DefaultStep {
     private static final QName _user = new QName("","user");
     private static final QName _password = new QName("","password");
     private static final QName _host = new QName("","host");
     private static final QName _port = new QName("","port");
     private static final QName _contentBase = new QName("","content-base");
     private static final QName _bufferSize = new QName("","buffer-size");
     private static final QName _collections = new QName("","collections");
     private static final QName _format = new QName("","format");
     private static final QName _language = new QName("","language");
     private static final QName _locale = new QName("","locale");
     private static final QName _uri = new QName("","uri");
     private static final QName _encoding = new QName("encoding");
     private static final QName _auth_method = new QName("auth-method");
 
     private ReadablePipe source = null;
     private WritablePipe result = null;

    
Creates a new instance of Identity
 
     public XCCInsertDocument(XProcRuntime runtimeXAtomicStep step) {
         super(runtime,step);
     }
 
     public void setInput(String portReadablePipe pipe) {
          = pipe;
     }
 
     public void setOutput(String portWritablePipe pipe) {
          = pipe;
     }
 
     public void reset() {
         .resetReader();
         .resetWriter();
     }
 
     public void run() throws SaxonApiException {
         super.run();
 
         String host = getOption("");
         int port = getOption(, 0);
         String user = getOption("");
         String password = getOption("");
         String contentBase = getOption("");
 
         String format = "xml";
         if (getOption() != null) {
             format = getOption().getString();
         }
         if (!"xml".equals(format) && !"text".equals(format) && !"binary".equals(format)) {
             throw new UnsupportedOperationException("Format must be 'xml', 'text', or 'binary'.");
         }
 
         XdmNode doc = .read();
         XdmNode root = S9apiUtils.getDocumentElement(doc);
 
         String docstring = null;
         byte[] docbinary = null;
 
         if ("xml".equals(format)) {
            Serializer serializer = makeSerializer();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            serializer.setOutputStream(stream);
            S9apiUtils.serialize(docserializer);
            try {
                docstring = stream.toString("UTF-8");
            } catch (UnsupportedEncodingException uee) {
                // This can't happen...
                throw new XProcException(uee);
            }
        } else if ("text".equals(format)) {
            docstring = doc.getStringValue();
        } else {
            if ("base64".equals(root.getAttributeValue())) {
                docbinary = Base64.decode(doc.getStringValue());
            } else if (root.getAttributeValue() == null) {
                docstring = root.getStringValue();
            } else {
                throw new UnsupportedOperationException("Binary content must be base64 encoded.");
            }
        }
        ContentCreateOptions options = ContentCreateOptions.newXmlInstance();
        if ("xml".equals(format)) {
            options.setFormatXml();
            options.setEncoding("UTF-8");
        }
        if ("text".equals(format)) {
            options.setFormatText();
            options.setEncoding("UTF-8");
        }
        if ("binary".equals(format)) {
            options.setFormatBinary();
        }
        if (getOption() != null) {
            options.setBufferSize(getOption().getInt());
        }
        if (getOption() != null) {
            String[] collections = getOption().getString().split("\\s+");
            options.setCollections(collections);
        }
        if (getOption() != null) {
            options.setLanguage(getOption().getString());
        }
        if (getOption() != null) {
            String value = getOption().getString();
            Locale locale = new Locale(value);
            options.setLocale(locale);
        }
        String dburi = getOption().getString();
        Content content = null;
        if (docbinary == null) {
            content = ContentFactory.newContent(dburidocstringoptions);
        } else {
            content = ContentFactory.newContent(dburidocbinaryoptions);
        }
        ContentSource contentSource;
        try {
            if ("".equals(contentBase)) {
                contentSource = ContentSourceFactory.newContentSource(hostportuserpassword);
            } else {
                contentSource = ContentSourceFactory.newContentSource(hostportuserpasswordcontentBase);
            }
        } catch (Exception e) {
            throw new XProcException(e);
        }
        if ("basic".equals(getOption(""))) {
            contentSource.setAuthenticationPreemptive(true);
        }
        Session session;
        try {
            session = contentSource.newSession ();
            session.insertContent(content);
            session.close();
        } catch (Exception e) {
            throw new XProcException(e);
        }
        TreeWriter tree = new TreeWriter();
        tree.startDocument(.getNode().getBaseURI());
        tree.startContent();
        tree.addText(dburi);
        tree.addEndElement();
        tree.endDocument();
        .write(tree.getResult());
    }
New to GrepCode? Check out our FAQ X