/** * * Copyright (C) norad.fr * * 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 fr.norad.visuwall.core.business.domain; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import fr.norad.visuwall.api.domain.Commiter; import fr.norad.visuwall.api.domain.SoftwareProjectId; import fr.norad.visuwall.api.domain.BuildState; import fr.norad.visuwall.api.domain.TestResult; import fr.norad.visuwall.api.domain.quality.QualityResult; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; public class Build { private final String buildId; private boolean building; private BuildState state = BuildState.UNKNOWN; private List<Commiter> commiters = new ArrayList<Commiter>(); private long duration; private Date startTime; private Date estimatedFinishTime; private final Map<SoftwareProjectId, CapabilitiesResult> capabilitiesResults = new HashMap<SoftwareProjectId, CapabilitiesResult>(); public Build(String buildId) { this.buildId = buildId; } //TODO move and redo it with dates public void mergeResult(TestResult dest, TestResult source) { if (dest.getTotalCount() == 0) { dest.setCoverage(source.getCoverage()); dest.setFailCount(source.getFailCount()); dest.setPassCount(source.getPassCount()); dest.setSkipCount(source.getSkipCount()); } if (source.getCoverage() != 0) { dest.setCoverage(source.getCoverage()); } if (source.getTotalCount() != 0 && source.getCoverage() == 0) { // try to force with build stats dest.setFailCount(source.getFailCount()); dest.setPassCount(source.getPassCount()); dest.setSkipCount(source.getSkipCount()); } } public TestResult getUnitTestResult() { // TODO change that TestResult result = new TestResult(); for (SoftwareProjectId softwareProjectId : capabilitiesResults.keySet()) { CapabilitiesResult capabilitiesResult = capabilitiesResults.get(softwareProjectId); if (capabilitiesResult.getUnitTestResult() != null) { TestResult softwareRes = capabilitiesResult.getUnitTestResult(); mergeResult(result, softwareRes); } } return result; } public QualityResult getQualityResult() { for (SoftwareProjectId softwareProjectId : capabilitiesResults.keySet()) { CapabilitiesResult capabilitiesResult = capabilitiesResults.get(softwareProjectId); if (capabilitiesResult.getQualityResult() != null) { return capabilitiesResult.getQualityResult(); } } return null; } public TestResult getIntegrationTestResult() { TestResult result = new TestResult(); for (SoftwareProjectId softwareProjectId : capabilitiesResults.keySet()) { CapabilitiesResult capabilitiesResult = capabilitiesResults.get(softwareProjectId); if (capabilitiesResult.getIntegrationTestResult() != null) { TestResult softwareRes = capabilitiesResult.getIntegrationTestResult(); mergeResult(result, softwareRes); } } return result; } /////////////////////////////////////////////////////////////////////////////// public long getDuration() { return duration; } public void setDuration(long duration) { this.duration = duration; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public BuildState getState() { return state; } public void setState(BuildState state) { this.state = state; } public String getBuildId() { return buildId; } @Override public String toString() { ToStringHelper toString = Objects.toStringHelper(this) // .add("buildId", buildId) // .add("state", state) // .add("commiters", commiters) // .add("duration", duration) // .add("startTime", startTime); return toString.toString(); } public List<Commiter> getCommiters() { return commiters; } public void setCommiters(List<Commiter> commiters) { this.commiters = commiters; } @Override public boolean equals(Object o) { if (o instanceof Build) { Build b = (Build) o; return Objects.equal(buildId, b.buildId) && // Objects.equal(commiters, b.commiters) && // Objects.equal(duration, b.duration) && // Objects.equal(startTime, b.startTime) && // Objects.equal(state, b.state); // } return false; } @Override public int hashCode() { return Objects.hashCode(duration, buildId, startTime); } public boolean isBuilding() { return building; } public void setBuilding(boolean building) { this.building = building; } public void setEstimatedFinishTime(Date estimatedFinishTime) { this.estimatedFinishTime = estimatedFinishTime; } public Date getEstimatedFinishTime() { return estimatedFinishTime; } public Map<SoftwareProjectId, CapabilitiesResult> getCapabilitiesResults() { return capabilitiesResults; } }