Commit 469aa517 by Patryk Czarnik

PDFWriter - wersja dla jednego produktu

parent f9f065c4
package sklep.rest.ext;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import jakarta.servlet.ServletContext;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyWriter;
import jakarta.ws.rs.ext.Provider;
import sklep.model.Product;
@Provider
public class PDFWriter implements MessageBodyWriter<Product> {
private static final MediaType PDF_TYPE = new MediaType("application", "pdf");
@Context
private ServletContext servletContext;
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return type == Product.class && PDF_TYPE.isCompatible(mediaType);
}
@Override
public void writeTo(Product product, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, OutputStream output)
throws IOException, WebApplicationException {
ObslugaXSL obslugaXSL = new ObslugaXSL(servletContext);
obslugaXSL.wypiszPDF(product, output);
}
}
package sklep.rest.ext;
import java.util.List;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import sklep.db.DBConnection;
import sklep.db.DBException;
import sklep.db.ProductDAO;
import sklep.db.RecordNotFound;
import sklep.model.Product;
@Path("/products.pdf")
@Produces("application/pdf")
public class RProductsPDF {
@GET
public List<Product> readAll() throws DBException {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
return productDAO.readAll();
}
}
@GET
@Path("/{id}")
public Product readOne(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO();
return productDAO.findById(productId);
}
}
}
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
border-color="#2233AA"> border-color="#2233AA">
<fo:block font-weight="bold" font-size="14pt" <fo:block font-weight="bold" font-size="14pt"
margin-bottom="1em" color="#FF2244"> margin-bottom="1em" color="#FF2244">
<xsl:apply-templates select="product-name" /> <xsl:apply-templates select="name" />
</fo:block> </fo:block>
<fo:block font-weight="bold" color="green"> <fo:block font-weight="bold" color="green">
<xsl:text>Cena: </xsl:text> <xsl:text>Cena: </xsl:text>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment