mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Take report format as input
This commit is contained in:
@ -31,7 +31,9 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.kingsrook.qqq.backend.core.actions.processes.BackendStep;
|
import com.kingsrook.qqq.backend.core.actions.processes.BackendStep;
|
||||||
import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportAction;
|
import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportAction;
|
||||||
|
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
|
import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput;
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput;
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportDestination;
|
import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportDestination;
|
||||||
@ -49,6 +51,7 @@ import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
|||||||
public class ExecuteReportStep implements BackendStep
|
public class ExecuteReportStep implements BackendStep
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -57,9 +60,10 @@ public class ExecuteReportStep implements BackendStep
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String reportName = runBackendStepInput.getValueString("reportName");
|
ReportFormat reportFormat = getReportFormat(runBackendStepInput);
|
||||||
QReportMetaData report = runBackendStepInput.getInstance().getReport(reportName);
|
String reportName = runBackendStepInput.getValueString("reportName");
|
||||||
File tmpFile = File.createTempFile(reportName, ".xlsx", new File("/tmp/"));
|
QReportMetaData report = QContext.getQInstance().getReport(reportName);
|
||||||
|
File tmpFile = File.createTempFile(reportName, "." + reportFormat.getExtension());
|
||||||
|
|
||||||
runBackendStepInput.getAsyncJobCallback().updateStatus("Generating Report");
|
runBackendStepInput.getAsyncJobCallback().updateStatus("Generating Report");
|
||||||
|
|
||||||
@ -68,7 +72,7 @@ public class ExecuteReportStep implements BackendStep
|
|||||||
ReportInput reportInput = new ReportInput();
|
ReportInput reportInput = new ReportInput();
|
||||||
reportInput.setReportName(reportName);
|
reportInput.setReportName(reportName);
|
||||||
reportInput.setReportDestination(new ReportDestination()
|
reportInput.setReportDestination(new ReportDestination()
|
||||||
.withReportFormat(ReportFormat.XLSX) // todo - variable
|
.withReportFormat(reportFormat)
|
||||||
.withReportOutputStream(reportOutputStream));
|
.withReportOutputStream(reportOutputStream));
|
||||||
|
|
||||||
Map<String, Serializable> values = runBackendStepInput.getValues();
|
Map<String, Serializable> values = runBackendStepInput.getValues();
|
||||||
@ -78,7 +82,7 @@ public class ExecuteReportStep implements BackendStep
|
|||||||
|
|
||||||
String downloadFileBaseName = getDownloadFileBaseName(runBackendStepInput, report);
|
String downloadFileBaseName = getDownloadFileBaseName(runBackendStepInput, report);
|
||||||
|
|
||||||
runBackendStepOutput.addValue("downloadFileName", downloadFileBaseName + ".xlsx");
|
runBackendStepOutput.addValue("downloadFileName", downloadFileBaseName + "." + reportFormat.getExtension());
|
||||||
runBackendStepOutput.addValue("serverFilePath", tmpFile.getCanonicalPath());
|
runBackendStepOutput.addValue("serverFilePath", tmpFile.getCanonicalPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,6 +94,22 @@ public class ExecuteReportStep implements BackendStep
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
**
|
||||||
|
***************************************************************************/
|
||||||
|
private ReportFormat getReportFormat(RunBackendStepInput runBackendStepInput) throws QUserFacingException
|
||||||
|
{
|
||||||
|
String reportFormatInput = runBackendStepInput.getValueString(BasicRunReportProcess.FIELD_REPORT_FORMAT);
|
||||||
|
if(StringUtils.hasContent(reportFormatInput))
|
||||||
|
{
|
||||||
|
return (ReportFormat.fromString(reportFormatInput));
|
||||||
|
}
|
||||||
|
|
||||||
|
return (ReportFormat.XLSX);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
@ -30,6 +30,7 @@ import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportActionTest
|
|||||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput;
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput;
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportFormat;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData;
|
||||||
@ -43,6 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
class BasicRunReportProcessTest extends BaseTest
|
class BasicRunReportProcessTest extends BaseTest
|
||||||
{
|
{
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -74,6 +76,18 @@ class BasicRunReportProcessTest extends BaseTest
|
|||||||
runProcessOutput = new RunProcessAction().execute(runProcessInput);
|
runProcessOutput = new RunProcessAction().execute(runProcessInput);
|
||||||
assertThat(runProcessOutput.getProcessState().getNextStepName()).isPresent().get().isEqualTo(BasicRunReportProcess.STEP_NAME_ACCESS);
|
assertThat(runProcessOutput.getProcessState().getNextStepName()).isPresent().get().isEqualTo(BasicRunReportProcess.STEP_NAME_ACCESS);
|
||||||
assertThat(runProcessOutput.getValues()).containsKeys("downloadFileName", "serverFilePath");
|
assertThat(runProcessOutput.getValues()).containsKeys("downloadFileName", "serverFilePath");
|
||||||
|
|
||||||
|
///////////////////////////////////
|
||||||
|
// assert we get xlsx by default //
|
||||||
|
///////////////////////////////////
|
||||||
|
assertThat(runProcessOutput.getValueString("downloadFileName")).endsWith(".xlsx");
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// re-run, requesting CSV, then assert we get that //
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
runProcessInput.addValue(BasicRunReportProcess.FIELD_REPORT_FORMAT, ReportFormat.CSV.name());
|
||||||
|
runProcessOutput = new RunProcessAction().execute(runProcessInput);
|
||||||
|
assertThat(runProcessOutput.getValueString("downloadFileName")).endsWith(".csv");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user