package simple.escp.data;
import simple.escp.exception.InvalidPlaceholder;
/**
* A <code>DataSource</code> is used to supply value when filling a <code>Report</code>.
*/
public interface DataSource {
/**
* Check if this <code>DataSource</code> contains certain member name.
*
* @param member the member that will be verified.
* @return <code>true</code> if this <code>DataSource</code> contains member.
*/
public boolean has(String member);
/**
* Retrieve value for a member from this <code>DataSource</code>.
*
* @param member the member that will be retrieved. This <code>DataSource</code> must have the specified
* member.
* @return an object that represent the member value.
* @throws simple.escp.exception.InvalidPlaceholder if member doesn't exists or can't retrieve the member value.
*/
public Object get(String member) throws InvalidPlaceholder;
/**
* Retrieve the source value of this <code>DataSource</code>.
*
* @return source value of this <code>DataSource</code>.
*/
public Object getSource();
/**
* Retrieve all member of this <code>DataSource</code>.
*
* @return all member of this <code>DataSource</code> or empty array if no member is available.
*/
public String[] getMembers();
}