package art.servers.rtzserver.reports;
|
|
import art.client.GUI.components.devices.window.colors.rtz.configuration.RTZ32_PanelConfiguration_Programs;
|
import art.client.GUI.components.devices.window.colors.rtz.configuration.RTZ32_PanelConfiguration_Programs_Program;
|
import art.client.GUI.components.devices.window.colors.rtz.configuration.components.Diagram_Distribution_Bars;
|
import art.client.GUI.components.devices.window.colors.rtz.configuration.components.Diagram_Distribution_Impulses;
|
import art.client.configuration.Configuration;
|
import art.library.gui.flat.FlatPanel;
|
import art.library.gui.flat.FlatSplitPane;
|
import art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller;
|
import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Report_Information;
|
import art.library.utils.resources.Resources;
|
import art.servers.ServerException;
|
import art.servers.rtzserver.Shared;
|
import java.awt.BorderLayout;
|
import java.awt.Component;
|
import java.awt.Dimension;
|
import java.awt.image.BufferedImage;
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.text.SimpleDateFormat;
|
import javax.imageio.ImageIO;
|
import javax.swing.JComponent;
|
import javax.swing.JWindow;
|
import org.apache.poi.ss.usermodel.ClientAnchor;
|
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
|
import org.apache.poi.xssf.usermodel.XSSFDrawing;
|
import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
public class Report_CCT_Juzgados extends XLSX
|
{
|
public Report_CCT_Juzgados(String language) throws Exception
|
{
|
this.language = language;
|
}
|
|
|
public byte[] generateCCT(String format, RTZ32_Report_Information reportInformation, RTZ32_Controller device) throws ServerException
|
{
|
byte[] data = null;
|
|
try
|
{
|
SimpleDateFormat sdfh = new SimpleDateFormat(Shared.getMessage(language, "dd/MM/yyyy HH:mm:ss"));
|
String filename = "data/" + Shared.getApplicationName() + "/templates/template_CCT." + language + ".xlsx";
|
File file = new File(filename);
|
if (file.exists() == false) file = Resources.getResourceFile(filename);
|
if (file.exists() == false) throw new ServerException("Template not found");
|
workbook = new XSSFWorkbook(new FileInputStream(new File(filename)));
|
|
XSSFSheet sheet = workbook.getSheetAt(0);
|
sheet.getRow(2).getCell(1).setCellValue(device.getDeviceInformation().name);
|
sheet.getRow(3).getCell(1).setCellValue(device.getDeviceInformation().location);
|
sheet.getRow(4).getCell(1).setCellValue(reportInformation.program.program);
|
sheet.getRow(5).getCell(1).setCellValue(reportInformation.program.description);
|
sheet.getRow(6).getCell(1).setCellValue(sdfh.format(reportInformation.program.creation));
|
|
|
// Add images
|
|
try
|
{
|
if (art.client.models.Shared.configuration == null)
|
{
|
art.client.models.Shared.configuration = new Configuration();
|
}
|
art.client.models.Shared.configuration.general.language = language;
|
art.client.models.Shared.configuration.lmessage = reportInformation.messages;
|
|
RTZ32_PanelConfiguration_Programs panelConfiguration_Programs = new RTZ32_PanelConfiguration_Programs(reportInformation.program.configuration);
|
RTZ32_PanelConfiguration_Programs_Program panelConfiguration_Programs_Program = (RTZ32_PanelConfiguration_Programs_Program)panelConfiguration_Programs.panelSelected;
|
panelConfiguration_Programs_Program.reload();
|
panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.reload();
|
panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.reevaluate();
|
Diagram_Distribution_Bars diagram_bars = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Bars;
|
diagram_bars.setSize(new Dimension(1920, 1080));
|
Diagram_Distribution_Impulses diagram_impulses = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Impulses;
|
diagram_impulses.setSize(new Dimension(1920, 1080));
|
FlatSplitPane splitPane = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.flatSplitPane1;
|
|
// diagram_bars.reevaluate();
|
diagram_bars.revalidate();
|
|
// RTZ32_Distribution distribution = new RTZ32_Distribution(device.getDeviceConfiguration().rtz32, reportInformation.program.program);
|
// Diagram_Distribution_Impulses diagram_Distribution_Impulses = new Diagram_Distribution_Impulses(device.getDeviceConfiguration().rtz32, reportInformation.program.program, distribution);
|
|
BufferedImage image = getImage(diagram_bars, diagram_impulses, splitPane, diagram_bars.getWidth(), diagram_bars.getHeight(), 1000);
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
ImageIO.write(image, "png", bos);
|
byte[] dataImage = bos.toByteArray();
|
bos.close();
|
image.flush();
|
image = null;
|
bos = null;
|
|
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
|
if (dataImage.length > 0)
|
{
|
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 0, 10, 25, 90);
|
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE); //0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
|
drawing.createPicture(anchor, workbook.addPicture(dataImage, workbook.PICTURE_TYPE_PNG));
|
}
|
}
|
catch (Exception e)
|
{
|
Shared.printstack("Reports", e);
|
}
|
|
workbook.setForceFormulaRecalculation(true);
|
XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
|
return saveAndClose(format);
|
}
|
catch (ServerException e)
|
{
|
throw e;
|
}
|
catch (Exception e)
|
{
|
throw new ServerException(e);
|
}
|
}
|
|
|
public byte[] generateJuzgados(String format, RTZ32_Report_Information reportInformation, RTZ32_Controller device) throws ServerException
|
{
|
byte[] data = null;
|
|
try
|
{
|
String filename = "data/" + Shared.getApplicationName() + "/templates/template_Juzgados." + language + ".xlsx";
|
File file = new File(filename);
|
if (file.exists() == false) file = Resources.getResourceFile(filename);
|
if (file.exists() == false) throw new ServerException("Template not found");
|
workbook = new XSSFWorkbook(new FileInputStream(new File(filename)));
|
|
XSSFSheet sheet = workbook.getSheetAt(0);
|
sheet.getRow(2).getCell(1).setCellValue(device.getDeviceInformation().name);
|
sheet.getRow(3).getCell(1).setCellValue(device.getDeviceInformation().location);
|
sheet.getRow(4).getCell(1).setCellValue(reportInformation.program.program);
|
|
|
// Add images
|
|
try
|
{
|
if (art.client.models.Shared.configuration == null)
|
{
|
art.client.models.Shared.configuration = new Configuration();
|
}
|
art.client.models.Shared.configuration.general.language = language;
|
art.client.models.Shared.configuration.lmessage = reportInformation.messages;
|
|
RTZ32_PanelConfiguration_Programs panelConfiguration_Programs = new RTZ32_PanelConfiguration_Programs(reportInformation.program.configuration);
|
RTZ32_PanelConfiguration_Programs_Program panelConfiguration_Programs_Program = (RTZ32_PanelConfiguration_Programs_Program)panelConfiguration_Programs.panelSelected;
|
panelConfiguration_Programs_Program.reload();
|
panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.reload();
|
panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.reevaluate();
|
Diagram_Distribution_Bars diagram_bars = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Bars;
|
diagram_bars.setSize(new Dimension(1920, 1080));
|
Diagram_Distribution_Impulses diagram_impulses = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Impulses;
|
diagram_impulses.setSize(new Dimension(1920, 1080));
|
FlatSplitPane splitPane = panelConfiguration_Programs_Program.panelConfiguration_Programs_Program_Distribution.diagram_Distribution.flatSplitPane1;
|
// diagram_bars.reevaluate();
|
diagram_bars.revalidate();
|
|
BufferedImage image = getImage(diagram_bars, diagram_impulses,splitPane, diagram_bars.getWidth(), diagram_bars.getHeight(), 1000);
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
ImageIO.write(image, "png", bos);
|
byte[] dataImage = bos.toByteArray();
|
bos.close();
|
image.flush();
|
image = null;
|
bos = null;
|
|
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
|
if (dataImage.length > 0)
|
{
|
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 0, 8, 25, 88);
|
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE); //0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
|
drawing.createPicture(anchor, workbook.addPicture(dataImage, workbook.PICTURE_TYPE_PNG));
|
}
|
}
|
catch (Exception e)
|
{
|
Shared.printstack("Reports", e);
|
}
|
|
workbook.setForceFormulaRecalculation(true);
|
XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
|
return saveAndClose(format);
|
}
|
catch (ServerException e)
|
{
|
throw e;
|
}
|
catch (Exception e)
|
{
|
throw new ServerException(e);
|
}
|
}
|
|
|
private BufferedImage getImage(Diagram_Distribution_Bars componentDiagram, Diagram_Distribution_Impulses componentImpulses, FlatSplitPane splitPane, int width, int height, int sleep)
|
{
|
JWindow window = new JWindow();
|
|
try
|
{
|
FlatPanel mainPanel = new FlatPanel();
|
{
|
|
FlatPanel panelCenter = new FlatPanel();
|
{
|
panelCenter.setLayout(new BorderLayout());
|
panelCenter.add(componentDiagram,BorderLayout.CENTER);
|
|
panelCenter.setRaisedBorder(0,0,0,1);
|
}
|
|
FlatPanel panelWest = new FlatPanel();
|
{
|
FlatPanel panelSpacing = new FlatPanel();
|
{
|
panelSpacing.setPreferredSize(new Dimension(0,0));
|
}
|
|
Component headerComponent = JComponent.class.cast(splitPane.getRightComponent()).getComponents()[0];
|
{
|
headerComponent
|
.setPreferredSize(new Dimension(headerComponent.getPreferredSize().width,headerComponent.getPreferredSize().height + 6));
|
}
|
|
panelWest.setLayout(new BorderLayout());
|
panelWest.add(headerComponent,BorderLayout.NORTH);
|
panelWest.add(componentImpulses,BorderLayout.CENTER);
|
panelWest.setPreferredSize(new Dimension((int)(width * .2f),1080));
|
panelWest.setRaisedBorder(0,1,0,0);
|
}
|
|
mainPanel.setLayout(new BorderLayout());
|
mainPanel.add(panelCenter, BorderLayout.CENTER);
|
mainPanel.add(panelWest, BorderLayout.EAST);
|
}
|
componentImpulses.forceCalculatedHeight((double)componentDiagram.diagram_Distribution_Bars_Header_Groups.getCalculatedHeight());
|
window.setContentPane(mainPanel);
|
window.setSize(new Dimension(width,height));
|
window.setLocation(-99999,-99999);
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
|
window.setVisible(true);
|
|
mainPanel.revalidate();
|
mainPanel.repaint();
|
if (sleep > 0)
|
{
|
try
|
{
|
Thread.sleep(sleep);
|
}
|
catch (Exception e)
|
{
|
}
|
}
|
mainPanel.paint(image.getGraphics());
|
return image;
|
}
|
finally
|
{
|
window.setVisible(false);
|
window.dispose();
|
}
|
}
|
|
|
}
|