package ogloszenia.rest;

import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;

import javax.servlet.ServletContext;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;

import ogloszenia.model.OgloszenieSamochodowe;
import ogloszenia.xsl.WsparcieXSL;

// To była przejściowa wersja obsługująca tylko pojedyncze ogłoszenia
// Typ OgloszenieSamochodowe był wpisany w generyka

// @Provider
public class PDFWriter_ObslugaJednegoOgloszenia implements MessageBodyWriter<OgloszenieSamochodowe> {
	private static final MediaType APPLICATION_PDF = new MediaType("application", "pdf");

	@Context
	private ServletContext servletContext;
	
	@Override
	public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
		return (type == OgloszenieSamochodowe.class)
				&& APPLICATION_PDF.equals(mediaType);
	}

	@Override
	public void writeTo(OgloszenieSamochodowe obiekt, Class<?> type, Type genericType, Annotation[] annotations,
			MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
			throws IOException, WebApplicationException {

		WsparcieXSL wsparcieXSL = new WsparcieXSL(servletContext);
		wsparcieXSL.wypiszPDF(obiekt, entityStream);
	}

	@Override
	public long getSize(OgloszenieSamochodowe obiekt, Class<?> type, Type genericType, Annotation[] annotations,
			MediaType mediaType) {
		return -1;
	}
}
