/*
 * Copyright 2017 Ivaylo Stoyanov <me@ivkos.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.ivkos.gpsd4j.messages;

import com.ivkos.gpsd4j.messages.reports.SKYReport;
import com.ivkos.gpsd4j.messages.reports.TPVReport;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.List;

import static java.util.Collections.emptyList;
import static java.util.Collections.unmodifiableList;

@ToString
@EqualsAndHashCode(callSuper = false)
public class PollMessage extends GpsdCommandMessage
{
   public static final String CLASS = "POLL";

   private LocalDateTime time;
   private Integer active;

   private List<TPVReport> tpv;
   private List<SKYReport> sky;

   public LocalDateTime getTime()
   {
      return time;
   }

   /**
    * @return Count of active devices.
    */
   public Integer getActiveCount()
   {
      return active;
   }

   public List<TPVReport> getTPVList()
   {
      return (tpv != null) ? unmodifiableList(tpv) : emptyList();
   }

   public List<SKYReport> getSKYList()
   {
      return (sky != null) ? unmodifiableList(sky) : emptyList();
   }

   @Override
   public String getGpsdClass()
   {
      return CLASS;
   }
}

@@ -644,16 +644,70 @@
 sages;%0A%0A
+import com.fasterxml.jackson.annotation.JsonProperty;%0A
 import c
@@ -835,16 +835,38 @@
 shCode;%0A
+import lombok.Getter;%0A
 import l
@@ -1189,16 +1189,27 @@
 POLL%22;%0A%0A
+   @Getter%0A
    priva
@@ -1234,164 +1234,8 @@
 ime;
-%0A   private Integer active;%0A%0A   private List%3CTPVReport%3E tpv;%0A   private List%3CSKYReport%3E sky;%0A%0A   public LocalDateTime getTime()%0A   %7B%0A      return time;%0A   %7D
 %0A%0A  
@@ -1288,22 +1288,61 @@
   */%0A   
-public
+@Getter%0A   @JsonProperty(%22active%22)%0A   private
  Integer
@@ -1346,12 +1346,9 @@
 ger 
-getA
+a
 ctiv
@@ -1357,41 +1357,74 @@
 ount
-()%0A   %7B%0A      return active;%0A   %7D
+;%0A%0A   private List%3CTPVReport%3E tpv;%0A   private List%3CSKYReport%3E sky;
 %0A%0A  

Refactor PollMessage