/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* 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 org.kie.server.controller.api.model;
import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "kie-server-instance")
public class KieServerInstance {
private String identifier;
private String name;
private String version;
private Set<KieServerInstanceInfo> managedInstances;
private KieServerStatus status;
private KieServerSetup kieServerSetup;
public KieServerInstance() {
}
public KieServerInstance(String identifier, String name, String version, Set<KieServerInstanceInfo> managedInstances, KieServerStatus status, KieServerSetup kieServerSetup) {
this.identifier = identifier;
this.name = name;
this.version = version;
this.managedInstances = managedInstances;
this.status = status;
this.kieServerSetup = kieServerSetup;
}
/**
* Returns unique identifier of the KieServer
* @return
*/
@XmlElement(name = "server-id")
public String getIdentifier(){
return this.identifier;
}
/**
* Returns list of URLs where given KieServer can be found
* @return
*/
@XmlElementWrapper(name = "server-managed-instances")
public Set<KieServerInstanceInfo> getManagedInstances() {
return this.managedInstances;
}
@XmlElement(name = "server-status")
public KieServerStatus getStatus() {
if (managedInstances != null && !managedInstances.isEmpty()) {
int statusBalance = 0;
for (KieServerInstanceInfo instanceInfo : managedInstances) {
if (KieServerStatus.UP.equals(instanceInfo.getStatus())) {
statusBalance++;
} else if (KieServerStatus.DOWN.equals(instanceInfo.getStatus())) {
statusBalance--;
}
}
if (statusBalance == managedInstances.size()) {
// all instances are up
this.status = KieServerStatus.UP;
} else if ((statusBalance * (-1)) == managedInstances.size()) {
// all instances are down
this.status = KieServerStatus.DOWN;
} else {
// some instances are up
this.status = KieServerStatus.PARTIAL_UP;
}
} else {
this.status = KieServerStatus.UNKNOWN;
}
return this.status;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
public void setManagedInstances(Set<KieServerInstanceInfo> managedInstances) {
this.managedInstances = managedInstances;
}
public void setStatus(KieServerStatus status) {
this.status = status;
}
@XmlElement(name = "server-setup")
public KieServerSetup getKieServerSetup() {
return kieServerSetup;
}
public void setKieServerSetup(KieServerSetup kieServerSetup) {
this.kieServerSetup = kieServerSetup;
}
@XmlElement(name = "server-name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "server-version")
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}