package org.limewire.ui.swing.search;
import java.util.Collections;
import java.util.Map;
import org.limewire.core.api.FilePropertyKey;
import org.limewire.core.api.search.SearchCategory;
import org.limewire.ui.swing.util.I18n;
public class DefaultSearchInfo implements SearchInfo {
private final String title;
private final String query;
private final SearchCategory searchCategory;
private final SearchType searchType;
private final Map<FilePropertyKey, String> advancedSearch;
/** Creates a new SearchInfo for the given single keyword search. */
public static DefaultSearchInfo createKeywordSearch(String query, SearchCategory searchCategory) {
return new DefaultSearchInfo(query, query, Collections.<FilePropertyKey, String>emptyMap(), searchCategory, SearchType.KEYWORD);
}
/** Creates a new SearchInfo for the given advanced search. */
public static DefaultSearchInfo createAdvancedSearch(String title, Map<FilePropertyKey, String> advancedSearch, SearchCategory searchCategory) {
return new DefaultSearchInfo(title, "", advancedSearch, searchCategory, SearchType.KEYWORD);
}
public static DefaultSearchInfo createBrowseSearch(SearchType type){
assert(type.isBrowse());
return new DefaultSearchInfo("", "", Collections.<FilePropertyKey, String>emptyMap(), SearchCategory.ALL, type);
}
/** Creates a new SearchInfo for the given What's New search. */
public static DefaultSearchInfo createWhatsNewSearch(SearchCategory searchCategory) {
String title;
switch(searchCategory) {
case AUDIO: title = I18n.tr("New audio"); break;
case DOCUMENT: title = I18n.tr("New documents"); break;
case IMAGE: title = I18n.tr("New images"); break;
case PROGRAM: title = I18n.tr("New programs"); break;
case VIDEO: title = I18n.tr("New videos"); break;
case OTHER:
case ALL:
default: title = I18n.tr("New files"); break;
}
return new DefaultSearchInfo(title, null, Collections.<FilePropertyKey, String>emptyMap(), searchCategory, SearchType.WHATS_NEW);
}
private DefaultSearchInfo(String title, String query, Map<FilePropertyKey, String> advancedSearch, SearchCategory searchCategory, SearchType searchType) {
this.title = title;
this.query = query;
this.advancedSearch = advancedSearch;
this.searchCategory = searchCategory;
this.searchType = searchType;
}
@Override
public String getSearchQuery() {
return query;
}
@Override
public Map<FilePropertyKey, String> getAdvancedDetails() {
return advancedSearch;
}
@Override
public String getTitle() {
return title;
}
@Override
public SearchCategory getSearchCategory() {
return searchCategory;
}
@Override
public SearchType getSearchType() {
return searchType;
}
}