Class FormVersionArchiveService
- java.lang.Object
-
- com.avoka.fc.core.service.BaseService
-
- com.avoka.fc.core.service.CayenneService
-
- com.avoka.fc.core.service.archive.BaseArchiveService
-
- com.avoka.fc.core.service.archive.FormVersionArchiveService
-
public class FormVersionArchiveService extends BaseArchiveService
Provides a form and template version archive export and import service.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FormVersionArchiveService.ImportOption
Various import options controlling which entities will be imported-
Nested classes/interfaces inherited from class com.avoka.fc.core.service.archive.BaseArchiveService
BaseArchiveService.FormData
-
-
Field Summary
Fields Modifier and Type Field Description static String
FORM_VERSION_CONFIG_FILENAME
The form version configuration file namestatic String
METADATA_CLIENT_CODE
The name of the metadata value storing the client code of the form to be imported tostatic String
METADATA_FORM_CODE
The name of the metadata value storing the form code of the form to be imported tostatic String
METADATA_FORM_NAME
The name of the metadata value storing the name of the form to be imported tostatic String
METADATA_FORM_VERSION_NUMBER
The name of the metadata value storing the version number to be imported (set only if the archive contains a single form version)-
Fields inherited from class com.avoka.fc.core.service.archive.BaseArchiveService
ATTRIBUTE_BUILD_NUMBER, ATTRIBUTE_DB_VERSION, ATTRIBUTE_ENVIRONMENT_NAME, ATTRIBUTE_EXPORT_DATE, ATTRIBUTE_FORM_PORTAL_ANONYMOUS, ATTRIBUTE_FORM_PORTAL_AUTHENTICATED, ATTRIBUTE_SFM_VERSION, DIR_FAR, DIR_FORM, DIR_RECEIPT, DIR_SCHEMA_SEED, DIR_XML_PREFILL, ELEMENT_APPLICATION_PACKAGE, ELEMENT_APPLICATION_PACKAGES, ELEMENT_AUTHENTICATION_MODE, ELEMENT_CATEGORY_NAME, ELEMENT_CLIENT, ELEMENT_CLIENT_CODE, ELEMENT_DOCUMENT_TYPE_CLIENT, ELEMENT_DOCUMENT_TYPE_NAME, ELEMENT_FORM_ABANDON_DELIVERY, ELEMENT_FORM_DELIVERY_PROD, ELEMENT_FORM_DELIVERY_TEST, ELEMENT_FORM_FUNCTION, ELEMENT_FORM_FUNCTIONS, ELEMENT_FORM_GROUP, ELEMENT_FORM_GROUPS, ELEMENT_FORM_PORTAL, ELEMENT_FORM_PORTAL_PORTAL_NAME, ELEMENT_FORM_PORTALS, ELEMENT_FORM_VALIDATION_DELIVERY, ELEMENT_METADATA_TAG_CLIENT, ELEMENT_METADATA_TAG_NAME, ELEMENT_PARAMETER_PREFILL_MAPPING, ELEMENT_PARAMETER_PREFILL_MAPPINGS, ELEMENT_PROPERTY_PREFILL_MAPPING, ELEMENT_PROPERTY_PREFILL_MAPPINGS, ELEMENT_PROPERTY_TYPE_CLIENT, ELEMENT_PROPERTY_TYPE_NAME, ELEMENT_PROPERTY_TYPE_SCOPE, ELEMENT_SCHEMA_CONFIG_MAPPING, ELEMENT_SCHEMA_CONFIG_MAPPINGS, ELEMENT_SCHEMA_EXTRACT_MAPPING, ELEMENT_SCHEMA_EXTRACT_MAPPINGS, ELEMENT_SCHEMA_SEED, ELEMENT_SERVICE, ELEMENT_SERVICE_CLIENT_CODE, ELEMENT_SERVICE_CONNECTION, ELEMENT_SERVICE_CONNECTIONS, ELEMENT_SERVICE_NAME, ELEMENT_SERVICE_PARAMETER, ELEMENT_SERVICE_PARAMETERS, ELEMENT_SERVICE_TYPE, ELEMENT_SERVICE_VERSION, ELEMENT_SERVICES, ELEMENT_TEMPLATE_VERSION, ELEMENT_TEMPLATE_VERSION_DEPLOYMENT, ELEMENT_TEMPLATE_VERSION_DEPLOYMENTS, ELEMENT_TEMPLATE_VERSIONS, ELEMENT_VERSION_ATTACHMENT, ELEMENT_VERSION_ATTACHMENTS, ELEMENT_VERSION_CATEGORIES, ELEMENT_VERSION_CATEGORY, ELEMENT_VERSION_METADATA_VALUE, ELEMENT_VERSION_METADATA_VALUES, ELEMENT_VERSION_PROPERTY_VALUE, ELEMENT_VERSION_PROPERTY_VALUES, ELEMENT_XML_PREFILL_MAPPING, ELEMENT_XML_PREFILL_MAPPINGS, ELEMENT_XML_PREFILL_VERSION, ENCODING, FILE_FAR_DEFAULT, FILE_SCHEMA_SEED_DEFAULT, FILE_XML_PREFILL_DEFAULT, groovySecureAPI, METADATA_ENVIRONMENT_NAME, METADATA_ENVIRONMENT_TYPE, METADATA_ENVIRONMENT_TYPE_MAESTRO, METADATA_EXPORT_DATE, METADATA_EXPORT_DB_VERSION, METADATA_EXPORT_REVISION, METADATA_EXPORT_VERSION, METADATA_IMPORT_ACTION, METADATA_IMPORT_ACTION_CONFLICT, METADATA_IMPORT_ACTION_CREATE, METADATA_IMPORT_ACTION_ERROR, METADATA_IMPORT_ACTION_MESSAGE, METADATA_IMPORT_ACTION_UPDATE, oldCurrentServiceVersions, PORTAL_AUTHENTICATION_DB_VERSION, SERVICE_TYPE_CARD_PAYMENT_OBSOLETE, updatedTemplateVersionIds
-
-
Constructor Summary
Constructors Constructor Description FormVersionArchiveService()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
exportAuditLogger(Object object)
Create an entry in the audit log when an export is performedprotected String
getEntityName()
Return the name identifying the individual entity being exported (e.g.protected BaseArchiveService.FormData
getFormData(Element formElement, Form form, TemplateVersion version)
protected String
getFormVersionKey(String formCode, TemplateVersion version)
Make sure to pass in the appropriate form code.Map<String,String>
getImportMetadata(byte[] importData)
Retrieve the set of metadata values describing a form version archive that is being imported.Map<String,String>
getImportMetadata(byte[] importData, String newClientCode, String newFormCode)
Retrieve the set of metadata values describing a form version archive that is being imported.IJMImportOption
getImportOptionEnum()
Return a value from the import option enum, if this service has import options.protected void
importAuditLogger(ImportAction importAction)
Create an entry in the audit log when an import is performedprotected void
performImport(ImportAction importAction, Set<? extends Enum> importOptions, Map<String,Object> parameters)
Performs the act of importing the data contained in the archive to the SFM database.protected void
postExport(Object exportObject)
Called after the export has been done, and the file created.protected void
processImportFile(String fileName, byte[] fileData)
For a given file in the imported archive, the service stores its contents as it sees fit, preserving what it will need to recreate entities later.void
setNewClientCode(String newClientCode)
Set the client code of the client to be imported to (relevant only if a client code different to the one in the archive is to be used)void
setNewFormCode(String newFormCode)
Set the form code of the form to be createdvoid
validateImportData(byte[] importData)
Validate a form archive before it is imported.protected void
writeExportData(Object object, ZipOutputStream zos, Map<String,String> additionalHeaders)
Does the actual export of the data without having to worry about handling errors or preparing and closing the stream-
Methods inherited from class com.avoka.fc.core.service.archive.BaseArchiveService
addDeploymentSchedule, addForm, addFormFunctions, addFormGroups, addFormPortals, addParameterPrefillMaps, addPropertyPrefillMaps, addSchemaExtractMaps, addSchemaSeed, addService, addServiceConnection, addTemplateVersion, addTemplateVersionData, addVersionAttachments, addVersionCategories, addVersionMetadataValues, addVersionPropertyValues, addXmlPrefillMaps, copyFromElementToEntity, copyFromElementToEntity, createChildProperty, createChildValue, exportData, exportData, findFileInArchive, getByteArrayForElement, getByteArrayForZipEntry, getDefaultImportOptions, getElementForByteArray, getFormVersionKey, importApplicationPackages, importApplicationPackages, importArchive, importArchive, importDeploymentPlan, importFormFunctions, importFormGroups, importFormPortals, importOldSchemaConfigMaps, importParameterPrefillMaps, importPropertyPrefillMaps, importSchemaExtractMaps, importSchemaSeed, importServiceConnection, importServiceDefinition, importServiceParameters, importTemplateVersionData, importTemplateVersions, importTemplateVersions, importVersionAttachments, importVersionCategories, importVersionMetadata, importVersionProperties, importXmlPrefillMaps, isGroovySecureAPI, postImport, readApplicationPackageReference, readClientCodeReference, readMetadataAttributes, readServiceName, readServiceReference, setGroovySecureAPI, updateUnifiedAppFlagAndDoc, writeApplicationPackageReference, writeClientCodeReference, writeHeaderAttributes, writeServiceReference
-
Methods inherited from class com.avoka.fc.core.service.CayenneService
commitChanges, deleteObject, deleteObjects, findObject, getDataContext, getDataDomain, getObjectForPK, getObjectStore, newObject, performNamedQuery, performNamedQuery, performNamedQuery, performNonSelectingQuery, performNonSelectingQuery, performNonSelectingQuery, performNonSelectingQuery, performQuery, performQuery, refetchEntity, refetchObject, registerNewObject, rollbackChanges, toMap, toMap
-
Methods inherited from class com.avoka.fc.core.service.BaseService
getLogger
-
-
-
-
Field Detail
-
FORM_VERSION_CONFIG_FILENAME
public static final String FORM_VERSION_CONFIG_FILENAME
The form version configuration file name- See Also:
- Constant Field Values
-
METADATA_FORM_CODE
public static final String METADATA_FORM_CODE
The name of the metadata value storing the form code of the form to be imported to- See Also:
- Constant Field Values
-
METADATA_FORM_NAME
public static final String METADATA_FORM_NAME
The name of the metadata value storing the name of the form to be imported to- See Also:
- Constant Field Values
-
METADATA_FORM_VERSION_NUMBER
public static final String METADATA_FORM_VERSION_NUMBER
The name of the metadata value storing the version number to be imported (set only if the archive contains a single form version)- See Also:
- Constant Field Values
-
METADATA_CLIENT_CODE
public static final String METADATA_CLIENT_CODE
The name of the metadata value storing the client code of the form to be imported to- See Also:
- Constant Field Values
-
-
Method Detail
-
validateImportData
public void validateImportData(byte[] importData) throws ImportValidationException, IOException
Validate a form archive before it is imported.- Specified by:
validateImportData
in classBaseArchiveService
- Parameters:
importData
- the import archive as a byte array- Throws:
ImportValidationException
- if the archive can be parsed, but does not contain the expected archive filesIOException
- if an error occurs loading the import archive contents
-
getImportMetadata
public Map<String,String> getImportMetadata(byte[] importData) throws IOException, ImportValidationException
Retrieve the set of metadata values describing a form version archive that is being imported.- Specified by:
getImportMetadata
in classBaseArchiveService
- Parameters:
importData
- the import archive as a byte array- Returns:
- a map of metadata names and their values
- Throws:
IOException
- if an error occurs while parsing the import archiveImportValidationException
- if the XML file describing the form was not found in the archive
-
getImportMetadata
public Map<String,String> getImportMetadata(byte[] importData, String newClientCode, String newFormCode) throws IOException, ImportValidationException
Retrieve the set of metadata values describing a form version archive that is being imported.- Parameters:
importData
- the import archive as a byte arraynewClientCode
- the client code of the client to import tonewFormCode
- the form code for the form to be created- Returns:
- a map of metadata names and their values
- Throws:
IOException
- if an error occurs while parsing the import archiveImportValidationException
- if the XML file describing the client was not found in the archive
-
setNewClientCode
public void setNewClientCode(String newClientCode)
Set the client code of the client to be imported to (relevant only if a client code different to the one in the archive is to be used)- Parameters:
newClientCode
- the client code
-
setNewFormCode
public void setNewFormCode(String newFormCode)
Set the form code of the form to be created- Parameters:
newFormCode
- the form code- Since:
- 4.1.3
-
getImportOptionEnum
public IJMImportOption getImportOptionEnum()
Return a value from the import option enum, if this service has import options. Can be used to callIJMImportOption.defaultForImportAction(String)
- Overrides:
getImportOptionEnum
in classBaseArchiveService
- Returns:
- one of the import options
-
writeExportData
protected void writeExportData(Object object, ZipOutputStream zos, Map<String,String> additionalHeaders) throws ParserConfigurationException, IOException
Description copied from class:BaseArchiveService
Does the actual export of the data without having to worry about handling errors or preparing and closing the stream- Specified by:
writeExportData
in classBaseArchiveService
- Parameters:
object
- the non-null object to be exportedzos
- the stream to be written toadditionalHeaders
- the map of additional headers to be included in metadata- Throws:
ParserConfigurationException
IOException
-
postExport
protected void postExport(Object exportObject)
Description copied from class:BaseArchiveService
Called after the export has been done, and the file created. Can be used to do service-specific activities such as logging.- Overrides:
postExport
in classBaseArchiveService
- Parameters:
exportObject
- the object that was passed to exportData
-
processImportFile
protected void processImportFile(String fileName, byte[] fileData) throws UnsupportedEncodingException
Description copied from class:BaseArchiveService
For a given file in the imported archive, the service stores its contents as it sees fit, preserving what it will need to recreate entities later. This operation happens before the database transaction wrapping the actual import to the SFM database.- Specified by:
processImportFile
in classBaseArchiveService
- Parameters:
fileName
- the full file name of the ZIP file entry (e.g. form/TestForm.pdf)fileData
- the file data of the ZIP file entry- Throws:
UnsupportedEncodingException
-
performImport
protected void performImport(ImportAction importAction, Set<? extends Enum> importOptions, Map<String,Object> parameters) throws ParseException
Description copied from class:BaseArchiveService
Performs the act of importing the data contained in the archive to the SFM database. When this method will be called, the caller is expected to have established a transaction, and will also handle errors thrown by this method.- Specified by:
performImport
in classBaseArchiveService
- Parameters:
importAction
- the import action related to this importimportOptions
- the set of import options that should be appliedparameters
- optional parameters to be used during import- Throws:
ParseException
-
getEntityName
protected String getEntityName()
Description copied from class:BaseArchiveService
Return the name identifying the individual entity being exported (e.g. for a client, the client's name)- Specified by:
getEntityName
in classBaseArchiveService
- Returns:
- the entity name
-
getFormData
protected BaseArchiveService.FormData getFormData(Element formElement, Form form, TemplateVersion version)
- Overrides:
getFormData
in classBaseArchiveService
-
getFormVersionKey
protected String getFormVersionKey(String formCode, TemplateVersion version)
Description copied from class:BaseArchiveService
Make sure to pass in the appropriate form code. For example, during application package import, form codes may automatically be changed to unique ones. However, in the archive the old form codes are used as directory names, so this method must be used. Note that the form version archive service uses a different key.- Overrides:
getFormVersionKey
in classBaseArchiveService
-
exportAuditLogger
protected void exportAuditLogger(Object object)
Create an entry in the audit log when an export is performed- Specified by:
exportAuditLogger
in classBaseArchiveService
- Parameters:
object
- Object of type (Pair- Since:
- 17.10.2
-
importAuditLogger
protected void importAuditLogger(ImportAction importAction)
Create an entry in the audit log when an import is performed- Specified by:
importAuditLogger
in classBaseArchiveService
- Parameters:
importAction
- ImportAction containing action performed (required)- Since:
- 17.10.2
-
-