001/*-------------------------------------------------------------------------+ 002| | 003| Copyright (c) 2005-2017 The ConQAT Project | 004| | 005| Licensed under the Apache License, Version 2.0 (the "License"); | 006| you may not use this file except in compliance with the License. | 007| You may obtain a copy of the License at | 008| | 009| http://www.apache.org/licenses/LICENSE-2.0 | 010| | 011| Unless required by applicable law or agreed to in writing, software | 012| distributed under the License is distributed on an "AS IS" BASIS, | 013| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 014| See the License for the specific language governing permissions and | 015| limitations under the License. | 016| | 017+-------------------------------------------------------------------------*/ 018package org.conqat.engine.index.shared; 019 020import java.io.Serializable; 021import java.util.ArrayList; 022import java.util.Collection; 023import java.util.List; 024 025import org.conqat.lib.commons.js_export.ExportToJavaScript; 026 027import com.fasterxml.jackson.annotation.JsonCreator; 028import com.fasterxml.jackson.annotation.JsonProperty; 029 030/** Result object that wraps a list of added and removed findings */ 031@ExportToJavaScript 032public class FindingDelta implements Serializable { 033 034 /** Version used for serialization. */ 035 private static final long serialVersionUID = 1; 036 037 /** The name of the JSON property name for {@link #addedFindings}. */ 038 private static final String ADDED_FINDINGS_PROPERTY = "addedFindings"; 039 040 /** The name of the JSON property name for {@link #findingsInChangedCode}. */ 041 private static final String FINDINGS_IN_CHANGED_CODE_PROPERTY = "findingsInChangedCode"; 042 043 /** The name of the JSON property name for {@link #removedFindings}. */ 044 private static final String REMOVED_FINDINGS_PROPERTY = "removedFindings"; 045 046 /** The name of the JSON property name for {@link #findingSummary}. */ 047 private static final String FINDING_SUMMARY_PROPERTY = "findingSummary"; 048 049 /** The name of the JSON property name for {@link #numberOfAddedFindings}. */ 050 private static final String NUMBER_OF_ADDED_FINDINGS_PROPERTY = "numberOfAddedFindings"; 051 052 /** 053 * The name of the JSON property name for 054 * {@link #numberOfFindingsInChangedCode}. 055 */ 056 private static final String NUMBER_OF_FINDINGS_IN_CHANGED_CODE_PROPERTY = "numberOfFindingsInChangedCode"; 057 058 /** The name of the JSON property name for {@link #numberOfRemovedFindings}. */ 059 private static final String NUMBER_OF_REMOVED_FINDINGS_PROPERTY = "numberOfRemovedFindings"; 060 061 /** The added findings. */ 062 @JsonProperty(ADDED_FINDINGS_PROPERTY) 063 private final List<TrackedFinding> addedFindings; 064 065 /** The findings in changed code. */ 066 @JsonProperty(FINDINGS_IN_CHANGED_CODE_PROPERTY) 067 private final List<TrackedFinding> findingsInChangedCode; 068 069 /** The removed findings. */ 070 @JsonProperty(REMOVED_FINDINGS_PROPERTY) 071 private final List<TrackedFinding> removedFindings; 072 073 /** The summary of the finding churn. */ 074 @JsonProperty(FINDING_SUMMARY_PROPERTY) 075 private final List<FindingsSummaryCategoryInfo> findingSummary; 076 077 /** 078 * The number of added findings in the delta, regardless of any applied filters. 079 */ 080 @JsonProperty(NUMBER_OF_ADDED_FINDINGS_PROPERTY) 081 private final int numberOfAddedFindings; 082 083 /** The number of findings in code changed since the delta, */ 084 @JsonProperty(NUMBER_OF_FINDINGS_IN_CHANGED_CODE_PROPERTY) 085 private final int numberOfFindingsInChangedCode; 086 087 /** 088 * The number of removed findings in the delta, regardless of any applied 089 * filters. 090 */ 091 @JsonProperty(NUMBER_OF_REMOVED_FINDINGS_PROPERTY) 092 private final int numberOfRemovedFindings; 093 094 public FindingDelta(Collection<TrackedFinding> addedFindings, Collection<TrackedFinding> findingsInChangedCode, 095 Collection<TrackedFinding> removedFindings) { 096 this(addedFindings, findingsInChangedCode, removedFindings, addedFindings.size(), findingsInChangedCode.size(), 097 removedFindings.size(), null); 098 } 099 100 @JsonCreator 101 public FindingDelta(@JsonProperty(ADDED_FINDINGS_PROPERTY) Collection<TrackedFinding> addedFindings, 102 @JsonProperty(FINDINGS_IN_CHANGED_CODE_PROPERTY) Collection<TrackedFinding> findingsInChangedCode, 103 @JsonProperty(REMOVED_FINDINGS_PROPERTY) Collection<TrackedFinding> removedFindings, 104 @JsonProperty(NUMBER_OF_ADDED_FINDINGS_PROPERTY) int numberOfAddedFindings, 105 @JsonProperty(NUMBER_OF_FINDINGS_IN_CHANGED_CODE_PROPERTY) int numberOfFindingsInChangedCode, 106 @JsonProperty(NUMBER_OF_REMOVED_FINDINGS_PROPERTY) int numberOfRemovedFindings, 107 @JsonProperty(FINDING_SUMMARY_PROPERTY) List<FindingsSummaryCategoryInfo> findingSummary) { 108 this.numberOfAddedFindings = numberOfAddedFindings; 109 this.numberOfFindingsInChangedCode = numberOfFindingsInChangedCode; 110 this.numberOfRemovedFindings = numberOfRemovedFindings; 111 this.addedFindings = new ArrayList<>(addedFindings); 112 this.findingsInChangedCode = new ArrayList<>(findingsInChangedCode); 113 this.removedFindings = new ArrayList<>(removedFindings); 114 this.findingSummary = findingSummary; 115 } 116 117 /** Returns addedFindings. */ 118 public List<TrackedFinding> getAddedFindings() { 119 return addedFindings; 120 } 121 122 /** Returns findingsInChangedCode. */ 123 public List<TrackedFinding> getFindingsInChangedCode() { 124 return findingsInChangedCode; 125 } 126 127 /** Returns removedFindings. */ 128 public List<TrackedFinding> getRemovedFindings() { 129 return removedFindings; 130 } 131 132 /** Returns findingSummary. */ 133 public List<FindingsSummaryCategoryInfo> getFindingSummary() { 134 return findingSummary; 135 } 136 137 /** Returns numberOfAddedFindings. */ 138 public int getNumberOfAddedFindings() { 139 return numberOfAddedFindings; 140 } 141 142 /** Returns numberOfFindingsInChangedCode. */ 143 public int getNumberOfFindingsInChangedCode() { 144 return numberOfFindingsInChangedCode; 145 } 146 147 /** Returns numberOfRemovedFindings. */ 148 public int getNumberOfRemovedFindings() { 149 return numberOfRemovedFindings; 150 } 151}