All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.webdav.lib.BaseProperty Maven / Gradle / Ivy

The newest version!
/*
 * $Header: /home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/BaseProperty.java,v 1.5 2004/08/02 15:45:49 unico Exp $
 * $Revision: 1.5 $
 * $Date: 2004/08/02 15:45:49 $
 *
 * ====================================================================
 *
 * Copyright 1999-2002 The Apache Software Foundation 
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package org.apache.webdav.lib;

import java.io.StringWriter;
import java.util.List;

import org.apache.webdav.lib.util.DOMUtils;
import org.apache.webdav.lib.util.PropertyWriter;
import org.jdom.input.DOMBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.w3c.dom.Element;

/**
 * This interface models a DAV property.
 *
 * @version $Revision: 1.5 $
 */
public class BaseProperty implements Property {


    // ----------------------------------------------------------- Constructors


    /**
     * Default constructor for the property.
     */
    public BaseProperty(ResponseEntity response, Element element) {
        this.element = element;
        this.response = response;
    }


    // ----------------------------------------------------- Instance Variables


    /**
     * Associated response entity.
     */
    protected ResponseEntity response;


    /**
     * Associated node element.
     */
    protected Element element;


    // --------------------------------------------------------- Public Methods


    /**
     * This method returns the full name of the property.  Thus, for example,
     * calling this method on a property such as
     * <D:getlastmodified>Tue, 05 Dec 2000
     * 05:25:02</D:getlastmodified> returns
     * D:getlastmodified.
     */
    public String getName() {
        return element.getTagName();
    }


    /**
     * This method returns the local name of the property.  Thus, for example,
     * calling this method on a property such as
     * <D:getlastmodified>Tue, 05 Dec 2000
     * 05:25:02</D:getlastmodified> returns
     * getlastmodified.
     */
    public String getLocalName() {
        return DOMUtils.getElementLocalName(element);
    }


    /**
     * This method returns the namespace of the property.  Thus, for example,
     * calling this method on a property such as
     * <D:getlastmodified>Tue, 05 Dec 2000
     * 05:25:02</D:getlastmodified> returns
     * DAV:.
     */
    public String getNamespaceURI() {
        return DOMUtils.getElementNamespaceURI(element);
    }


    /**
     * This method returns the property as a DOM Element.
     */
    public Element getElement() {
        return element;
    }


    /**
     * This method returns the value of the property.  Thus, for example,
     * calling this method on a property such as
     * <D:getlastmodified>Tue, 05 Dec 2000
     * 05:25:02</D:getlastmodified> returns
     * Tue, 05 Dec 2000 05:25:02.
* Note: Mixed content (text and xml together) will not be returned * accurately. */ public String getPropertyAsString() { StringBuffer text = new StringBuffer(); DOMBuilder builder = new DOMBuilder(); XMLOutputter outputter = new XMLOutputter( Format.getPrettyFormat() ); org.jdom.Element e = builder.build( element ); List children = e.getChildren(); if ( children.size() > 0 ) { text.append( outputter.outputString( children ) ); } text.append( e.getTextTrim() ); return text.toString(); } /** * This method returns the status code associated with the property. */ public int getStatusCode() { // A response can have multiple propstat elements each with // their own status, return the (mandatory) status before asking // the resoponse for its status // // // /slide/files/ // // files // HTTP/1.1 200 OK // // // files // HTTP/1.1 200 OK // // // Element status = DOMUtils.getFirstElement(element.getParentNode().getParentNode(),"DAV:", "status"); if (status != null) { return DOMUtils.parseStatus(DOMUtils.getTextValue(status)); } return response.getStatusCode(); } /** * This method returns URL file path of the resource to which this * property belongs. */ public String getOwningURL() { return response.getHref(); } /** * Get a String representation of the property. */ public String toString () { StringWriter tmp = new StringWriter(); PropertyWriter propertyWriter = new PropertyWriter(tmp, true); propertyWriter.print(element); return tmp.getBuffer().toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy