/**
* @file BookSearchInfo.java
*
* @revision: none
*
* @version 0.0.01
* @author: Zenki (zhajun), zenki2001cn@163.com
* @date: 2011-7-1 上午10:43:59
*/
package com.easyview.ebook.reader.engine.model;
import java.util.ArrayList;
import java.util.List;
/**
* 搜索信息類.
*/
public class BookSearchInfo implements IBookSearchCursor {
/** The m search result list. */
private ArrayList<BookSearchResult> mSearchResultList;
/** The m search history. */
private ArrayList<String> mSearchHistory;
/** The m cur search pos. */
private int mCurSearchPos = -1;
/** The m has results. */
private boolean mHasResults = false;
/** The m last search key. */
private String mLastSearchKey;
/** The Constant SEARCH_HISTORY. */
static public final int SEARCH_HISTORY = 10;
/**
* Instantiates a new book search info.
*/
protected BookSearchInfo() {
init();
}
/**
* Inits the.
*/
protected void init() {
mSearchResultList = new ArrayList<BookSearchResult>();
mSearchHistory = new ArrayList<String>();
mCurSearchPos = -1;
mLastSearchKey = null;
}
/**
* The Class BookSearchResult.
*/
static public class BookSearchResult {
/** The text. */
public String text;
/** The start_pos. */
public String start_pos;
/** The end_pos. */
public String end_pos;
/**
* Instantiates a new search result.
*/
protected BookSearchResult() {
text = "";
start_pos = Book.VALUE_NULL;
end_pos = Book.VALUE_NULL;
}
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#setSearchKeyword(java.lang.String)
*/
public void setSearchKeyword(String key) {
mLastSearchKey = key;
if (mSearchHistory != null) {
if (mSearchHistory.size() >= SEARCH_HISTORY) {
mSearchHistory.remove(0);
}
mSearchHistory.add(key);
}
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#getSearchKeyword()
*/
public String getSearchKeyword() {
return mLastSearchKey;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#getSeachHistory()
*/
public List<String> getSeachHistory() {
return mSearchHistory;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#resetResults()
*/
public void resetResults() {
if (mSearchResultList != null) {
mSearchResultList.clear();
}
mCurSearchPos = -1;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#addResults(com.easyview.ebook.jni.SearchResult[])
*/
public void addResults(BookSearchResult[] results) {
if ((results != null) && results.length > 0) {
for (BookSearchResult searchResult : results) {
mSearchResultList.add(searchResult);
}
}
if (mSearchResultList.size() > 0) {
mHasResults = true;
} else {
mHasResults = false;
}
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#getResults()
*/
public List<BookSearchResult> getResults() {
return mSearchResultList;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#hasResults()
*/
public boolean hasResults() {
return mHasResults;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#getNextResult()
*/
public BookSearchResult getNextResult() {
int nextPos = mCurSearchPos + 1;
BookSearchResult result = null;
if (hasResults() && (nextPos < mSearchResultList.size())) {
result = mSearchResultList.get(nextPos);
mCurSearchPos++;
}
return result;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#getPreResult()
*/
public BookSearchResult getPreResult() {
int prePos = mCurSearchPos - 1;
BookSearchResult result = null;
if (hasResults() && (prePos >= 0)) {
result = mSearchResultList.get(prePos);
mCurSearchPos--;
} else {
mCurSearchPos = 0;
}
return result;
}
/* (non-Javadoc)
* @see com.easyview.ebook.reader.engine.model.IBookSearchCursor#moveCursorToEnd()
*/
@Override
public void moveCursorToEnd() {
if (hasResults()) {
mCurSearchPos = mSearchResultList.size() - 1;
}
}
}