mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
change to not include createDate field for s3 (where it's not supported); changed file-name field used on the download adornment to be baseName by default, but configurable
This commit is contained in:
@ -22,12 +22,15 @@
|
||||
package com.kingsrook.qqq.backend.module.filesystem.base.model.metadata;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.DisplayFormat;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QFieldSection;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.SectionFactory;
|
||||
import com.kingsrook.qqq.backend.module.filesystem.local.FilesystemBackendModule;
|
||||
@ -59,6 +62,8 @@ public class FilesystemTableMetaDataBuilder
|
||||
private String basePath;
|
||||
private String glob;
|
||||
|
||||
private String contentsAdornmentFileNameField = "baseName";
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -66,46 +71,64 @@ public class FilesystemTableMetaDataBuilder
|
||||
*******************************************************************************/
|
||||
public QTableMetaData buildStandardCardinalityOneTable()
|
||||
{
|
||||
boolean includeCreateDate = true;
|
||||
AbstractFilesystemTableBackendDetails tableBackendDetails = switch(backend.getBackendType())
|
||||
{
|
||||
case S3BackendModule.BACKEND_TYPE -> new S3TableBackendDetails();
|
||||
case S3BackendModule.BACKEND_TYPE ->
|
||||
{
|
||||
includeCreateDate = false;
|
||||
yield new S3TableBackendDetails();
|
||||
}
|
||||
case FilesystemBackendModule.BACKEND_TYPE -> new FilesystemTableBackendDetails();
|
||||
case SFTPBackendModule.BACKEND_TYPE -> new SFTPTableBackendDetails();
|
||||
default -> throw new IllegalStateException("Unexpected value: " + backend.getBackendType());
|
||||
};
|
||||
|
||||
List<QFieldMetaData> fields = new ArrayList<>();
|
||||
|
||||
fields.add((new QFieldMetaData("fileName", QFieldType.STRING)));
|
||||
fields.add((new QFieldMetaData("baseName", QFieldType.STRING)));
|
||||
fields.add((new QFieldMetaData("size", QFieldType.LONG).withDisplayFormat(DisplayFormat.COMMAS)));
|
||||
fields.add((new QFieldMetaData("modifyDate", QFieldType.DATE_TIME)));
|
||||
fields.add((new QFieldMetaData("contents", QFieldType.BLOB)
|
||||
.withIsHeavy(true)
|
||||
.withFieldAdornment(new FieldAdornment(AdornmentType.FILE_DOWNLOAD)
|
||||
.withValue(AdornmentType.FileDownloadValues.FILE_NAME_FORMAT, "%s")
|
||||
.withValue(AdornmentType.FileDownloadValues.FILE_NAME_FIELD, contentsAdornmentFileNameField
|
||||
))));
|
||||
|
||||
QFieldSection t3Section = SectionFactory.defaultT3("modifyDate");
|
||||
|
||||
AbstractFilesystemTableBackendDetails backendDetails = tableBackendDetails
|
||||
.withCardinality(Cardinality.ONE)
|
||||
.withFileNameFieldName("fileName")
|
||||
.withBaseNameFieldName("baseName")
|
||||
.withContentsFieldName("contents")
|
||||
.withSizeFieldName("size")
|
||||
.withModifyDateFieldName("modifyDate")
|
||||
.withBasePath(basePath)
|
||||
.withGlob(glob);
|
||||
|
||||
if(includeCreateDate)
|
||||
{
|
||||
fields.add((new QFieldMetaData("createDate", QFieldType.DATE_TIME)));
|
||||
backendDetails.setCreateDateFieldName("createDate");
|
||||
|
||||
ArrayList<String> t3FieldNames = new ArrayList<>(t3Section.getFieldNames());
|
||||
t3FieldNames.add(0, "createDate");
|
||||
t3Section.setFieldNames(t3FieldNames);
|
||||
}
|
||||
|
||||
return new QTableMetaData()
|
||||
.withName(name)
|
||||
.withIsHidden(true)
|
||||
.withBackendName(backend.getName())
|
||||
.withPrimaryKeyField("fileName")
|
||||
|
||||
.withField(new QFieldMetaData("fileName", QFieldType.STRING))
|
||||
.withField(new QFieldMetaData("baseName", QFieldType.STRING))
|
||||
.withField(new QFieldMetaData("size", QFieldType.LONG).withDisplayFormat(DisplayFormat.COMMAS))
|
||||
.withField(new QFieldMetaData("createDate", QFieldType.DATE_TIME))
|
||||
.withField(new QFieldMetaData("modifyDate", QFieldType.DATE_TIME))
|
||||
.withField(new QFieldMetaData("contents", QFieldType.BLOB)
|
||||
.withIsHeavy(true)
|
||||
.withFieldAdornment(new FieldAdornment(AdornmentType.FILE_DOWNLOAD)
|
||||
.withValue(AdornmentType.FileDownloadValues.FILE_NAME_FORMAT, "%s")
|
||||
.withValue(AdornmentType.FileDownloadValues.FILE_NAME_FIELD, "fileName")
|
||||
))
|
||||
|
||||
.withFields(fields)
|
||||
.withSection(SectionFactory.defaultT1("fileName"))
|
||||
.withSection(SectionFactory.defaultT2("baseName", "contents", "size"))
|
||||
.withSection(SectionFactory.defaultT3("createDate", "modifyDate"))
|
||||
|
||||
.withBackendDetails(tableBackendDetails
|
||||
.withCardinality(Cardinality.ONE)
|
||||
.withFileNameFieldName("fileName")
|
||||
.withBaseNameFieldName("baseName")
|
||||
.withContentsFieldName("contents")
|
||||
.withSizeFieldName("size")
|
||||
.withCreateDateFieldName("createDate")
|
||||
.withModifyDateFieldName("modifyDate")
|
||||
.withBasePath(basePath)
|
||||
.withGlob(glob));
|
||||
.withSection(t3Section)
|
||||
.withBackendDetails(backendDetails);
|
||||
}
|
||||
|
||||
|
||||
@ -232,4 +255,35 @@ public class FilesystemTableMetaDataBuilder
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Getter for contentsAdornmentFileNameField
|
||||
*******************************************************************************/
|
||||
public String getContentsAdornmentFileNameField()
|
||||
{
|
||||
return (this.contentsAdornmentFileNameField);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Setter for contentsAdornmentFileNameField
|
||||
*******************************************************************************/
|
||||
public void setContentsAdornmentFileNameField(String contentsAdornmentFileNameField)
|
||||
{
|
||||
this.contentsAdornmentFileNameField = contentsAdornmentFileNameField;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Fluent setter for contentsAdornmentFileNameField
|
||||
*******************************************************************************/
|
||||
public FilesystemTableMetaDataBuilder withContentsAdornmentFileNameField(String contentsAdornmentFileNameField)
|
||||
{
|
||||
this.contentsAdornmentFileNameField = contentsAdornmentFileNameField;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user