2014년 2월 12일 수요일

SimpleDataBox

package my.util;

import java.util.ArrayList;

public interface DataBox {

public int on(String type, Object value);

public void off(String type, Object value);
public void off(String type, int index);
public void off(String type);
public void off();
public void trigger(String type);
public void trigger(String type, Object value);
public ArrayList<Object> get(String type);
public Object get(String type, Object value);

}






package my.util;

import java.util.ArrayList;
import java.util.HashMap;

public class SimpleDataBox implements DataBox{

protected HashMap<String, ArrayList<Object>> index = new HashMap<>();
@Override
public int on(String type, Object value) {
if(!index.containsKey(type)){
index.put(type, new ArrayList<Object>());
}
index.get(type).add(value);
return index.get(type).size();
}


@Override
public void off(String type, Object value) {
if(!index.containsKey(type)) return;
if(index.get(type).isEmpty()) return;
if(!index.get(type).contains(value)) return;
index.get(type).remove(value);
}

@Override
public void off(String type, int index) {
if(!this.index.containsKey(type)) return;
if(this.index.get(type).isEmpty()) return;
if(index >= this.index.get(type).size()) return;
this.index.get(type).remove(index);
}

@Override
public void off(String type) {
if(!index.containsKey(type)) return;
if(index.get(type).isEmpty()) return;
index.get(type).clear();
}


@Override
public void off() {
index.clear();
}


@Override
public void trigger(String type) {
if(!index.containsKey(type)) return;
for(int i=0, l=index.get(type).size(); i<l; ++i){
System.out.println(index.get(type).get(i).toString());
}
}

@Override
public void trigger(String type, Object value) {
if(!index.containsKey(type)) return;
if(!index.get(type).contains(value)) return;
System.out.println(value);
}

@Override
public ArrayList<Object> get(String type) {
return index.get(type);
}


@Override
public Object get(String type, Object value) {
if(!index.containsKey(type)) return null;
if(!index.get(type).contains(value)) return null;
return value;
}

}

댓글 없음:

댓글 쓰기