/*************************GO-LICENSE-START*********************************
* Copyright 2014 ThoughtWorks, Inc.
*
* 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.
*************************GO-LICENSE-END***********************************/
package com.thoughtworks.go.presentation.pipelinehistory;
import com.thoughtworks.go.domain.PipelinePauseInfo;
public class PipelineModel {
private final String pipelineName;
private final boolean canForce;
private final boolean canOperate;
private boolean canAdminister = false;
private final PipelinePauseInfo pipelinePauseInfo;
private final PipelineInstanceModels activePipelineInstances;
public PipelineModel(String pipelineName, boolean canForce, boolean canOperate, PipelinePauseInfo pipelinePauseInfo) {
this.pipelineName = pipelineName;
this.canForce = canForce;
this.pipelinePauseInfo = pipelinePauseInfo;
this.canOperate = canOperate;
activePipelineInstances = PipelineInstanceModels.createPipelineInstanceModels();
}
public void addPipelineInstance(PipelineInstanceModel pipelineInstanceModel) {
activePipelineInstances.add(pipelineInstanceModel);
}
public void addPipelineInstanceToFront(PipelineInstanceModel pipelineInstanceModel) {
activePipelineInstances.add(0, pipelineInstanceModel);
}
public String getName() {
return pipelineName;
}
public boolean hasNewRevisions() {
return getLatestPipelineInstance().hasNewRevisions();
}
public boolean hasNeverCheckedForRevisions() {
return getLatestPipelineInstance().hasNeverCheckedForRevisions();
}
/**
* Note: this check should be part of the scheduling checker.
* We will refactor it down to that point.
*/
public boolean canForce() {
return canForce && !getLatestPipelineInstance().isPreparingToSchedule();
}
public PipelineInstanceModel getLatestPipelineInstance() {
return activePipelineInstances.first();
}
public PipelineInstanceModels getActivePipelineInstances() {
return activePipelineInstances;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
PipelineModel that = (PipelineModel) o;
if (canForce != that.canForce) {
return false;
}
if (!activePipelineInstances.equals(that.activePipelineInstances)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = (canForce ? 1 : 0);
result = 31 * result + (activePipelineInstances.hashCode());
return result;
}
@Override public String toString() {
return this.getClass().getSimpleName() + "{" +
"canForce='" + canForce + '\'' +
", activePipelineInstances='" + activePipelineInstances + '\'' +
'}';
}
public PipelinePauseInfo getPausedInfo() {
return pipelinePauseInfo;
}
public boolean canOperate() {
return canOperate;
}
public boolean canAdminister() {
return canAdminister;
}
public PipelineModel updateAdministrability(boolean value) {
canAdminister = value;
return this;
}
}