mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-17 20:50: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
|
||||
** use in different frontends, etc.
|
||||
*******************************************************************************/
|
||||
public class QIcon
|
||||
public class QIcon implements Cloneable
|
||||
{
|
||||
private String name;
|
||||
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
|
||||
**
|
||||
@ -154,6 +173,4 @@ public class QIcon
|
||||
this.color = color;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
||||
** (optionally along with queryJoins and queryInputCustomizer) is used.
|
||||
** - else a staticDataSupplier is used.
|
||||
*******************************************************************************/
|
||||
public class QReportDataSource
|
||||
public class QReportDataSource implements Cloneable
|
||||
{
|
||||
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
|
||||
**
|
||||
@ -274,6 +307,7 @@ public class QReportDataSource
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Getter for customRecordSource
|
||||
*******************************************************************************/
|
||||
@ -303,5 +337,4 @@ public class QReportDataSource
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
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.code.QCodeReference;
|
||||
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.QIcon;
|
||||
@ -37,7 +38,7 @@ import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
||||
/*******************************************************************************
|
||||
** 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 label;
|
||||
@ -52,6 +53,72 @@ public class QReportMetaData implements QAppChildMetaData, MetaDataWithPermissio
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** 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