All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencastproject.serviceregistry.api.JaxbServiceRegistration Maven / Gradle / Ivy

There is a newer version: 16.6
Show newest version
/*
 * Licensed to The Apereo Foundation under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 *
 * The Apereo Foundation licenses this file to you under the Educational
 * Community 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://opensource.org/licenses/ecl2.txt
 *
 * 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.opencastproject.serviceregistry.api;

import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

/**
 * A record of a service that creates and manages receipts.
 */
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "service", namespace = "http://serviceregistry.opencastproject.org")
@XmlRootElement(name = "service", namespace = "http://serviceregistry.opencastproject.org")
public class JaxbServiceRegistration implements ServiceRegistration {

  @XmlElement(name = "type")
  protected String serviceType;

  @XmlElement(name = "host")
  protected String host;

  @XmlElement(name = "path")
  protected String path;

  @XmlElement(name = "active")
  protected boolean active;

  @XmlElement(name = "online")
  protected boolean online;

  @XmlElement(name = "maintenance")
  protected boolean maintenanceMode;

  @XmlElement(name = "jobproducer")
  protected boolean jobProducer;

  /** The last time the service has been declared online */
  @XmlElement(name = "onlinefrom")
  protected Date onlineFrom;

  @XmlElement(name = "service_state")
  protected ServiceState serviceState;

  @XmlElement(name = "state_changed")
  protected Date stateChanged;

  @XmlElement(name = "error_state_trigger")
  protected int errorStateTrigger;

  @XmlElement(name = "warning_state_trigger")
  protected int warningStateTrigger;

  /**
   * Creates a new service registration which is online and not in maintenance mode.
   */
  public JaxbServiceRegistration() {
    this.online = true;
    this.active = true;
    this.maintenanceMode = false;
    this.onlineFrom = new Date();
    this.serviceState = ServiceState.NORMAL;
    this.stateChanged = new Date();
  }

  /**
   * Creates a new JAXB annotated service registration based on an existing service registration
   *
   * @param serviceRegistration
   */
  public JaxbServiceRegistration(ServiceRegistration serviceRegistration) {
    this.host = serviceRegistration.getHost();
    this.jobProducer = serviceRegistration.isJobProducer();
    this.maintenanceMode = serviceRegistration.isInMaintenanceMode();
    this.active = serviceRegistration.isActive();
    this.online = serviceRegistration.isOnline();
    this.onlineFrom = serviceRegistration.getOnlineFrom();
    this.path = serviceRegistration.getPath();
    this.serviceType = serviceRegistration.getServiceType();
    this.serviceState = serviceRegistration.getServiceState();
    this.stateChanged = serviceRegistration.getStateChanged();
    this.warningStateTrigger = serviceRegistration.getWarningStateTrigger();
    this.errorStateTrigger = serviceRegistration.getErrorStateTrigger();
  }

  /**
   * Creates a new service registration which is online and not in maintenance mode.
   *
   * @param host
   *          the host
   * @param serviceType
   *          the job type
   */
  public JaxbServiceRegistration(String serviceType, String host, String path) {
    this();
    this.serviceType = serviceType;
    this.host = host;
    this.path = path;
  }

