001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/ogcwebservices/csw/discovery/SearchStatus.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.ogcwebservices.csw.discovery;
045:
046: import java.util.Date;
047:
048: import org.deegree.framework.util.TimeTools;
049: import org.deegree.ogcwebservices.InvalidParameterValueException;
050:
051: /**
052: * Class representation of a <csw:SearchStatus>-element.
053: *
054: * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
055: * @author <a href="mailto:tfr@users.sourceforge.net">Torsten Friebe </a>
056: * @author <a href="mailto:tfr@users.sourceforge.net">Markus Schneider </a>
057: *
058: * @author last edited by: $Author: apoth $
059: *
060: * @version 2.0, $Revision: 9345 $, $Date: 2007-12-27 08:22:25 -0800 (Thu, 27 Dec 2007) $
061: */
062: public class SearchStatus {
063:
064: private static final String[] STATES = { "complete", "subset",
065: "interim", "processing", "none" };
066:
067: private String status;
068:
069: private Date timestamp;
070:
071: /**
072: *
073: *
074: */
075: private SearchStatus() {
076: this .timestamp = new Date(System.currentTimeMillis());
077: }
078:
079: /**
080: *
081: * @param status
082: */
083: SearchStatus(String status) {
084: this ();
085: for (int i = 0; i < STATES.length; i++) {
086: String aState = STATES[i];
087: if (aState.equalsIgnoreCase(status)) {
088: this .status = status;
089: }
090: }
091: }
092:
093: /**
094: *
095: * @param status
096: * @param timestamp
097: */
098: SearchStatus(String status, Date timestamp) {
099: this (status);
100: this .timestamp = timestamp;
101: }
102:
103: /**
104: * Create a new instance from status-String and timestamp-String.
105: *
106: * TODO: parse timestampString
107: *
108: * @param status
109: * @param timestampString
110: * @throws InvalidParameterValueException
111: */
112: SearchStatus(String status, String timestampString) {
113: this (status);
114: this .timestamp = TimeTools.createCalendar(timestampString)
115: .getTime();
116: }
117:
118: /**
119: * possible values are:
120: * <ul>
121: * <li>complete: The request was successfully completed and valid results are available or have
122: * been returned.
123: * <li>subset: The request was successfully completed and partial valid results are available
124: * or have been returned. In this case subsequest queries with new start positions may be used
125: * to see more results.
126: * <li>interim: The request was successfully completed and partial results are available or
127: * have been returned but the results may not be valid. For example, an intermediate server in a
128: * distributed search may have failed cause the partial, invalid result set to be generated.
129: * <li>processing: The request is still processing. When completed, the response will be sent
130: * to the specified response handler.
131: * <li>none: No records found.
132: * </ul>
133: *
134: * @return request processing status
135: */
136: public String getStatus() {
137: return this .status;
138: }
139:
140: /**
141: * @return datestamp of processing
142: */
143: public Date getTimestamp() {
144: return this.timestamp;
145: }
146:
147: }
|