All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.oewntk.ser.in.Factory.kt Maven / Gradle / Ivy

/*
 * Copyright (c) 2021-2024. Bernard Bou.
 */
package org.oewntk.ser.`in`

import org.oewntk.model.DeSerialize.deSerializeModel
import org.oewntk.model.Model
import org.oewntk.model.ModelInfo
import java.io.File
import java.io.IOException
import java.util.function.Supplier

/**
 * Model factory from serialization
 *
 * @property file serialization file
 */
class Factory(
    private val file: File,
) : Supplier {

    override fun get(): Model? {
        try {
            return deSerializeModel(file)
        } catch (e: IOException) {
            e.printStackTrace(Tracing.psErr)
            return null
        } catch (e: ClassNotFoundException) {
            e.printStackTrace(Tracing.psErr)
            return null
        }
    }

    companion object {

        /**
         * Make model from serialization
         *
         * @param args command-line arguments
         * @return model
         */
        private fun makeModel(args: Array): Model? {
            val file = File(args[0])
            return Factory(file).get()
        }

        /**
         * Main
         *
         * @param args command-line arguments
         */
        @JvmStatic
        fun main(args: Array) {
            val model = makeModel(args)
            Tracing.psInfo.printf("[Model] %s%n%s%n%s%n", model!!.sources.contentToString(), model.info(), ModelInfo.counts(model))
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy