This repository has been archived on 2025-12-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tcommon-studio-se/main/plugins/org.talend.librariesmanager/resources/java/routines/system/DocumentLookupCache.java

148 lines
3.1 KiB
Java

package routines.system;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* now for unique match result & first match
* for tXMLMap
* @author Administrator
*
*/
public class DocumentLookupCache {
private LookupCache cache;
public DocumentLookupCache(String matchingMode) {
if("UNIQUE_MATCH".equals(matchingMode)) {
cache = new UniqueLookupCache();
} else if("FIRST_MATCH".equals(matchingMode)) {
cache = new FirstLookupCache();
} else if("ALL_MATCHES".equals(matchingMode) || "ALL_ROWS".equals(matchingMode)) {
cache = new AllMatchLookupCache();
}
}
public void put(List<Object> key,Map<String,Object> value) {
cache.put(key, value);
}
public void lookup(List<Object> key) {
cache.lookup(key);
}
public boolean hasNext() {
return cache.hasNext();
}
public Map<String,Object> next() {
return cache.next();
}
abstract class LookupCache {
protected boolean hasNext = false;
protected Map<String,Object> currentValue;
abstract void put(List<Object> key,Map<String,Object> value);
abstract void lookup(List<Object> key);
abstract boolean hasNext();
abstract Map<String,Object> next();
}
/**
* for unique match
* @author Administrator
*
*/
class UniqueLookupCache extends LookupCache {
private Map<List<Object>,Map<String,Object>> uniqueMap = new HashMap<List<Object>,Map<String,Object>>();
@Override
void put(List<Object> key,Map<String,Object> value) {
uniqueMap.put(key,value);
}
@Override
void lookup(List<Object> key) {
currentValue = uniqueMap.get(key);
hasNext = currentValue != null ? true : false;
}
@Override
boolean hasNext() {
return hasNext;
}
@Override
Map<String, Object> next() {
return currentValue;
}
}
/**
* for first match
* it seems that is is the same with UniqueLookupCache,because they are all for only one resultset
* @author Administrator
*
*/
class FirstLookupCache extends LookupCache {
private Map<List<Object>,Map<String,Object>> uniqueMap = new HashMap<List<Object>,Map<String,Object>>();
@Override
void put(List<Object> key,Map<String,Object> value) {
uniqueMap.put(key,value);
}
@Override
void lookup(List<Object> key) {
currentValue = uniqueMap.get(key);
hasNext = currentValue != null ? true : false;
}
@Override
boolean hasNext() {
return hasNext;
}
@Override
Map<String, Object> next() {
return currentValue;
}
}
class AllMatchLookupCache extends LookupCache {
//private Map<List<Object>,Map<String,Object>> uniqueMap = new HashMap<List<Object>,Map<String,Object>>();
@Override
void put(List<Object> key, Map<String, Object> value) {
// TODO Auto-generated method stub
}
@Override
void lookup(List<Object> key) {
// TODO Auto-generated method stub
}
@Override
boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
@Override
Map<String, Object> next() {
// TODO Auto-generated method stub
return null;
}
}
}