//CLASSPATH=/home/tigase/tigase-server/jars/tigase-server.jar
import tigase.stats.JavaJMXProxyOpt
import tigase.stats.JMXProxyListener
import tigase.stats.StatisticsProviderMBean

if (args.size() > 0) {
  if (args[0] == "-h") {
    println ("Parameters are: [hostname] [username] [password] [dir] [port] [delay(ms)] [interval(ms)] [loadhistory(bool)]")
    System.exit(0)
  }
}


def hostname = args.size() > 0 ? args[0] : "0.0.0.0"
def username = args.size() > 1 ? args[1] : "admin"
def password = args.size() > 2 ? args[2] : "pass"
def dir = args.size() > 3 ? args[3] : "stats"
def port = args.size() > 4 ? args[4].toInteger() : 9050
def delay = args.size() > 5 ? args[5].toLong() : 10000
def interval = args.size() > 6 ? args[6].toLong() : 10000
def loadHistory = args.size() > 7 ? args[7].toBoolean() : false

if (!new File(dir).exists()) {
  new File(dir).mkdir()
}

def proxy = new JavaJMXProxyOpt(hostname, hostname, port, username, password, delay, interval, loadHistory)
proxy.start()

sleep delay

while (true) {
  try {
    def allStats = proxy.getAllStats(0)
    if (allStats != null) {
      def timeToken = (int) System.currentTimeMillis() / 1000.toInteger() / 60.toInteger()
      def file1 = new File("${dir}/stats_${new Date().format('yyyy-MM-dd_hh:mm:ss')}.txt")
      println "Saving stats to the file ${file1.path}"
      allStats.each { key, value -> file1 << key + "     " + value + "\n" }
    }
  } catch(all) {
    println("An exception: " + all)
  }
  sleep interval
}
