001/*-------------------------------------------------------------------------+ 002| | 003| Copyright (c) 2009-2019 CQSE GmbH | 004| | 005+-------------------------------------------------------------------------*/ 006package org.conqat.engine.index.shared; 007 008import org.conqat.engine.commons.findings.TestDetachedFindingBuilder; 009import org.conqat.lib.commons.assessment.ETrafficLightColor; 010 011/** 012 * Builds {@link IndexFinding}s for test purposes. 013 */ 014public class TestIndexFindingBuilder { 015 016 private TestDetachedFindingBuilder detachedFinding = TestDetachedFindingBuilder.someDetachedFinding(); 017 private long analysisTimestamp; 018 019 /** 020 * @return a builder creating some fresh {@link IndexFinding} whose fields are 021 * all initialized with valid values. 022 */ 023 public static TestIndexFindingBuilder someIndexFinding() { 024 TestIndexFindingBuilder someIndexFinding = new TestIndexFindingBuilder(); 025 return someIndexFinding.withAnalysisTimestamp(123456L); 026 } 027 028 /** 029 * Ensures that the {@link IndexFinding} is {@linkplain #build() built} with the 030 * given {@linkplain IndexFinding#getAnalysisTimestamp() analysis timestamp}. 031 */ 032 public TestIndexFindingBuilder withAnalysisTimestamp(long analysisTimestamp) { 033 this.analysisTimestamp = analysisTimestamp; 034 return this; 035 } 036 037 /** 038 * Ensures that the {@link IndexFinding} is {@linkplain #build() built} with the 039 * given {@linkplain IndexFinding#getAssessment assessment}. 040 */ 041 public TestIndexFindingBuilder withAssessment(ETrafficLightColor assessment) { 042 detachedFinding.withAssessment(assessment); 043 return this; 044 } 045 046 /** 047 * Builds the {@link IndexFinding}. 048 * 049 * @return {@link IndexFinding} whose fields are all initialized with arbitrary 050 * but valid values, unless overwritten using this builder's methods. 051 */ 052 public IndexFinding build() { 053 return new IndexFinding(detachedFinding.build(), analysisTimestamp); 054 } 055}