/*
* Copyright (c) 2010-2013 Evolveum
*
* 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 com.evolveum.midpoint.web.page.admin.resources.dto;
import java.io.Serializable;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import org.apache.commons.lang.StringUtils;
/**
* @author lazyman
*/
public class ResourceState implements Serializable {
private OperationResultStatus lastAvailability;
private OperationResultStatus overall;
private OperationResultStatus confValidation;
private OperationResultStatus conInitialization;
private OperationResultStatus conConnection;
private OperationResultStatus conSanity;
private OperationResultStatus conSchema;
private OperationResultStatus extra;
private String extraName;
public OperationResultStatus getOverall() {
overall = updateOverallStatus();
if (overall == null) {
return OperationResultStatus.UNKNOWN;
}
return overall;
}
public OperationResultStatus getConfValidation() {
if (confValidation == null) {
return OperationResultStatus.UNKNOWN;
}
return confValidation;
}
public void setConfValidation(OperationResultStatus confValidation) {
this.confValidation = confValidation;
}
public OperationResultStatus getConInitialization() {
if (conInitialization == null) {
return OperationResultStatus.UNKNOWN;
}
return conInitialization;
}
public void setConInitialization(OperationResultStatus conInitialization) {
this.conInitialization = conInitialization;
}
public OperationResultStatus getConConnection() {
if (conConnection == null) {
return OperationResultStatus.UNKNOWN;
}
return conConnection;
}
public void setConConnection(OperationResultStatus conConnection) {
this.conConnection = conConnection;
}
public OperationResultStatus getConSanity() {
if (conSanity == null) {
return OperationResultStatus.UNKNOWN;
}
return conSanity;
}
public void setConSanity(OperationResultStatus conSanity) {
this.conSanity = conSanity;
}
public OperationResultStatus getConSchema() {
if (conSchema == null) {
return OperationResultStatus.UNKNOWN;
}
return conSchema;
}
public void setConSchema(OperationResultStatus conSchema) {
this.conSchema = conSchema;
}
public OperationResultStatus getExtra() {
if (extra == null) {
return OperationResultStatus.UNKNOWN;
}
return extra;
}
public void setExtra(OperationResultStatus extra) {
this.extra = extra;
}
public String getExtraName() {
if (StringUtils.isEmpty(extraName)) {
return "Unknown";
}
return extraName;
}
public void setExtraName(String extraName) {
this.extraName = extraName;
}
public OperationResultStatus getLastAvailability() {
if (lastAvailability == null) {
return OperationResultStatus.UNKNOWN;
}
return lastAvailability;
}
public void setLastAvailability(OperationResultStatus lastAvailability) {
this.lastAvailability = lastAvailability;
}
private OperationResultStatus updateOverallStatus() {
OperationResultStatus overall = OperationResultStatus.UNKNOWN;
overall = getOverallBasedOnPartialStatus(overall, getConConnection());
overall = getOverallBasedOnPartialStatus(overall, getConfValidation());
overall = getOverallBasedOnPartialStatus(overall, getConInitialization());
overall = getOverallBasedOnPartialStatus(overall, getConSanity());
overall = getOverallBasedOnPartialStatus(overall, getConSchema());
overall = getOverallBasedOnPartialStatus(overall, getExtra());
return overall;
}
private OperationResultStatus getOverallBasedOnPartialStatus(OperationResultStatus overall, OperationResultStatus partial) {
switch (overall) {
case UNKNOWN:
case SUCCESS:
if (!OperationResultStatus.UNKNOWN.equals(partial)) {
overall = partial;
}
break;
case WARNING:
if (!OperationResultStatus.UNKNOWN.equals(partial) && !OperationResultStatus.SUCCESS.equals(partial)) {
overall = partial;
}
break;
case FATAL_ERROR:
break;
case PARTIAL_ERROR:
break;
case HANDLED_ERROR:
break;
case IN_PROGRESS:
break;
}
return overall;
}
}