/* * sftp-reader * Copyright (C) 2020 Memoriav * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package org.memobase import java.io.File import kotlin.system.exitProcess import org.apache.logging.log4j.LogManager class App { companion object { private val log = LogManager.getLogger("SftpReader") @JvmStatic fun main(args: Array) { try { val settings = SettingsLoader() Producer(settings.kafkaProducerProperties, settings.topic).use { producer -> SftpClient(settings.sftpSettings).use { sftp -> val validator = FileValidation(sftp) val files = sftp.listFiles(settings.appSettings["directory"].orEmpty()).map { File(it) } for (file in files) { val report = validator.validate(file) when (report.status) { "valid" -> producer.sendMessage(file.name, file.path, report.format) else -> producer.sendMessage(file.name, "ERROR", report.format) } producer.sendReport(report) } } } } catch (ex: Exception) { ex.printStackTrace() log.error("Stopping application due to error: " + ex.message) exitProcess(1) } } } }