//$Header: /home/deegree/jail/deegreerepository/deegree/src/org/deegree/ogcwebservices/wmps/XMLFactory.java,v 1.24 2006/08/23 10:21:12 deshmukh Exp $ /*---------------- FILE HEADER ------------------------------------------ This file is part of deegree. Copyright (C) 2001-2006 by: EXSE, Department of Geography, University of Bonn http://www.giub.uni-bonn.de/deegree/ lat/lon GmbH http://www.lat-lon.de This library 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.1 of the License, or (at your option) any later version. This library 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 library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: Andreas Poth lat/lon GmbH Aennchenstr. 19 53115 Bonn Germany E-Mail: poth@lat-lon.de Prof. Dr. Klaus Greve Department of Geography University of Bonn Meckenheimer Allee 166 53115 Bonn Germany E-Mail: greve@giub.uni-bonn.de ---------------------------------------------------------------------------*/ package org.deegree.ogcwebservices.wmps; import java.io.IOException; import java.net.URL; import java.util.Date; import org.deegree.datatypes.xlink.SimpleLink; import org.deegree.framework.log.ILogger; import org.deegree.framework.log.LoggerFactory; import org.deegree.framework.xml.NamespaceContext; import org.deegree.framework.xml.XMLParsingException; import org.deegree.framework.xml.XMLTools; import org.deegree.model.metadata.iso19115.Address; import org.deegree.model.metadata.iso19115.Keywords; import org.deegree.model.metadata.iso19115.Phone; import org.deegree.model.spatialschema.Envelope; import org.deegree.ogcbase.CommonNamespaces; import org.deegree.ogcwebservices.getcapabilities.DCPType; import org.deegree.ogcwebservices.getcapabilities.HTTP; import org.deegree.ogcwebservices.getcapabilities.MetadataURL; import org.deegree.ogcwebservices.getcapabilities.Operation; import org.deegree.ogcwebservices.getcapabilities.ServiceIdentification; import org.deegree.ogcwebservices.getcapabilities.ServiceProvider; import org.deegree.ogcwebservices.wmps.capabilities.WMPSCapabilities; import org.deegree.ogcwebservices.wmps.capabilities.WMPSCapabilitiesDocument; import org.deegree.ogcwebservices.wmps.capabilities.WMPSOperationsMetadata; import org.deegree.ogcwebservices.wmps.operation.PrintMapResponse; import org.deegree.ogcwebservices.wmps.operation.PrintMapResponseDocument; import org.deegree.ogcwebservices.wms.capabilities.Attribution; import org.deegree.ogcwebservices.wms.capabilities.AuthorityURL; import org.deegree.ogcwebservices.wms.capabilities.DataURL; import org.deegree.ogcwebservices.wms.capabilities.Dimension; import org.deegree.ogcwebservices.wms.capabilities.Extent; import org.deegree.ogcwebservices.wms.capabilities.FeatureListURL; import org.deegree.ogcwebservices.wms.capabilities.Identifier; import org.deegree.ogcwebservices.wms.capabilities.Layer; import org.deegree.ogcwebservices.wms.capabilities.LayerBoundingBox; import org.deegree.ogcwebservices.wms.capabilities.LegendURL; import org.deegree.ogcwebservices.wms.capabilities.LogoURL; import org.deegree.ogcwebservices.wms.capabilities.ScaleHint; import org.deegree.ogcwebservices.wms.capabilities.Style; import org.deegree.ogcwebservices.wms.capabilities.StyleSheetURL; import org.deegree.ogcwebservices.wms.capabilities.StyleURL; import org.deegree.ogcwebservices.wms.capabilities.UserDefinedSymbolization; import org.deegree.owscommon.OWSDomainType; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.xml.sax.SAXException; /** * Helper class to create WMPS responses. * * @author <a href="mailto:deshmukh@lat-lon.de">Anup Deshmukh</a> * @version 2.0 * */ public class XMLFactory extends org.deegree.owscommon.XMLFactory { private static final ILogger LOG = LoggerFactory.getLogger( XMLFactory.class ); private static NamespaceContext nsContext = CommonNamespaces.getNamespaceContext(); /** * Exports a <code>WMPSCapabilities</code> instance to a <code>WMPSCapabilitiesDocument</code>. * * @param capabilities * @return DOM representation of the <code>WMPSCapabilities</code> * @throws IOException * if XML template could not be loaded */ public static WMPSCapabilitiesDocument export( WMPSCapabilities capabilities ) throws IOException { LOG.entering(); WMPSCapabilitiesDocument capabilitiesDocument = new WMPSCapabilitiesDocument(); try { capabilitiesDocument.createEmptyDocument(); Element root = capabilitiesDocument.getRootElement(); root.setAttribute( "version", capabilities.getVersion() ); appendService( root, capabilities.getServiceIdentification(), capabilities.getServiceProvider() ); String xPath = "./Capability"; appendUserDefinedSymbolization( (Element) XMLTools.getNode( root, xPath, nsContext ), capabilities.getUserDefinedSymbolization() ); appendCapabilityRequests( root, (WMPSOperationsMetadata) capabilities.getOperationMetadata() ); appendCapabilityLayer( (Element) XMLTools.getNode( root, "./Capability", nsContext ), capabilities.getLayer() ); } catch ( SAXException e ) { LOG.logError( e.getMessage(), e ); } catch ( XMLParsingException e ) { LOG.logError( e.getMessage(), e ); } LOG.exiting(); return capabilitiesDocument; } /** * Append User defined symbolization. * * @param root * @param uds */ protected static void appendUserDefinedSymbolization( Element root, UserDefinedSymbolization uds ) { LOG.entering(); Element elem = XMLTools.appendElement( root, null, "UserDefinedSymbolization" ); elem.setAttribute( "SupportSLD", Boolean.toString( uds.isSldSupported() ) ); elem.setAttribute( "UserLayer", Boolean.toString( uds.isUserLayerSupported() ) ); elem.setAttribute( "UserStyle", Boolean.toString( uds.isUserStyleSupported() ) ); elem.setAttribute( "RemoteWFS", Boolean.toString( uds.isRemoteWFSSupported() ) ); LOG.exiting(); } /** * Append service element * * @param root * @param identification * @param provider * @throws XMLParsingException */ protected static void appendService( Element root, ServiceIdentification identification, ServiceProvider provider ) throws XMLParsingException { LOG.entering(); root = (Element) XMLTools.getRequiredNode( root, "./Service", nsContext ); Node node = XMLTools.getRequiredNode( root, "./Name", nsContext ); XMLTools.setNodeValue( (Element) node, identification.getTitle() ); node = XMLTools.getRequiredNode( root, "./Title", nsContext ); XMLTools.setNodeValue( (Element) node, identification.getTitle() ); String serviceAbstract = identification.getAbstract(); if ( serviceAbstract != null ) { XMLTools.appendElement( root, null, "Abstract", serviceAbstract ); } Keywords[] keywords = identification.getKeywords(); if ( keywords.length > 0 ) { String[] kw = keywords[0].getKeywords(); Element kwl = XMLTools.appendElement( root, null, "KeywordList" ); for ( int i = 0; i < kw.length; i++ ) { XMLTools.appendElement( kwl, null, "Keyword", kw[i] ); } } node = XMLTools.getRequiredNode( root, "./OnlineResource", nsContext ); SimpleLink sLink = provider.getProviderSite(); ( (Element) node ).setAttribute( "xlink:href", sLink.getHref().toASCIIString() ); appendContactInformation( root, provider ); if ( identification.getFees() != null ) { XMLTools.appendElement( root, null, "Fees", identification.getFees() ); } else { XMLTools.appendElement( root, null, "Fees", "none" ); } if ( identification.getAccessConstraints().length > 0 ) { XMLTools.appendElement( root, null, "AccessConstraints", identification.getAccessConstraints()[0] ); } else { XMLTools.appendElement( root, null, "AccessConstraints", "none" ); } LOG.exiting(); } /** * Append contact information * * @param root * @param provider */ protected static void appendContactInformation( Element root, ServiceProvider provider ) { LOG.entering(); Element ciNode = XMLTools.appendElement( root, null, "ContactInformation" ); Element cppNode = XMLTools.appendElement( ciNode, null, "ContactPersonPrimary" ); if ( provider.getIndividualName() != null ) { XMLTools.appendElement( cppNode, null, "ContactPerson", provider.getIndividualName() ); } if ( provider.getProviderName() != null ) { XMLTools.appendElement( cppNode, null, "ContactOrganization", provider.getProviderName() ); } if ( provider.getPositionName() != null ) { XMLTools.appendElement( ciNode, null, "ContactPosition", provider.getPositionName() ); } Element caNode = XMLTools.appendElement( ciNode, null, "ContactAddress" ); XMLTools.appendElement( caNode, null, "AddressType", "postal" ); Address addr = provider.getContactInfo().getAddress(); String[] dp = addr.getDeliveryPoint(); if ( dp.length > 0 ) { XMLTools.appendElement( caNode, null, "Address", dp[0] ); } if ( addr.getCity() != null ) { XMLTools.appendElement( caNode, null, "City", addr.getCity() ); } if ( addr.getAdministrativeArea() != null ) { XMLTools.appendElement( caNode, null, "StateOrProvince", addr.getAdministrativeArea() ); } if ( addr.getPostalCode() != null ) { XMLTools.appendElement( caNode, null, "PostCode", addr.getPostalCode() ); } if ( addr.getCountry() != null ) { XMLTools.appendElement( caNode, null, "Country", addr.getCountry() ); } Phone phone = provider.getContactInfo().getPhone(); if ( phone.getVoice().length > 0 ) { XMLTools.appendElement( ciNode, null, "ContactVoiceTelephone", phone.getVoice()[0] ); } if ( phone.getFacsimile().length > 0 ) { XMLTools.appendElement( ciNode, null, "ContactFacsimileTelephone", phone.getFacsimile()[0] ); } if ( addr.getElectronicMailAddress().length > 0 ) { XMLTools.appendElement( ciNode, null, "ContactElectronicMailAddress", addr.getElectronicMailAddress()[0] ); } LOG.exiting(); } /** * Append capability element. * * @param root * @param operationsMetadata * @throws XMLParsingException */ protected static void appendCapabilityRequests( Element root, WMPSOperationsMetadata operationsMetadata ) throws XMLParsingException { LOG.entering(); root = (Element) XMLTools.getRequiredNode( root, "./Capability/Request", nsContext ); Operation[] ops = operationsMetadata.getOperations(); for ( int i = 0; i < ops.length; i++ ) { if ( ops[i] != null ) { appendOperation( root, ops[i] ); } } LOG.exiting(); } /** * Append Operations. * * @param root * @param operation */ protected static void appendOperation( Element root, Operation operation ) { LOG.entering(); String name = operation.getName(); root = XMLTools.appendElement( root, null, name ); OWSDomainType odt = operation.getParameter( "Format" ); String[] values = odt.getValues(); for ( int i = 0; i < values.length; i++ ) { XMLTools.appendElement( root, null, "Format", values[i] ); } DCPType[] dcps = operation.getDCPs(); for ( int i = 0; i < dcps.length; i++ ) { Element http = XMLTools.appendElement( root, null, "DCPType" ); http = XMLTools.appendElement( http, null, "HTTP" ); HTTP ht = (HTTP) dcps[i].getProtocol(); URL[] urls = ht.getGetOnlineResources(); appendURLs( http, urls, "Get" ); urls = ht.getPostOnlineResources(); appendURLs( http, urls, "Post" ); } LOG.exiting(); } /** * Append URLs * * @param http * @param urls * @param type */ protected static void appendURLs( Element http, URL[] urls, String type ) { for ( int j = 0; j < urls.length; j++ ) { Element olr = XMLTools.appendElement( http, null, type ); appendOnlineResource( olr, urls[j] ); } } /** * Append capability layer * * @param root * @param layer * @throws XMLParsingException */ protected static void appendCapabilityLayer( Element root, Layer layer ) throws XMLParsingException { LOG.entering(); root = XMLTools.appendElement( root, null, "Layer" ); root.setAttribute( "queryable", Boolean.toString( layer.isQueryable() ) ); root.setAttribute( "cascaded", Integer.toString( layer.getCascaded() ) ); root.setAttribute( "opaque", Boolean.toString( layer.isOpaque() ) ); root.setAttribute( "noSubsets", Boolean.toString( layer.hasNoSubsets() ) ); if ( layer.getFixedWidth() > 0 ) { root.setAttribute( "fixedWidth", Integer.toString( layer.getFixedWidth() ) ); } if ( layer.getFixedHeight() > 0 ) { root.setAttribute( "fixedHeight", Integer.toString( layer.getFixedHeight() ) ); } if ( layer.getName() != null ) { XMLTools.appendElement( root, null, "Name", layer.getName() ); } XMLTools.appendElement( root, null, "Title", layer.getTitle() ); if ( layer.getAbstract() != null ) { XMLTools.appendElement( root, null, "Abstract", layer.getAbstract() ); } String[] keywords = layer.getKeywordList(); if ( keywords.length > 0 ) { Element elem = XMLTools.appendElement( root, null, "KeywordList" ); for ( int i = 0; i < keywords.length; i++ ) { XMLTools.appendElement( elem, null, "Keyword", keywords[i] ); } } String[] srs = layer.getSrs(); for ( int i = 0; i < srs.length; i++ ) { XMLTools.appendElement( root, null, "SRS", srs[i] ); } Envelope llBox = layer.getLatLonBoundingBox(); appendLatLonBoundingBox( root, llBox ); LayerBoundingBox[] lBoxes = layer.getBoundingBoxes(); for ( int i = 0; i < lBoxes.length; i++ ) { appendLayerBoundingBox( root, lBoxes[i] ); } Dimension[] dims = layer.getDimension(); for ( int i = 0; i < dims.length; i++ ) { appendDimension( root, dims[i] ); } Extent[] extents = layer.getExtent(); for ( int i = 0; i < extents.length; i++ ) { appendExtent( root, extents[i] ); } Attribution attr = layer.getAttribution(); if ( attr != null ) { appendAttribution( root, attr ); } AuthorityURL[] authorityURLs = layer.getAuthorityURL(); for ( int i = 0; i < authorityURLs.length; i++ ) { appendAuthorityURL( root, authorityURLs[i] ); } Identifier[] identifiers = layer.getIdentifier(); for ( int i = 0; i < identifiers.length; i++ ) { appendIdentifier( root, identifiers[i] ); } MetadataURL[] metadataURLs = layer.getMetadataURL(); for ( int i = 0; i < metadataURLs.length; i++ ) { appendMetadataURL( root, metadataURLs[i] ); } DataURL[] dataURLs = layer.getDataURL(); for ( int i = 0; i < dataURLs.length; i++ ) { appendDataURL( root, dataURLs[i] ); } FeatureListURL[] featureListURLs = layer.getFeatureListURL(); for ( int i = 0; i < featureListURLs.length; i++ ) { appendFeatureListURL( root, featureListURLs[i] ); } Style[] styles = layer.getStyles(); for ( int i = 0; i < styles.length; i++ ) { appendStyle( root, styles[i] ); } ScaleHint scaleHint = layer.getScaleHint(); Element elem = XMLTools.appendElement( root, null, "ScaleHint" ); elem.setAttribute( "min", "" + scaleHint.getMin() ); elem.setAttribute( "max", "" + scaleHint.getMax() ); Layer[] layers = layer.getLayer(); for ( int i = 0; i < layers.length; i++ ) { appendCapabilityLayer( root, layers[i] ); } LOG.exiting(); } /** * Append style * * @param root * @param style */ protected static void appendStyle( Element root, Style style ) { LOG.entering(); root = XMLTools.appendElement( root, null, "Style" ); XMLTools.appendElement( root, null, "Name", style.getName() ); if ( style.getTitle() != null ) { XMLTools.appendElement( root, null, "Title", style.getTitle() ); } if ( style.getAbstract() != null ) { XMLTools.appendElement( root, null, "Abstract", style.getAbstract() ); } LegendURL[] legendURLs = style.getLegendURL(); for ( int i = 0; i < legendURLs.length; i++ ) { appendLegendURL( root, legendURLs[i] ); } StyleSheetURL styleSheetURL = style.getStyleSheetURL(); if ( styleSheetURL != null ) { appendStyleSheetURL( root, styleSheetURL ); } StyleURL styleURL = style.getStyleURL(); if ( styleURL != null ) { appendStyleURL( root, styleURL ); } LOG.exiting(); } /** * Append Style URL * * @param root * @param styleURL * */ protected static void appendStyleURL( Element root, StyleURL styleURL ) { Element elem = XMLTools.appendElement( root, null, "StyleURL" ); XMLTools.appendElement( elem, null, "Format", styleURL.getFormat() ); appendOnlineResource( elem, styleURL.getOnlineResource() ); } /** * Append Style sheet. * * @param root * @param styleSheetURL */ protected static void appendStyleSheetURL( Element root, StyleSheetURL styleSheetURL ) { Element elem = XMLTools.appendElement( root, null, "StyleSheetURL" ); XMLTools.appendElement( elem, null, "Format", styleSheetURL.getFormat() ); appendOnlineResource( elem, styleSheetURL.getOnlineResource() ); } /** * Append legend url. * * @param root * @param legendURL */ protected static void appendLegendURL( Element root, LegendURL legendURL ) { Element elem = XMLTools.appendElement( root, null, "LegendURL" ); elem.setAttribute( "width", "" + legendURL.getWidth() ); elem.setAttribute( "height", "" + legendURL.getWidth() ); XMLTools.appendElement( elem, null, "Format", legendURL.getFormat() ); appendOnlineResource( elem, legendURL.getOnlineResource() ); } /** * Append feature list url. * * @param root * @param featureListURL */ protected static void appendFeatureListURL( Element root, FeatureListURL featureListURL ) { Element elem = XMLTools.appendElement( root, null, "FeatureListURL" ); XMLTools.appendElement( elem, null, "Format", featureListURL.getFormat() ); appendOnlineResource( elem, featureListURL.getOnlineResource() ); } /** * Append data url. * * @param root * @param dataURL */ protected static void appendDataURL( Element root, DataURL dataURL ) { Element elem = XMLTools.appendElement( root, null, "DataURL" ); XMLTools.appendElement( elem, null, "Format", dataURL.getFormat() ); appendOnlineResource( elem, dataURL.getOnlineResource() ); } /** * Append metadata url. * * @param root * @param metadataURL */ protected static void appendMetadataURL( Element root, MetadataURL metadataURL ) { Element elem = XMLTools.appendElement( root, null, "MetadataURL" ); elem.setAttribute( "type", metadataURL.getType() ); XMLTools.appendElement( elem, null, "Format", metadataURL.getFormat() ); appendOnlineResource( elem, metadataURL.getOnlineResource() ); } /** * Append identifiers. * * @param root * @param identifier */ protected static void appendIdentifier( Element root, Identifier identifier ) { Element elem = XMLTools.appendElement( root, null, "Identifier" ); elem.setAttribute( "authority", identifier.getAuthority() ); XMLTools.setNodeValue( elem, identifier.getValue() ); } /** * Append authority url. * * @param root * @param authorityURL */ protected static void appendAuthorityURL( Element root, AuthorityURL authorityURL ) { Element elem = XMLTools.appendElement( root, null, "AuthorityURL" ); elem.setAttribute( "name", authorityURL.getName() ); appendOnlineResource( elem, authorityURL.getOnlineResource() ); } /** * Append attribution url. * * @param root * @param attr */ protected static void appendAttribution( Element root, Attribution attr ) { Element elem = XMLTools.appendElement( root, null, "Attribution" ); XMLTools.appendElement( elem, null, "Title", attr.getTitle() ); appendOnlineResource( elem, attr.getOnlineResource() ); LogoURL logoURL = attr.getLogoURL(); if ( logoURL != null ) { elem = XMLTools.appendElement( elem, null, "LogoURL" ); elem.setAttribute( "width", "" + logoURL.getWidth() ); elem.setAttribute( "height", "" + logoURL.getHeight() ); XMLTools.appendElement( elem, null, "Format", logoURL.getFormat() ); appendOnlineResource( elem, logoURL.getOnlineResource() ); } } /** * Append online resource. * * @param root * @param url */ protected static void appendOnlineResource( Element root, URL url ) { Element olr = XMLTools.appendElement( root, null, "OnlineResource" ); olr.setAttribute( "xlink:type", "simple" ); olr.setAttribute( "xlink:href", url.toExternalForm() ); } /** * Apppend extent. * * @param root * @param extent */ protected static void appendExtent( Element root, Extent extent ) { Element exNode = XMLTools.appendElement( root, null, "Extent" ); exNode.setAttribute( "name", extent.getName() ); exNode.setAttribute( "default", extent.getDefault() ); exNode.setAttribute( "nearestValue", Boolean.toString( extent.useNearestValue() ) ); XMLTools.setNodeValue( exNode, extent.getValue() ); } /** * Append dimension. * * @param root * @param dim */ protected static void appendDimension( Element root, Dimension dim ) { Element dimNode = XMLTools.appendElement( root, null, "Dimension" ); dimNode.setAttribute( "name", dim.getName() ); dimNode.setAttribute( "units", dim.getUnits() ); dimNode.setAttribute( "unitSymbol", dim.getUnitSymbol() ); } /** * Append layer bounding box. * * @param root * @param lBox */ protected static void appendLayerBoundingBox( Element root, LayerBoundingBox lBox ) { Element bbNode = XMLTools.appendElement( root, null, "BoundingBox" ); bbNode.setAttribute( "minx", "" + lBox.getMin().getX() ); bbNode.setAttribute( "miny", "" + lBox.getMin().getY() ); bbNode.setAttribute( "maxx", "" + lBox.getMax().getX() ); bbNode.setAttribute( "maxy", "" + lBox.getMax().getY() ); bbNode.setAttribute( "resx", "" + lBox.getResx() ); bbNode.setAttribute( "resy", "" + lBox.getResy() ); bbNode.setAttribute( "SRS", "" + lBox.getSRS() ); } /** * Append lat-lon bounding box. * * @param root * @param llBox */ protected static void appendLatLonBoundingBox( Element root, Envelope llBox ) { Element bbNode = XMLTools.appendElement( root, null, "LatLonBoundingBox" ); bbNode.setAttribute( "minx", "" + llBox.getMin().getX() ); bbNode.setAttribute( "miny", "" + llBox.getMin().getY() ); bbNode.setAttribute( "maxx", "" + llBox.getMax().getX() ); bbNode.setAttribute( "maxy", "" + llBox.getMax().getY() ); } /** * Export the print map initial response document. * * @param response * @return PrintMapResponseDocument * @throws XMLParsingException * */ public static PrintMapResponseDocument export( PrintMapResponse response ) throws XMLParsingException { LOG.entering(); PrintMapResponseDocument document = new PrintMapResponseDocument( null ); try { document.createEmptyDocument(); Element root = document.getRootElement(); root.setAttribute( "id", response.getId() ); appendEmailAddress( root, response.getEmailAddress() ); appendTimeStamp( root, response.getTimeStamp() ); String exception = response.getException(); String message = response.getMessage(); if ( exception != null ) { message = message + " " + exception; } appendMessage( root, message ); appendExpectedTime( root, response.getExpectedTime() ); } catch ( SAXException e ) { LOG.logError( e.getMessage(), e ); } catch ( IOException e ) { LOG.logError( e.getMessage(), e ); } LOG.exiting(); return document; } /** * Append email address. * * @param root * @param emailAddress * @throws XMLParsingException */ private static void appendEmailAddress( Element root, String emailAddress ) throws XMLParsingException { LOG.entering(); Node node; try { node = XMLTools.getRequiredNode( root, "deegreewmps:EmailAddress", nsContext ); } catch ( XMLParsingException e ) { throw new XMLParsingException( "Error getting node 'deegreewmps:EmailAddress'. " + "Please check the WMPSInitialResponseTemplate " + "to confirm its presence." ); } XMLTools.setNodeValue( (Element) node, emailAddress ); LOG.exiting(); } /** * Append expected processing time. * * @param root * @param expectedTime * @throws XMLParsingException */ private static void appendExpectedTime( Element root, Date expectedTime ) throws XMLParsingException { LOG.entering(); Node node; try { node = XMLTools.getRequiredNode( root, "deegreewmps:ExpectedProcessingTime", nsContext ); } catch ( XMLParsingException e ) { throw new XMLParsingException( "Error getting node " + "'deegreewmps:expectedProcessingTime'. " + "Please check the WMPSInitialResponseTemplate " + "to confirm its presence." ); } XMLTools.setNodeValue( (Element) node, expectedTime.toString() ); LOG.exiting(); } /** * Append message to be displayed to the user. * * @param root * @param message * @throws XMLParsingException */ private static void appendMessage( Element root, String message ) throws XMLParsingException { LOG.entering(); Node node; try { node = XMLTools.getRequiredNode( root, "deegreewmps:Message", nsContext ); } catch ( XMLParsingException e ) { throw new XMLParsingException( "Error getting node 'deegreewmps:message'. " + "Please check the WMPSInitialResponseTemplate " + "to confirm its presence." ); } XMLTools.setNodeValue( (Element) node, message ); LOG.exiting(); } /** * Append time stamp. * * @param root * @param timeStamp * @throws XMLParsingException */ private static void appendTimeStamp( Element root, Date timeStamp ) throws XMLParsingException { LOG.entering(); Node node; try { node = XMLTools.getRequiredNode( root, "deegreewmps:Timestamp", nsContext ); } catch ( XMLParsingException e ) { throw new XMLParsingException( "Error getting node 'deegreewmps:timestamp'. " + "Please check the WMPSInitialResponseTemplate " + "to confirm its presence." ); } XMLTools.setNodeValue( (Element) node, timeStamp.toString() ); LOG.exiting(); } } /*************************************************************************************************** * Changes to this class. What the people have been up to: $Log: XMLFactory.java,v $ * Changes to this class. What the people have been up to: Revision 1.24 2006/08/23 10:21:12 deshmukh * Changes to this class. What the people have been up to: detailed response messages in case of exception added. * Changes to this class. What the people have been up to: Changes to this * class. What the people have been up to: Revision 1.23 2006/08/10 07:11:35 deshmukh Changes to * this class. What the people have been up to: WMPS has been modified to support the new * configuration changes and the excess code not needed has been replaced. Changes to this class. * What the people have been up to: Changes to this class. What the people have been up to: Revision * 1.22 2006/08/01 13:41:47 deshmukh Changes to this class. What the people have been up to: The * wmps configuration has been modified and extended. Also fixed the javadoc. Changes to this class. * What the people have been up to: Revision 1.21 2006/07/20 13:24:12 deshmukh Removed a few * floating bugs. * * Revision 1.20 2006/07/12 14:46:16 poth comment footer added * **************************************************************************************************/