/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package br.com.centralit.nagios.livestatus.response; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import br.com.centralit.nagios.livestatus.query.LSQuery; import br.com.centralit.nagios.livestatus.tables.LivestatusSeparator; /** * * @author adenir */ public class Response { private final List<String> string_list; private String[] string_array_headers; private final LSQuery query; private int line_count = 0; public Response(LSQuery pQuery) { string_list = new ArrayList<>(); query = pQuery; } public String[] getListHeaders() { return string_array_headers; } public List<String> asArrayList() { return string_list; } public String[] asArrayString() { String[] sizeArr = new String[string_list.size()]; return string_list.toArray(sizeArr); } public Map<String, String> getMapColumnsAndValue() { int qdlines = size(); Map<String, String> mapKeyValue = new HashMap<>(); if (!(qdlines == 1 || string_array_headers.length == 1)) { mapKeyValue.put("error", String.format("Size of Columns list or size of headers list differ the 1 , size=(%s)", string_array_headers.length)); return mapKeyValue; } for (int k = 0; k < qdlines; k++) { String[] cols = string_list.get(k).split(LivestatusSeparator.SEP2()); if (cols.length != string_array_headers.length) { mapKeyValue.put("error", String.format("Headers count(%s) not equal columns count(%s)", string_array_headers.length, cols.length)); return mapKeyValue; } for (int i = 0; i < cols.length; i++) { mapKeyValue.put(string_array_headers[i], cols[i]); } } return mapKeyValue; } public String[] getHeaders_and_columns_asArrayString() { int qdlines = size(); if (!(qdlines > 0)) { return new String[] { String.format("Don't have columns, count=(%s)", string_array_headers.length) }; } String[] hc = new String[qdlines * string_list.get(0).split(LivestatusSeparator.SEP2()).length]; for (int k = 0; k < qdlines; k++) { String[] cols = string_list.get(k).split(LivestatusSeparator.SEP2()); if (cols.length != string_array_headers.length) { return new String[] { String.format("Headers count(%s) not equal columns count(%s)", string_array_headers.length, cols.length) }; } for (int i = 0; i < cols.length; i++) { hc[i] = string_array_headers[i] + " = " + cols[i]; } } return hc; } public String asString() { String str = ""; if (string_list != null && !string_list.isEmpty()) { for (String name : string_list) { str += name + LivestatusSeparator.SEP1(); } } return str; } public void add(String line) { boolean hasColumns = (query.hasColumns() && query.hasColumnHeaders()) || (!query.hasColumns()); if (hasColumns && line_count == 0) { string_array_headers = line.split(LivestatusSeparator.SEP2()); } else { string_list.add(line); } line_count += 1; } public int size() { return string_list.size(); } }