/* $ID: $
 * Created on 14.08.2003
 */
package de.skyrix.zsp.logic.httpserver.modules;

import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import de.skyrix.zsp.logic.IdVersionPair;
import de.skyrix.zsp.logic.Proxy;
import de.skyrix.zsp.logic.httpserver.MethodModule;
import de.skyrix.zsp.logic.httpserver.Response;

/**Module to hande GET queries.
 * 
 * @author Burkhard Sell
 */
public class GetModule extends MethodModule {

	/**Returns "GET"
	 *  
	 * @see de.skyrix.zsp.logic.httpserver.MethodModule#getMethodName()
	 */
	public String getMethodName() {
		return "GET";
	}

	/**Processing the query.
	 * 
	 * @see de.skyrix.zsp.logic.httpserver.MethodModule#processQuery(java.lang.String, java.util.Properties, java.util.Properties, java.lang.String)
	 * @return the response object;
	 */
	public Response processQuery(
		String uri,
		Properties header,
		Properties parms,
		String body) {
      
      System.out.println("GET "+uri);

		Proxy proxy = Proxy.getInstance();
		if (proxy == null) {
			System.err.println("ERROR: No proxy instance found.");
			return null;
		}

		if (uri != null && uri.endsWith("getIDsAndVersions")) {
			try {
				List idvPairs =
					proxy.getIDsAndVersions(
						uri.substring(0, uri.length() - "getIDsAndVersions".length()));

				StringBuffer responseBody = null;
				if (idvPairs != null && !idvPairs.isEmpty()) {
					responseBody = new StringBuffer();
					Iterator idvPairIterator = idvPairs.iterator();
					while (idvPairIterator.hasNext()) {
						try {
							IdVersionPair idvPair = (IdVersionPair) idvPairIterator.next();
							responseBody.append(idvPair.getID());
							responseBody.append(':');
							responseBody.append(idvPair.getVersion());
							responseBody.append('\r');
							responseBody.append('\n');
						}
						catch (Exception e) {
						}
					}
					return prepareResponse(
						"200 Ok",
						"text/xml",
						responseBody.toString());
				}
			}
			catch (Exception e) {
				e.printStackTrace();
			}
		}

		return new Response("404 Not found", "text/html", (String) null);

	}

}
