package org.greenstone.p2p;

import java.util.*;

public class AbstractClientResponse implements ClientResponse
{ private boolean success;
  private Map     values;

  public AbstractClientResponse()
  { this.success = true;
    this.values  = new HashMap();
  }
  
  public boolean isSuccessful()
  { return this.success;
  }
  
  public void setSuccessful(boolean success)
  { this.success = success;
  }
  
  public void addValue(String label, String value)
  { if (this.values.get(label) == null)
    { this.setValue(label, value);
    }
    else
    { Vector set = (Vector) this.values.get(label);
      set.addElement(value);
    }
  }
  
  public void setValue(String label, String value)
  { Vector set = new Vector();
    set.addElement(value);
    this.values.put(label, set);
  }
  
  public Vector getValues(String label)
  { return (Vector) this.values.get(label);
  }

  public Set getLabels()
  { return this.values.keySet();
  }

  public String toString()
  { Iterator keys = this.values.keySet().iterator();

    StringBuffer buffer = new StringBuffer();

    while (keys.hasNext())
    { String key = keys.next().toString();

      buffer.append("  " +  key + ":\n");

      Vector vals = (Vector) this.values.get(key);
      Enumeration valist = vals.elements();
      while (valist.hasMoreElements())
	{ String nextVal = valist.nextElement().toString();

	  buffer.append("    ");
	  buffer.append(nextVal);
	  buffer.append("\n");
	}
    }
    return buffer.toString();
  }
}