/*
* This file is part of the Wayback archival access software
* (http://archive-access.sourceforge.net/projects/wayback/).
*
* Licensed to the Internet Archive (IA) by one or more individual
* contributors.
*
* The IA licenses this file to You 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.archive.wayback.core;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.archive.wayback.util.Timestamp;
/**
*
*
* @author brad
* @version $Date$, $Revision$
*/
public class CaptureSearchResults extends SearchResults {
/**
* List of UrlSearchResult objects for index records matching a query
*/
private ArrayList<CaptureSearchResult> results =
new ArrayList<CaptureSearchResult>();
private CaptureSearchResult closest = null;
/**
* 14-digit timestamp of first capture date contained in the SearchResults
*/
private String firstResultTimestamp;
/**
* 14-digit timestamp of last capture date contained in the SearchResults
*/
private String lastResultTimestamp;
/**
* @return Returns the 14-digit String Timestamp of the first Capture in
* this set of SearchResult objects
*/
public String getFirstResultTimestamp() {
return firstResultTimestamp;
}
/**
* @return Returns the firstResult Date.
*/
public Date getFirstResultDate() {
return new Timestamp(firstResultTimestamp).getDate();
}
/**
* @return Returns the 14-digit String Timestamp of the last Capture in
* this set of SearchResult objects
*/
public String getLastResultTimestamp() {
return lastResultTimestamp;
}
public Date getLastResultDate() {
return new Timestamp(lastResultTimestamp).getDate();
}
/**
* append a result
* @param result
*/
public void addSearchResult(CaptureSearchResult result) {
addSearchResult(result,true);
}
/**
* add a result to this results, at either the begginning or at the end,
* depending on the append argument
* @param result
* SearchResult to add to this set
* @param append
*/
public void addSearchResult(CaptureSearchResult result, boolean append) {
String resultDate = result.getCaptureTimestamp();
if((firstResultTimestamp == null) ||
(firstResultTimestamp.compareTo(resultDate) > 0)) {
firstResultTimestamp = resultDate;
}
if((lastResultTimestamp == null) ||
(lastResultTimestamp.compareTo(resultDate) < 0)) {
lastResultTimestamp = resultDate;
}
if(append) {
results.add(result);
} else {
results.add(0,result);
}
}
public boolean isEmpty() {
return results.isEmpty();
}
public List<CaptureSearchResult> getResults() {
return results;
}
public Iterator<CaptureSearchResult> iterator() {
return results.iterator();
}
public int size() {
return results.size();
}
/**
* @param closest the closest to set
*/
public void setClosest(CaptureSearchResult closest) {
this.closest = closest;
}
/**
* @return the closest
*/
public CaptureSearchResult getClosest() {
return closest;
}
}