package edu.vt.marian.common;

import java.io.*;
import java.net.*;
import java.util.*;


/**
 *	An Analyzable Digital Information Object is a DigInfObj with important aspects
 *		that can be presented as attribute-value pairs.  Any DigInfObj
 *		with associated metadata, for instance, fills this bill.
 *		<P>
 *		This model of a document with attributes is new in v.2.1,
 *		and while we break it in, I've designed two approaches to 
 *		getting the same data.  The first uses two calls:  one
 *		to report on the attributes available, and the other to
 *		get a value for a particular attribute.
 *		<P>
 *		The other approach consists of a single
 *		presentAttributes() method.  presentAttributes() returns a set of
 *		attribute-value pairs for use in explicating the object to a user,
 *		e.g. with an Envision visualization.  Each object in the Vector
 *		returned is itself a two-element Vector made up of first the name of
 *		the attribute as a String and second the value as an Object.  All
 *		objects in any class implementing this interface should return the
 *		same class of Objects for any given attribute.  We then expect clients
 *		to use 'instanceof' to determine whether those values are (e.g.) 
 *		Integers, Doubles or Strings.
 *
 *	@author	Robert France.
 */
public interface AnalyzableDigInfObj extends DigInfObj
{
	public Vector attributes();
	public Object presentAttribute(int attrID, int markupType);
	public Vector presentAttributes(int markupType);
}

