package com.belladati.sdk.view.impl;
import java.net.URISyntaxException;
import org.apache.http.client.utils.URIBuilder;
import com.belladati.sdk.exception.InternalConfigurationException;
import com.belladati.sdk.impl.BellaDatiServiceImpl;
import com.belladati.sdk.util.PageOrientation;
import com.belladati.sdk.util.PageSize;
import com.belladati.sdk.view.export.ViewExport;
import com.belladati.sdk.view.export.ViewExportType;
import com.belladati.sdk.view.export.ViewExporter;
/**
* This class exports view to various export types {@link ViewExportType}
*
* @author Pavol Kovac
*/
public final class ViewExporterImpl implements ViewExporter {
private final BellaDatiServiceImpl service;
private final String viewId;
public ViewExporterImpl(BellaDatiServiceImpl service, String viewId) {
this.service = service;
this.viewId = viewId;
}
@Override
public String getId() {
return viewId;
}
@Override
public ViewExport exportPdf(PageSize pageSize, PageOrientation pageOrientation) {
ViewExport viewExport = new ViewExport();
try {
URIBuilder builder = new URIBuilder("api/reports/views/" + viewId + "/export/pdf");
if (pageSize != null) {
builder.addParameter("pageSize", pageSize.name());
}
if (pageOrientation != null) {
builder.addParameter("pageOrientation", pageOrientation.name());
}
viewExport.setViewId(viewId);
viewExport.setExportType(ViewExportType.PDF);
viewExport.setInputStream(this.service.getAsStream(builder.build().toString()));
} catch (URISyntaxException e) {
throw new InternalConfigurationException("Invalid URI", e);
}
return viewExport;
}
@Override
public ViewExport exportPng(Integer width, Integer height) {
ViewExport viewExport = new ViewExport();
try {
URIBuilder builder = new URIBuilder("api/reports/views/" + viewId + "/image");
if (width != null) {
builder.addParameter("width", width.toString());
}
if (height != null) {
builder.addParameter("height", height.toString());
}
viewExport.setViewId(viewId);
viewExport.setExportType(ViewExportType.PNG);
viewExport.setInputStream(this.service.getAsStream(builder.build().toString()));
} catch (URISyntaxException e) {
throw new InternalConfigurationException("Invalid URI", e);
}
return viewExport;
}
}