  /**
   * Creates a new service registration which is online and not in maintenance mode.
   *
   * @param host
   *          the host
   * @param serviceType
   *          the job type
   * @param jobProducer
   */
  public JaxbServiceRegistration(String serviceType, String host, String path, boolean jobProducer) {
    this();
    this.serviceType = serviceType;
    this.host = host;
    this.path = path;
    this.jobProducer = jobProducer;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getHost()
   */
  @Override
  public String getHost() {
    return host;
  }

  /**
   * @param host
   *          the host to set
   */
  public void setHost(String host) {
    this.host = host;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getServiceType()
   */
  @Override
  public String getServiceType() {
    return serviceType;
  }

  /**
   * @param serviceType
   *          the serviceType to set
   */
  public void setServiceType(String serviceType) {
    this.serviceType = serviceType;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#isInMaintenanceMode()
   */
  @Override
  public boolean isInMaintenanceMode() {
    return maintenanceMode;
  }

  /**
   * Sets the maintenance status of this service registration
   *
   * @param maintenanceMode
   */
  public void setInMaintenanceMode(boolean maintenanceMode) {
    this.maintenanceMode = maintenanceMode;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#isActive()
   */
  @Override
  public boolean isActive() {
    return active;
  }

  public void setActive(boolean active) {
    this.active = active;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#isOnline()
   */
  @Override
  public boolean isOnline() {
    return online;
  }

  /**
   * Sets the online status of this service registration
   *
   * @param online
   */
  public void setOnline(boolean online) {
    if (online && !isOnline())
      setOnlineFrom(new Date());
    this.online = online;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getPath()
   */
  @Override
  public String getPath() {
    return path;
  }

  /**
   * @param path
   *          the path to set
   */
  public void setPath(String path) {
    this.path = path;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#isJobProducer()
   */
  @Override
  public boolean isJobProducer() {
    return jobProducer;
  }

  /**
   * Sets whether this service registration is a job producer.
   *
   * @param jobProducer
   *          the jobProducer to set
   */
  public void setJobProducer(boolean jobProducer) {
    this.jobProducer = jobProducer;
  }

  /**
   *
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getOnlineFrom()
   */
  @Override
  public Date getOnlineFrom() {
    return onlineFrom;
  }

  /**
   * Sets the last time the service has been declared online
   *
   * @param onlineFrom
   *          the onlineFrom to set
   */
  public void setOnlineFrom(Date onlineFrom) {
    this.onlineFrom = onlineFrom;
  }

  /**
   *
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getServiceState()
   */
  @Override
  public ServiceState getServiceState() {
    return serviceState;
  }

  /**
   * Sets the current state of the service.
   *
   * @param state
   *          current state
   */
  public void setServiceState(ServiceState state) {
    this.serviceState = state;
  }

  /**
   * Sets the current state of the service and the trigger Job. If the state is set to {@link ServiceState#WARNING} or
   * {@link ServiceState#ERROR} the triggered job will be set.
   *
   * @param state
   *          the service state
   * @param triggerJobSignature
   *          the triggered job signature
   */
  public void setServiceState(ServiceState state, int triggerJobSignature) {

    setServiceState(state);
    setStateChanged(new Date());
    if (state == ServiceState.WARNING) {
      setWarningStateTrigger(triggerJobSignature);
    } else if (state == ServiceState.ERROR) {
      setErrorStateTrigger(triggerJobSignature);
    }
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getStateChanged()
   */
  @Override
  public Date getStateChanged() {
    return stateChanged;
  }

  /**
   * Sets the last date when the state was changed
   *
   * @param stateChanged
   *          last date
   */
  public void setStateChanged(Date stateChanged) {
    this.stateChanged = stateChanged;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getErrorStateTrigger()
   */
  @Override
  public int getErrorStateTrigger() {
    return errorStateTrigger;
  }

  /**
   * Sets the job which triggered the last error state
   *
   * @param jobSignature
   *          the job
   */
  public void setErrorStateTrigger(int jobSignature) {
    this.errorStateTrigger = jobSignature;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.opencastproject.serviceregistry.api.ServiceRegistration#getWarningStateTrigger()
   */
  @Override
  public int getWarningStateTrigger() {
    return warningStateTrigger;
  }

  /**
   * Sets the job which triggered the last warning state
   *
   * @param jobSignature
   *          the job
   */
  public void setWarningStateTrigger(int jobSignature) {
    this.warningStateTrigger = jobSignature;
  }

  /**
   * {@inheritDoc}
   *
   * @see java.lang.Object#hashCode()
   */
  @Override
  public int hashCode() {
    return toString().hashCode();
  }

  /**
   * {@inheritDoc}
   *
   * @see java.lang.Object#equals(java.lang.Object)
   */
  @Override
  public boolean equals(Object obj) {
    if (!(obj instanceof ServiceRegistration))
      return false;
    ServiceRegistration registration = (ServiceRegistration) obj;
    return getHost().equals(registration.getHost()) && getServiceType().equals(registration.getServiceType());
  }

  /**
   * {@inheritDoc}
   *
   * @see java.lang.Object#toString()
   */
  @Override
  public String toString() {
    return getServiceType() + "@" + getHost();
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy