/*
* © Copyright IBM Corp. 2014
*
* 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 com.ibm.sbt.services.rest.atom;
import static com.ibm.sbt.services.client.base.ConnectionsConstants.nameSpaceCtx;
import java.util.Date;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import com.ibm.commons.xml.DOMUtil;
import com.ibm.commons.xml.XMLException;
import com.ibm.commons.xml.xpath.XPathExpression;
import com.ibm.sbt.services.client.base.AtomXPath;
import com.ibm.sbt.services.client.base.datahandlers.XmlDataHandler;
/**
* @author mwallace
*
*/
public class AtomEntry {
private XmlDataHandler dataHandler;
/**
* Construct an AtomEntity instance.
*
* @param node
*/
public AtomEntry(Node node) {
XPathExpression xpath = (node instanceof Document) ? (XPathExpression)AtomXPath.singleEntry.getPath() : null;
dataHandler = new XmlDataHandler(node, nameSpaceCtx, xpath);
}
/**
* Return the String value from the ATOM entry document using the given xpath expression
*
* @method getAsString
* @param xpath
* @return {String}
*/
public String getAsString(String xpath){
return dataHandler.getAsString(xpath);
}
/**
* Return the Long value from the ATOM entry document using the given xpath expression
*
* @method getAsLong
* @param xpath
* @return {Long}
*/
public Long getAsLong(String xpath){
return dataHandler.getAsLong(xpath);
}
/**
* Return the int value from the ATOM entry document using the given xpath expression
*
* @method getAsInt
* @param xpath
* @return {int}
*/
public int getAsInt(String xpath){
return dataHandler.getAsInt(xpath);
}
/**
* Return the Float value from the ATOM entry document using the given xpath expression
*
* @method getAsFloat
* @param xpath
* @return {Float}
*/
public Float getAsFloat(String xpath){
return dataHandler.getAsFloat(xpath);
}
/**
* Return the String[] value from the ATOM entry document using the given xpath expression
*
* @method getAsArray
* @param xpath
* @return {String[]} array
*/
public String[] getAsArray(String xpath){
return dataHandler.getAsArray(xpath);
}
/**
* Return the Date value from the ATOM entry document using the given xpath expression
*
* @method getAsDate
* @param xpath
* @return {Date}
*/
public Date getAsDate(String xpath){
return dataHandler.getAsDate(xpath);
}
/**
* Return the boolean value from the ATOM entry document using the given xpath expression
*
* @method getAsBoolean
* @param xpath
* @return {boolean}
*/
public boolean getAsBoolean(String xpath){
return dataHandler.getAsBoolean(xpath);
}
/**
* Return the value of id from ATOM entry document.
*
* @method getId
* @return {String} ID of the ATOM entry
*/
public String getId() {
return dataHandler.getAsString(AtomXPath.id);
}
/**
* Return the value of title from ATOM entry document.
*
* @method getTitle
* @return {String} ATOM entry title
*/
public String getTitle() {
return dataHandler.getAsString(AtomXPath.title);
}
/**
* Return the value of summary from ATOM entry document.
*
* @method getSummary
* @return {String} ATOM entry summary
*/
public String getSummary() {
return dataHandler.getAsString(AtomXPath.summary);
}
/**
* Return the value of subtitle from ATOM entry document.
*
* @method getSubtitle
* @return {String} ATOM entry subtitle
*/
public String getSubtitle() {
return dataHandler.getAsString(AtomXPath.subtitle);
}
/**
* Return the content from ATOM entry document.
*
* @method getContent
* @return {Object} Content
*/
public String getContent() {
return dataHandler.getAsString(AtomXPath.content);
}
// /**
// * Gets a author from ATOM entry document.
// *
// * @method getAuthor
// * @return {Person} author of the ATOM entry document
// */
// public Person getAuthor() {
// return new Person(null, new XmlDataHandler((Node)dataHandler.getData(),
// ConnectionsConstants.nameSpaceCtx, (XPathExpression)AtomXPath.author.getPath()));
// }
//
// /**
// * Gets a contributor from ATOM entry document.
// *
// * @method getContributor
// * @return {Person} contributor of the ATOM entry document
// */
// public Person getContributor() {
// return new Person(null, new XmlDataHandler((Node)dataHandler.getData(),
// ConnectionsConstants.nameSpaceCtx, (XPathExpression)AtomXPath.contributor.getPath()));
// }
/**
* Return the published date from ATOM entry document.
*
* @method getPublished
* @return {Date} Published date of the ATOM entry document
*/
public Date getPublished() {
try {
return dataHandler.getAsDate(AtomXPath.published);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* Return the last updated date from ATOM entry document.
*
* @method getUpdated
* @return {Date} Last updated date of the ATOM entry document
*/
public Date getUpdated() {
try {
return dataHandler.getAsDate(AtomXPath.updated);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* Return the alternate url of the ATOM entry document.
*
* @method getAlternateUrl
* @return {String} Alternate url
*/
public String getAlternateUrl() {
return dataHandler.getAsString(AtomXPath.alternateUrl);
}
/**
* Return the self url of the ATOM entry document.
*
* @method getSelfUrl
* @return {String} Self url
*/
public String getSelfUrl() {
return dataHandler.getAsString(AtomXPath.selfUrl);
}
/**
* Return the edit url of the ATOM entry document.
*
* @method getEditUrl
* @return {String} Edit url
*/
public String getEditUrl() {
return dataHandler.getAsString(AtomXPath.editUrl);
}
/**
* Return XML string for the Atom entity.
*
* @return {String}
* @throws XMLException
*/
public String toXmlString() throws XMLException {
return DOMUtil.getXMLString(dataHandler.getData());
}
}