/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.project; /* * #%L * Intuit Tank data model * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.Table; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hibernate.envers.Audited; import org.hibernate.validator.constraints.NotEmpty; import com.intuit.tank.vm.api.enumerated.VMRegion; import com.intuit.tank.vm.vmManager.RegionRequest; /** * JobRegionDescription describes a setting for the number of users to run on a specific AWS region. * * @author dangleton * */ @Entity @Audited @Table(name = "job_region") public class JobRegion extends BaseEntity implements RegionRequest, Comparable<JobRegion> { @SuppressWarnings("unused") private static final Logger LOG = LogManager.getLogger(JobRegion.class); private static final long serialVersionUID = 1L; @Column(name = "region") @Enumerated(EnumType.STRING) private VMRegion region = VMRegion.US_WEST_1; @NotEmpty @Column(name = "users", nullable = false) private String users; /** * */ public JobRegion() { } /** * @param region * @param users */ public JobRegion(VMRegion region, String users) { this.region = region; this.users = users; } /** * @{inheritDoc */ @Override public VMRegion getRegion() { return region; } /** * @param region * the region to set */ public void setRegion(VMRegion region) { this.region = region; } /** * @{inheritDoc */ @Override public String getUsers() { return users; } /** * @param users * the users to set */ public void setUsers(String users) { this.users = users; } /** * @{inheritDoc */ @Override public boolean equals(Object obj) { if (!(obj instanceof JobRegion)) { return false; } JobRegion o = (JobRegion) obj; if (getId() == 0) { return new EqualsBuilder().append(o.getRegion(), getRegion()).append(o.getUsers(), getUsers()).isEquals(); } return new EqualsBuilder().append(getId(), o.getId()).isEquals(); } /** * @{inheritDoc */ @Override public int hashCode() { return new HashCodeBuilder(29, 41).append(getRegion()).append(getUsers()).toHashCode(); } /** * @{inheritDoc */ @Override public String toString() { return ToStringBuilder.reflectionToString(this); } @Override public int compareTo(JobRegion o) { return this.region.compareTo(o.region); } }