{
int pos;
str moveFile;
RandomGenerate randomGenerate = RandomGenerate::construct();
McsMsgParameters parameters;
FileIoPermission fileIoPermission;
Set permissionSet = new Set(Types::Class);
str newFilename, srcFileName;
boolean overwrite;
TransDateTime transDateTime;
str datePart;
str timePart;
#define.T('T')
#File
;
parameters = McsMsgParameters::find();
overwrite = parameters.OverrideFile == NoYes::Yes ? true : false;
parameters = null;
if (overwrite)
{
// overwrite
newFilename = _targetFileLocation + _fileName;
}
else
{
pos = strScan(_fileName, #csv, 1, strLen(_fileName));
moveFile = subStr(_fileName, 1, (pos - 1));
transDateTime = DateTimeUtil::applyTimeZoneOffset(DateTimeUtil::getSystemDateTime(), DateTimeUtil::getCompanyTimeZone());
datePart = date2str(DateTimeUtil::date(transDateTime),
123,
DateDay::Digits2,
DateSeparator::Dot,
DateMonth::Short,
DateSeparator::Dot,
DateYear::Digits4,
DateFlags::FormatAll);
timePart = time2str(DateTimeUtil::time(transDateTime),
TimeSeparator::Dot,
TimeFormat::Hour24);
moveFile = strFmt(moveFile + datePart + #T + timePart + "_" + int2str(randomGenerate.nextInt()) + #csv);
// get target file name and if duplicate exists the next one
newFilename = this.getNextDuplicateFullFileName(_targetFileLocation, moveFile);
}
srcFileName = _originalFileLocation + _fileName; // source file
if (global::isRunningOnServer())
{
// Run On Server
// set permission for source filename
fileIoPermission = new FileIoPermission(srcFileName, 'rw'); // reading and deleting
permissionSet.add(fileIoPermission); // add source fileIOpermission to set
// set permissions for target filename
fileIoPermission = new FileIoPermission(newFilename, 'w'); // just writing
permissionSet.add(fileIoPermission); // add target fileIOpermission to set
CodeAccessPermission::assertMultiple(permissionSet); // assert multiple permissions
// BP Deviation Documented
WinApiServer::copyFile(srcFileName, newFilename, overwrite);
// BP Deviation Documented
WinApiServer::deleteFile(srcFileName);
CodeAccessPermission::revertAssert(); // revert permissions
}
else
{
// run on Client
WinApi::copyFile(srcFileName, newFilename, overwrite);
WinApi::deleteFile(srcFileName);
}
}