com.mycomm.itool.security.TagBasedFactorAccessManager Maven / Gradle / Ivy
The newest version!
package com.mycomm.itool.security;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class TagBasedFactorAccessManager implements FactorAccessManager{
private HashMap accessLists ;
private static final long WINDOW_SIZE = 100;
private static long ACTUAL_WINDOW_SIZE;
public TagBasedFactorAccessManager( long window_size) {
ACTUAL_WINDOW_SIZE = window_size;
accessLists = new HashMap();
}
public TagBasedFactorAccessManager() {
this(WINDOW_SIZE);
}
public void resetFactor() {
Set keys = accessLists.keySet();
for(String ky:keys){
accessLists.get(ky).reset();
}
}
public boolean testFactor(String key) {
if(!accessLists.containsKey(key)){
accessLists.put(key,new AccessCounter(1));
return true;
}
AccessCounter counter = accessLists.get(key);
if(counter.getCounter()<= ACTUAL_WINDOW_SIZE){
counter.increase();
return true;
}
counter.increase();
return false;
}
public long testValue(String key) {
AccessCounter counter = accessLists.get(key);
if(counter == null){
return 0;
}
return counter.getCounter();
}
}