package com.akjava.gwt.lib.client.storage;
import java.util.ArrayList;
import java.util.List;
import com.akjava.gwt.lib.client.IStorageControler;
import com.akjava.gwt.lib.client.StorageException;
import com.akjava.lib.common.utils.ValuesUtils;
public class MultiStorageControler implements IStorageControler{
public List<IStorageControler> controlers=new ArrayList<IStorageControler>();
public List<IStorageControler> getControlers() {
return controlers;
}
public void setControlers(List<IStorageControler> controlers) {
this.controlers = controlers;
}
@Override
public boolean isAvailable() {
if(controlers.size()==0){
return false;
}
for(IStorageControler controler:controlers){
if(!controler.isAvailable()){
return false;
}
}
return true;
}
@Override
public void setValue(String key, String value) throws StorageException {
if(controlers.size()==0){
throw new StorageException("empty controlers");
}
for(IStorageControler controler:controlers){
controler.setValue(key, value);
}
}
@Override
public void setValue(String key, int value) throws StorageException {
if(controlers.size()==0){
throw new StorageException("empty controlers");
}
for(IStorageControler controler:controlers){
controler.setValue(key, value);
}
}
@Override
public void removeValue(String key) throws StorageException {
if(controlers.size()==0){
throw new StorageException("empty controlers");
}
for(IStorageControler controler:controlers){
controler.removeValue(key);
}
}
@Override
public int getValue(String key, int defaultValue) throws StorageException {
String value=getValue(key,""+defaultValue);
return ValuesUtils.toInt(value, defaultValue);
}
@Override
public String getValue(String key, String defaultValue) throws StorageException {
if(controlers.size()==0){
throw new StorageException("empty controlers");
}
String first=controlers.get(0).getValue(key,defaultValue);
/*
for(int i=1;i<controlers.size();i++){
String value=controlers.get(i).getValue(key, defaultValue);
if(!Objects.equal(first, value)){
//can't error stop anything
//LogUtils.log("difference value:key="+key+",firstValue="+first+",invalid="+value);
}
}
*/
return first;
}
}