package org.whitesource.agent.api.model;

import java.io.Serializable;
import java.util.*;

/**
 * @author chen.luigi
 */
public class ScanSummaryInfo implements Serializable {

    /* --- Static members --- */

    private static final long serialVersionUID = -3801913583253812987L;

    /* --- Private Members --- */

    private long totalElapsedTime;
    private Collection<StepInfo> stepsSummaryInfo;
    private List<String> packageManagers;
    private List<String> sourceControlManagers;
    private List<String> containerRegistries;
    private List<String> otherIntegrationTypes;
    private boolean isPrivileged;
    private ScanMethod scanMethod;

    /* --- Constructors --- */

    public ScanSummaryInfo() {
        stepsSummaryInfo = new LinkedList<>();
        packageManagers = new LinkedList<>();
        containerRegistries = new LinkedList<>();
        sourceControlManagers = new LinkedList<>();
        otherIntegrationTypes = new LinkedList<>();
    }

    public ScanSummaryInfo(long totalElapsedTime, Collection<StepInfo> stepsSummaryInfo) {
        this();
        this.totalElapsedTime = totalElapsedTime;
        this.stepsSummaryInfo = stepsSummaryInfo;
    }

    /* --- Overridden methods --- */

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof ScanSummaryInfo)) return false;
        ScanSummaryInfo that = (ScanSummaryInfo) o;
        return totalElapsedTime == that.totalElapsedTime &&
                Objects.equals(stepsSummaryInfo, that.stepsSummaryInfo);
    }

    @Override
    public int hashCode() {
        return Objects.hash(totalElapsedTime, stepsSummaryInfo);
    }

    /* --- Getters / Setters --- */

    public long getTotalElapsedTime() {
        return totalElapsedTime;
    }

    public void setTotalElapsedTime(long totalElapsedTime) {
        this.totalElapsedTime = totalElapsedTime;
    }

    public Collection<StepInfo> getStepsSummaryInfo() {
        return stepsSummaryInfo;
    }

    public void setStepsSummaryInfo(Collection<StepInfo> stepsSummaryInfo) {
        this.stepsSummaryInfo = stepsSummaryInfo;
    }

    public List<String> getPackageManagers() {
        return packageManagers;
    }

    public void setPackageManagers(List<String> packageManagers) {
        this.packageManagers = packageManagers;
    }

    public List<String> getSourceControlManagers() {
        return sourceControlManagers;
    }

    public void setSourceControlManagers(List<String> sourceControlManagers) {
        this.sourceControlManagers = sourceControlManagers;
    }

    public List<String> getContainerRegistries() {
        return containerRegistries;
    }

    public void setContainerRegistries(List<String> containerRegistries) {
        this.containerRegistries = containerRegistries;
    }

    public List<String> getOtherIntegrationTypes() {
        return otherIntegrationTypes;
    }

    public void setOtherIntegrationTypes(List<String> otherIntegrationTypes) {
        this.otherIntegrationTypes = otherIntegrationTypes;
    }

    public boolean isPrivileged() {
        return isPrivileged;
    }

    public void setPrivileged(boolean privileged) {
        isPrivileged = privileged;
    }

    public ScanMethod getScanMethod() {
        return scanMethod;
    }

    public void setScanMethod(ScanMethod scanMethod) {
        this.scanMethod = scanMethod;
    }
}

@@ -651,16 +651,64 @@
 nMethod;
+%0A    private Map%3CString, String%3E scanStatistics;
 %0A%0A    /*
@@ -1007,24 +1007,66 @@
 edList%3C%3E();%0A
+        scanStatistics = new HashMap%3C%3E();%0A
     %7D%0A%0A    p
@@ -1794,32 +1794,248 @@
 Setters --- */%0A%0A
+    public Map%3CString, String%3E getScanStatistics() %7B%0A        return scanStatistics;%0A    %7D%0A%0A    public void setScanStatistics(Map%3CString, String%3E scanStatistics) %7B%0A        this.scanStatistics = scanStatistics;%0A    %7D%0A%0A
     public long 

Add scanStatistics object