This Jira introduce a new way to manage file transfer in OFBiz.
Inspired by mailing communication event management, a new communicationEventTypeId is created ('FILE_TRANSFER_COMM').
Such commEvent with classics : partyIdFrom/partyIdTo/contactMechIdTo/entryDate etc. are analysed by a job (like sendEmailDated), to send associated contents to a configured FTP/SFTP/FTPS server. If failure happens, it is catched and stored in communicationEvent, waiting for a new try.
For this purpose :
- A new contactMechTypeId is introduced (FtpAddress), with its corresponding table. This contactMech store needed information for basic user/password authentication (server url and protocol, port, username, password, etc.)
- A new service sendFileTransferDated (wip) that will look for pending file transfer and call following service.
- A new service sendCommEventAsFtp that take a selected commEvent, check its structure and manage its status after trying the associated content file transfers
- A new service sendContentToFtp, that take a content and transfer it to a given FtpAddress
- A seca createCommEventFromFtpTransfer on sendContentToFtp to manage plural content file transfer, creating children communicationEvent to follow each content transfer separately (only for several content transfers).
- A new Interface FtpClientInterface, with the 3 implementations of FTP, FTPS (To be Done), SFTP clients to manage Ftp connection and transfer
- A new property file to enable and manage redirection for testing purpose
With this implementation, creating a communicationEvent, with a FtpAddress contactMechIdTo, and sendFileTransferDated job planned :
- The file is transfered to the ftp : communication event status set to COM_COMPLETE
- Error occured : communication event status set to COM_BOUNCED with error message on communicationEvent note
The POC is working nicely for our customer, i adapted and tested it on trunk here : https://labs.nereide.fr/10031/Communautaire/compare/trunk...SendCommEventToFtp (some more job to be done, but in a working state)
I can provide the current patch on demand but i will propose more polished work in some days.
Looking forward reading you !