%PDF- %PDF-
| Direktori : /home/waritko/yacy/source/net/yacy/cora/federate/yacy/ |
| Current File : //home/waritko/yacy/source/net/yacy/cora/federate/yacy/CacheStrategy.java |
/**
* CacheStrategy
* Copyright 2011 by Michael Peter Christen
* First released 2011 at http://yacy.net
*
* 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 program in the file lgpl21.txt
* If not, see <http://www.gnu.org/licenses/>.
*/
package net.yacy.cora.federate.yacy;
public enum CacheStrategy {
/** Never use the cache, all content from fresh internet source. */
NOCACHE(0),
/** Use the cache if the cache exists and is fresh using the
* proxy-fresh rules.
*/
IFFRESH(1),
/** Use the cache if the cache exists. Do not check freshness. Otherwise
* use online source.
*/
IFEXIST(2),
/** Never go online, use all content from cache. If no cache entry exist,
* consider content nevertheless as available
*/
CACHEONLY(3),
/** create a snippet that does not necessarily contain the searched word,
* but has a pretty description of the content instead
*/
NIFTY(4);
/** the fifth case may be that the CacheStrategy object is assigned NULL.
* That means that no snippet creation is wanted.
*/
public int code;
private CacheStrategy(final int code) {
this.code = code;
}
@Override
public String toString() {
return Integer.toString(this.code);
}
public static CacheStrategy decode(final int code) {
for (final CacheStrategy strategy: CacheStrategy.values()) if (strategy.code == code) return strategy;
return NOCACHE;
}
public static CacheStrategy parse(final String name) {
if (name == null || name.length() == 0) return null;
if (name.equals("nocache")) return NOCACHE;
if (name.equals("iffresh")) return IFFRESH;
if (name.equals("ifexist")) return IFEXIST;
if (name.equals("cacheonly")) return CACHEONLY;
if (name.equals("nifty")) return NIFTY;
if (name.equals("true")) return IFEXIST;
if (name.equals("false")) return null; // if this cache strategy is assigned as query attribute, null means "do not create a snippet"
return null;
}
public String toName() {
return name().toLowerCase();
}
public boolean isAllowedToFetchOnline() {
return this.code < 3;
}
public boolean mustBeOffline() {
return this.code == 3;
}
}