content: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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 org.apache.ambari.server.orm.entities;
  
  import java.util.List;
  
  /**
   * LDAP sync event entity.
   */
  public class LdapSyncEventEntity {
  
    /**
     * The unique id.
     */
    private final long id;
  
    /**
     * The status of this event.
     */
    private Status status;
  
    /**
     * The detail status message for this event.
     */
    private String statusDetail;
  
    /**
     * Sync event times.
     */
    private long startTime;
    private long endTime;
  
    /**
     * Results of sync event.
     */
    private Integer usersCreated;
    private Integer usersUpdated;
    private Integer usersRemoved;
    private Integer usersSkipped;
    private Integer groupsCreated;
    private Integer groupsUpdated;
    private Integer groupsRemoved;
    private Integer membershipsCreated;
    private Integer membershipsRemoved;
  
    /**
     * The specifications that define the sync event.
     */
    private List<LdapSyncSpecEntity> specs;
  
  
    // ----- Constructors ------------------------------------------------------
  
    /**
     * Construct an LdapSyncEventEntity.
     *
     * @param id  the unique id
     */
    public LdapSyncEventEntity(long id) {
      this.id = id;
      this.status = Status.PENDING;
    }
  
  
    // ----- LdapSyncEventEntity -----------------------------------------------
  
    /**
     * Get the id.
     *
     * @return the id
     */
    public long getId() {
      return id;
    }
  
    /**
     * Get the event status.
     *
     * @return the status
     */
    public Status getStatus() {
      return status;
    }
  
    /**
     * Set the event status.
     *
     * @param status  the status
     */
    public void setStatus(Status status) {
      this.status = status;
    }
  
    /**
     * Get the event status detail message.
     *
     * @return the event detail
     */
    public String getStatusDetail() {
      return statusDetail;
    }
  
    /**
     * Set the event status detail message.
     *
     * @param statusDetail  the event status detail message
     */
    public void setStatusDetail(String statusDetail) {
      this.statusDetail = statusDetail;
    }
  
    /**
     * Get the event specifications.
     *
     * @return the event specs
     */
    public List<LdapSyncSpecEntity> getSpecs() {
      return specs;
    }
  
    /**
     * Set the event specifications.
     *
     * @param specs  the event specifications
     */
    public void setSpecs(List<LdapSyncSpecEntity> specs) {
      this.specs = specs;
    }
  
    /**
     * Get the time that the sync started.
     *
     * @return the sync start time (millis)
     */
    public long getStartTime() {
      return startTime;
    }
  
    /**
     * Set the sync start time.
     *
     * @param startTime  the sync start time (millis)
     */
    public void setStartTime(long startTime) {
      this.startTime = startTime;
    }
  
    /**
     * Get the time the the sync event ended.
     *
     * @return  the end time (millis)
     */
    public long getEndTime() {
      return endTime;
    }
  
    /**
     * Set the sync end time.
     *
     * @param endTime  the end time (millis)
     */
    public void setEndTime(long endTime) {
      this.endTime = endTime;
    }
  
    /**
     * Get the number of users created during the sync event.
     *
     * @return the number of users created
     */
    public Integer getUsersCreated() {
      return usersCreated;
    }
  
    /**
     * Set the number of users created during the sync event.
     *
     * @param usersCreated  the number of users created
     */
    public void setUsersCreated(Integer usersCreated) {
      this.usersCreated = usersCreated;
    }
  
    /**
     * Get the number of users updated during the sync event.
     *
     * @return the number of users updated
     */
    public Integer getUsersUpdated() {
      return usersUpdated;
    }
  
    /**
     * Set the number of users updated during the sync event.
     *
     * @param usersUpdated  the number of users updated
     */
    public void setUsersUpdated(Integer usersUpdated) {
      this.usersUpdated = usersUpdated;
    }
  
    /**
     * Get the number of users removed during the sync event.
     *
     * @return the number of users removed
     */
    public Integer getUsersRemoved() {
      return usersRemoved;
    }
  
    /**
     * Set the number of users removed during the sync event.
     *
     * @param usersRemoved  the number of users removed
     */
    public void setUsersRemoved(Integer usersRemoved) {
      this.usersRemoved = usersRemoved;
    }
  
    /**
     * Get the number of groups created during the sync event.
     *
     * @return the number of groups created
     */
    public Integer getGroupsCreated() {
      return groupsCreated;
    }
  
    /**
     * Set the number of groups created during the sync event.
     *
     * @param groupsCreated  the number of groups created
     */
    public void setGroupsCreated(Integer groupsCreated) {
      this.groupsCreated = groupsCreated;
    }
  
    /**
     * Get the number of groups updated during the sync event.
     *
     * @return the number of groups updated
     */
    public Integer getGroupsUpdated() {
      return groupsUpdated;
    }
  
    /**
     * Set the number of groups updated during the sync event.
     *
     * @param groupsUpdated  the number of groups updated
     */
    public void setGroupsUpdated(Integer groupsUpdated) {
      this.groupsUpdated = groupsUpdated;
    }
  
    /**
     * Get the number of groups removed during the sync event.
     *
     * @return the number of groups removed
     */
    public Integer getGroupsRemoved() {
      return groupsRemoved;
    }
  
    /**
     * Set the number of groups removed during the sync event.
     *
     * @param groupsRemoved  the number of groups removed
     */
    public void setGroupsRemoved(Integer groupsRemoved) {
      this.groupsRemoved = groupsRemoved;
    }
  
    /**
     * Get the number of memberships created during the sync event.
     *
     * @return the number of memberships created
     */
    public Integer getMembershipsCreated() {
      return membershipsCreated;
    }
  
    /**
     * Set the number of memberships created during the sync event.
     *
     * @param membershipsCreated  the number of memberships created
     */
    public void setMembershipsCreated(Integer membershipsCreated) {
      this.membershipsCreated = membershipsCreated;
    }
  
    /**
     * Get the number of memberships removed during the sync event.
     *
     * @return the number of memberships removed
     */
    public Integer getMembershipsRemoved() {
      return membershipsRemoved;
    }
  
    /**
     * Set the number of memberships removed during the sync event.
     *
     * @param membershipsRemoved  the number of memberships removed
     */
    public void setMembershipsRemoved(Integer membershipsRemoved) {
      this.membershipsRemoved = membershipsRemoved;
    }
  
    public Integer getUsersSkipped() {
      return usersSkipped;
    }
  
    public void setUsersSkipped(Integer usersSkipped) {
      this.usersSkipped = usersSkipped;
    }
  
  
    // ----- enum : Status -----------------------------------------------------
  
    /**
     * LDAP sync event status
     */
    public enum Status {
      PENDING,  // sync is queued for execution
      RUNNING,  // sync is running
      ERROR,    // error occurred during sync
      COMPLETE  // sync is complete
    }
  }
  