/*
* Copyright (c) Huawei Technologies Co., Ltd. 2022-2024. All rights reserved.
*/
package zip4cj.tasks
public class AddFilesToZipTask <: AbstractAddFileToZipTask<AddFilesToZipTaskParameters> {
public AddFilesToZipTask(
zipModel: ZipModel,
password: ?Array<Rune>,
headerWriter: HeaderWriter,
asyncTaskParameters: AsyncTaskParameters
) {
super(zipModel, password, headerWriter, asyncTaskParameters)
}
protected func executeTask(taskParameters: AddFilesToZipTaskParameters, progressMonitor: ProgressMonitor) {
verifyZipParameters(taskParameters.zipParameters)
var filesToAdd = determineActualFilesToAdd(taskParameters)
addFilesToZip(filesToAdd, progressMonitor, taskParameters.zipParameters, taskParameters.zip4cjConfig)
}
protected func calculateTotalWork(taskParameters: AddFilesToZipTaskParameters): Int64 {
return calculateWorkForFiles(taskParameters.filesToAdd, taskParameters.zipParameters)
}
private func determineActualFilesToAdd(taskParameters: AddFilesToZipTaskParameters): ArrayList<Path> {
let filesToAdd = ArrayList<Path>()
for (i in 0..taskParameters.filesToAdd.size) {
let inputFile = taskParameters.filesToAdd[i]
filesToAdd.add(inputFile)
var isSymLink = FileInfo(inputFile).isSymbolicLink()
var symbolicLinkAction = taskParameters.zipParameters.getSymbolicLinkAction()
if (isSymLink && !(SymbolicLinkAction.INCLUDE_LINK_ONLY == (symbolicLinkAction))) {
filesToAdd.add(all: FileUtils.getFilesInDirectoryRecursive(inputFile, taskParameters.zipParameters))
}
}
return filesToAdd
}
protected func getTask(): ProgressMonitorTask {
return super.getTask()
}
}