package simple.escp.data;
import simple.escp.exception.InvalidPlaceholder;
import java.util.Map;
/**
* A <code>MapDataSource</code> is a <code>DataSource</code> that obtains its value from a <code>Map</code>.
*/
public class MapDataSource implements DataSource {
private Map<String, ?> source;
/**
* Create a new <code>MapDataSource</code>.
*
* @param source the <code>Map</code> that contains the value for this <code>DataSource</code>.
*/
public MapDataSource(Map<String, ? extends Object> source) {
this.source = source;
}
/**
* {@inheritDoc}
*/
@Override
public boolean has(String member) {
return source.containsKey(member);
}
/**
* {@inheritDoc}
*/
@Override
public Object get(String member) throws InvalidPlaceholder {
if (!has(member)) {
throw new InvalidPlaceholder("Can't find [" + member + "] in data source.");
}
return source.get(member);
}
/**
* {@inheritDoc}
*/
@Override
public Object getSource() {
return source;
}
/**
* {@inheritDoc}
*/
@Override
public String[] getMembers() {
return source.keySet().toArray(new String[0]);
}
}