1 package org.onap.dcae.collectors.veshv.main.config
3 import org.apache.commons.cli.Option
4 import org.apache.commons.cli.Options
5 import org.apache.commons.cli.DefaultParser
6 import org.apache.commons.cli.CommandLine
7 import org.apache.commons.cli.HelpFormatter
10 internal object DefaultValues {
11 const val MESSAGES_AMOUNT = 1
15 * @author Jakub Dudycz <jakub.dudycz@nokia.com>
18 internal object ArgBasedClientConfiguration {
20 private val OPT_VES_PORT = Option.builder("p")
24 .desc("VesHvCollector port")
27 private val OPT_VES_HOST = Option.builder("h")
31 .desc("VesHvCollector host")
34 private val OPT_MESSAGES_AMOUNT = Option.builder("m")
37 .desc("Amount of messages to send")
40 private val options by lazy {
41 val options = Options()
42 options.addOption(OPT_VES_PORT)
43 options.addOption(OPT_VES_HOST)
44 options.addOption(OPT_MESSAGES_AMOUNT)
48 fun parse(args: Array<out String>): ClientConfiguration {
49 val parser = DefaultParser()
52 parser.parse(options, args).run {
53 return ClientConfiguration(
54 stringValue(OPT_VES_HOST),
55 intValue(OPT_VES_PORT),
56 intValueOrDefault(OPT_MESSAGES_AMOUNT, DefaultValues.MESSAGES_AMOUNT))
58 } catch (ex: Exception) {
59 throw WrongArgumentException(ex)
63 private fun CommandLine.intValueOrDefault(option: Option, default: Int) =
64 getOptionValue(option.opt)?.toInt() ?: default
66 private fun CommandLine.intValue(option: Option) =
67 getOptionValue(option.opt).toInt()
69 private fun CommandLine.stringValue(option: Option) =
70 getOptionValue(option.opt)
73 class WrongArgumentException(parent: Exception) : Exception(parent.message, parent) {
78 fun printHelp(programName: String) {
79 val formatter = HelpFormatter()
80 formatter.printHelp(programName, options)