Commit 1755b013 by Amelin Konstantin

Add source moving logic.

parent 5745ddcd
...@@ -2,7 +2,7 @@ import com.typesafe.config.{Config, ConfigFactory} ...@@ -2,7 +2,7 @@ import com.typesafe.config.{Config, ConfigFactory}
import scala.xml._ import scala.xml._
import java.nio.file.{Files, Path, Paths, StandardOpenOption} import java.nio.file.{Files, Path, Paths, StandardOpenOption}
import java.io.{FileInputStream, InputStream} import java.io.{File, FileInputStream, InputStream}
import java.util.zip.ZipFile import java.util.zip.ZipFile
import java.time.LocalDateTime import java.time.LocalDateTime
...@@ -30,15 +30,33 @@ object Main { ...@@ -30,15 +30,33 @@ object Main {
val rtsXmlValid = XMLValid(getClass.getResource("/rts/fpml-recordkeeping-merged-schema.xsd")) val rtsXmlValid = XMLValid(getClass.getResource("/rts/fpml-recordkeeping-merged-schema.xsd"))
var logString = "" var logString = ""
for (v <- Files.walk(Paths.get(args(0))).toArray; f = v.asInstanceOf[Path]; if !Files.isDirectory(f)) { val files = new File(args(0))
val fSourceName= f.getFileName.toString .listFiles
.filter {
!_.isDirectory
}
.sortBy {
_.lastModified
}
val start = LocalDateTime.now().toString
val successSourcesName = s"./${start}_success"
val successSources = new File(successSourcesName)
val errorSourcesName = s"./${start}_error"
val errorSources = new File(errorSourcesName)
if (successSources.mkdir() && errorSources.mkdir()) {
for (f <- files) {
val fSourceName = f.getName
val fSourceNameArray = fSourceName.split('.') val fSourceNameArray = fSourceName.split('.')
val fSourceNameBase = fSourceNameArray.head val fSourceNameBase = fSourceNameArray.head
val fSourceNameExtension = fSourceNameArray.last.toLowerCase val fSourceNameExtension = fSourceNameArray.last.toLowerCase
val now = LocalDateTime.now().toString val now = LocalDateTime.now().toString
if (fSourceNameExtension == "zip") Try { if (fSourceNameExtension == "zip") Try {
val fZip = new ZipFile(f.toFile) val fZip = new ZipFile(f)
val fZipEntries = fZip.entries val fZipEntries = fZip.entries
while (fZipEntries.hasMoreElements) { while (fZipEntries.hasMoreElements) {
...@@ -50,16 +68,19 @@ object Main { ...@@ -50,16 +68,19 @@ object Main {
Try { Try {
convert( convert(
fZip.getInputStream(e), fZip.getInputStream(e),
s"${fSourceNameBase}_$fZipEntryName", s"${fSourceName}_$fZipEntryName",
s"Converted_${fSourceNameBase}_$fZipEntryName", s"Converted_${fSourceName}_$fZipEntryName",
nsdXmlValid, nsdXmlValid,
rtsXmlValid, rtsXmlValid,
p) p)
} match { } match {
case Success((oXml, ti)) => case Success((oXml, ti)) =>
XML.save(Paths.get(args(1), s"Converted_${fSourceNameBase}_$fZipEntryName").toString, oXml, xmlDecl = true) XML.save(Paths.get(args(1), s"Converted_${fSourceName}_$fZipEntryName").toString, oXml, xmlDecl = true)
logString += s"$nowForZip\n$ti" logString += s"$nowForZip\n$ti"
case Failure(ex) => logString += s"'$nowForZip\nImpossible to convert '${fSourceNameBase}_$fZipEntryName': ${ex.getMessage}\n\n" Files.copy(fZip.getInputStream(e), Paths.get(successSourcesName, s"${fSourceName}_$fZipEntryName"))
case Failure(ex) =>
logString += s"'$nowForZip\nImpossible to convert '${fSourceName}_$fZipEntryName': ${ex.getMessage}\n\n"
Files.copy(fZip.getInputStream(e), Paths.get(errorSourcesName, s"${fSourceName}_$fZipEntryName"))
} }
} }
} }
...@@ -69,30 +90,44 @@ object Main { ...@@ -69,30 +90,44 @@ object Main {
} }
else Try { else Try {
convert( convert(
new FileInputStream(f.toFile), new FileInputStream(f),
s"$fSourceNameBase", s"$fSourceNameBase",
s"Converted_$fSourceName", s"Converted_$fSourceName",
nsdXmlValid, nsdXmlValid,
rtsXmlValid, rtsXmlValid,
p) p)
} match { } match {
case Success((oXml,ti)) => case Success((oXml, ti)) =>
XML.save(Paths.get(args(1), s"Converted_$fSourceName").toString, oXml, xmlDecl = true) XML.save(Paths.get(args(1), s"Converted_$fSourceName").toString, oXml, xmlDecl = true)
logString += s"$now\n$ti" logString += s"$now\n$ti"
case Failure(ex) => logString += s"'$now\nImpossible to convert '$fSourceName': ${ex.getMessage}\n\n" Files.copy(f.toPath, Paths.get(successSourcesName, f.getName))
case Failure(ex) =>
logString += s"'$now\nImpossible to convert '$fSourceName': ${ex.getMessage}\n\n"
Files.copy(f.toPath, Paths.get(errorSourcesName, f.getName))
} }
} }
Try { Try {
//files.foreach { _.delete }
Files.write( Files.write(
Paths.get(args(1), logFileName), Paths.get(args(0), logFileName),
logString.getBytes("utf-8"), logString.getBytes("utf-8"),
StandardOpenOption.CREATE, StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING) StandardOpenOption.TRUNCATE_EXISTING)
if (successSources.listFiles.nonEmpty)
Files.copy(Paths.get(args(0), logFileName), Paths.get(successSourcesName, logFileName))
else
successSources.delete
if (errorSources.listFiles.isEmpty) errorSources.delete
} match { } match {
case Success(_) => println(s"Converting has been finished. $logFileName located in ${args(1)}") case Success(_) => println(s"Converting has been finished. $logFileName located in ${args(0)}")
case Failure(ex) => println(s"Error. Converting hasn`t been finished: ${ex.getMessage}") case Failure(ex) => println(s"Error. Converting hasn`t been finished: ${ex.getMessage}")
} }
} else
println(s"Error. Converting hasn`t been finished: unable to create source moving directory.")
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment