package com.k_int.ciim.ui.resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.k_int.ciim.data.hdo.CIIMMediaDataHDO;
import com.k_int.ciim.ui.json.MediaJSON;
import com.k_int.ciim.ui.kernel.MediaQueryCore;
import com.sun.jersey.api.view.ImplicitProduces;
import com.sun.jersey.api.view.Viewable;

@XmlRootElement
@ImplicitProduces("text/html;qs=5") //for FireFox?
@XmlAccessorType(XmlAccessType.FIELD)
@Path("/resources/media/{id}")
public class MediaResource extends AbstractResource
{
	@SuppressWarnings("unused")
	@XmlTransient
	private static Log log = LogFactory.getLog(MediaResource.class);
	@XmlTransient
	private MediaQueryCore mqc;

	/* App Context setters */
	public void setMediaQueryCore(MediaQueryCore mqc) { this.mqc = mqc;	}
	 
	public MediaResource(){;}
	
	@GET
	@Produces({MediaType.TEXT_HTML,MediaType.APPLICATION_XHTML_XML})
	public Viewable getHtml(@PathParam("id") Long id) 
	{
		return new Viewable("index",this);
	}
	
	@GET
	@Produces("application/json")
	public MediaJSON getJson(@PathParam("id") Long id) 
	{	
		MediaJSON retval = null;
		
		CIIMMediaDataHDO hdo = mqc.get(id);
		
		if(hdo != null)
		{
			retval = new MediaJSON(hdo);
		}
		
		return retval;
	}
}
