/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: ServerResponse.java,v 1.1 2005/05/11 17:48:20 rampil Exp $
 */
package org.logical_paradox.httpd;

import java.util.Iterator;

/**
 * サーバーからクライアントに対して送信するデータを保持するオブジェクト
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class ServerResponse {
	/** レスポンスヘッダ */
	private final ResponseHeader header;
	/** 送信対象のデータ */
	private String data;

	/**
	 * コンストラクタ
	 * @param responseHeader レスポンスヘッダ
	 * @param d データ
	 */
	public ServerResponse(ResponseHeader responseHeader, String d) {
		header = responseHeader;
		data = d;
	}
	/**
	 * 送信対象のデータを返す
	 * @return 送信対象のデータ
	 */
	public String getData() {
		return data;
	}
	/**
	 * レスポンスヘッダを追加する
	 * @param key ヘッダ文字列
	 * @param value ヘッダ値
	 */
	public void put(String key, String value) {
		header.put(key, value);
	}
	/**
	 * レスポンスヘッダを削除する
	 * @param key ヘッダ文字列
	 */
	public void remove(String key) {
		header.remove(key);
	}
	/**
	 * レスポンスヘッダを返す
	 * @return レスポンスヘッダ
	 */
	public ResponseHeader getResponseHeader() {
		return header;
	}
	/**
	 * HTTPステータスコードとしての文字列を返す
	 * @return HTTPステータスコード(文字列表現)
	 */
	public String getHttpStatusCode() {
		return header.getHttpStatusCode();
	}
	/**
	 * HTTPステータスコードを付け直す
	 * @param statusCode HTTPステータスコード
	 */
	public void setHttpStatusCode(int statusCode) {
		header.setResponseCode(statusCode);
	}
	/**
	 * ヘッダ文字列にアクセスするためのイテレータを返す
	 * @return イテレータ
	 */
	public Iterator headers() {
		return header.iteratorHeader();
	}
}
