mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add exportStyleCustomizer to QReportMetaData, plus clonable here and on child metadata
This commit is contained in:
@ -31,7 +31,7 @@ package com.kingsrook.qqq.backend.core.model.metadata.layout;
|
|||||||
** Future may allow something like a "namespace", and/or multiple icons for
|
** Future may allow something like a "namespace", and/or multiple icons for
|
||||||
** use in different frontends, etc.
|
** use in different frontends, etc.
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
public class QIcon
|
public class QIcon implements Cloneable
|
||||||
{
|
{
|
||||||
private String name;
|
private String name;
|
||||||
private String path;
|
private String path;
|
||||||
@ -58,6 +58,25 @@ public class QIcon
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
**
|
||||||
|
***************************************************************************/
|
||||||
|
@Override
|
||||||
|
public QIcon clone()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QIcon clone = (QIcon) super.clone();
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
catch(CloneNotSupportedException e)
|
||||||
|
{
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for name
|
** Getter for name
|
||||||
**
|
**
|
||||||
@ -154,6 +173,4 @@ public class QIcon
|
|||||||
this.color = color;
|
this.color = color;
|
||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
|||||||
** (optionally along with queryJoins and queryInputCustomizer) is used.
|
** (optionally along with queryJoins and queryInputCustomizer) is used.
|
||||||
** - else a staticDataSupplier is used.
|
** - else a staticDataSupplier is used.
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
public class QReportDataSource
|
public class QReportDataSource implements Cloneable
|
||||||
{
|
{
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ -55,6 +55,39 @@ public class QReportDataSource
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
**
|
||||||
|
***************************************************************************/
|
||||||
|
@Override
|
||||||
|
public QReportDataSource clone()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QReportDataSource clone = (QReportDataSource) super.clone();
|
||||||
|
if(queryFilter != null)
|
||||||
|
{
|
||||||
|
clone.queryFilter = queryFilter.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(queryJoins != null)
|
||||||
|
{
|
||||||
|
clone.queryJoins = new ArrayList<>();
|
||||||
|
for(QueryJoin join : queryJoins)
|
||||||
|
{
|
||||||
|
queryJoins.add(join.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
catch(CloneNotSupportedException e)
|
||||||
|
{
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for name
|
** Getter for name
|
||||||
**
|
**
|
||||||
@ -274,6 +307,7 @@ public class QReportDataSource
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for customRecordSource
|
** Getter for customRecordSource
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -303,5 +337,4 @@ public class QReportDataSource
|
|||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
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.TopLevelMetaDataInterface;
|
import com.kingsrook.qqq.backend.core.model.metadata.TopLevelMetaDataInterface;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon;
|
import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon;
|
||||||
@ -37,7 +38,7 @@ import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Meta-data definition of a report generated by QQQ
|
** Meta-data definition of a report generated by QQQ
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissionRules, TopLevelMetaDataInterface
|
public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissionRules, TopLevelMetaDataInterface, Cloneable
|
||||||
{
|
{
|
||||||
private String name;
|
private String name;
|
||||||
private String label;
|
private String label;
|
||||||
@ -52,6 +53,72 @@ public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissio
|
|||||||
|
|
||||||
private QIcon icon;
|
private QIcon icon;
|
||||||
|
|
||||||
|
private QCodeReference exportStyleCustomizer;
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
**
|
||||||
|
***************************************************************************/
|
||||||
|
@Override
|
||||||
|
public QReportMetaData clone()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QReportMetaData clone = (QReportMetaData) super.clone();
|
||||||
|
|
||||||
|
//////////////////////////////
|
||||||
|
// Deep copy mutable fields //
|
||||||
|
//////////////////////////////
|
||||||
|
if(this.inputFields != null)
|
||||||
|
{
|
||||||
|
clone.inputFields = new ArrayList<>();
|
||||||
|
for(QFieldMetaData inputField : this.inputFields)
|
||||||
|
{
|
||||||
|
clone.inputFields.add(inputField.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.dataSources != null)
|
||||||
|
{
|
||||||
|
clone.dataSources = new ArrayList<>();
|
||||||
|
for(QReportDataSource dataSource : this.dataSources)
|
||||||
|
{
|
||||||
|
clone.dataSources.add(dataSource.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.views != null)
|
||||||
|
{
|
||||||
|
clone.views = new ArrayList<>();
|
||||||
|
for(QReportView view : this.views)
|
||||||
|
{
|
||||||
|
clone.views.add(view.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.permissionRules != null)
|
||||||
|
{
|
||||||
|
clone.permissionRules = this.permissionRules.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.icon != null)
|
||||||
|
{
|
||||||
|
clone.icon = this.icon.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.exportStyleCustomizer != null)
|
||||||
|
{
|
||||||
|
clone.exportStyleCustomizer = this.exportStyleCustomizer.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
catch(CloneNotSupportedException e)
|
||||||
|
{
|
||||||
|
throw new AssertionError("Cloning not supported", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -397,4 +464,35 @@ public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissio
|
|||||||
qInstance.addReport(this);
|
qInstance.addReport(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Getter for exportStyleCustomizer
|
||||||
|
*******************************************************************************/
|
||||||
|
public QCodeReference getExportStyleCustomizer()
|
||||||
|
{
|
||||||
|
return (this.exportStyleCustomizer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Setter for exportStyleCustomizer
|
||||||
|
*******************************************************************************/
|
||||||
|
public void setExportStyleCustomizer(QCodeReference exportStyleCustomizer)
|
||||||
|
{
|
||||||
|
this.exportStyleCustomizer = exportStyleCustomizer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Fluent setter for exportStyleCustomizer
|
||||||
|
*******************************************************************************/
|
||||||
|
public QReportMetaData withExportStyleCustomizer(QCodeReference exportStyleCustomizer)
|
||||||
|
{
|
||||||
|
this.exportStyleCustomizer = exportStyleCustomizer;
|
||||||
|
return (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user