[ create a new paste ] login | about

Link: http://codepad.org/wrYsUuxV    [ raw code | fork ]

C, pasted on Apr 13:
import static java.util.Collections.unmodifiableSet;
import static java.util.Objects.requireNonNull;
import static java.util.Optional.ofNullable;

import static com.aa.cleanwithus.util.ToStrings.toStringBuilder;

import java.util.Collection;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.aa.cleanwithus.flight.CompanyCategory;
import org.hibernate.annotations.Immutable;

@Entity(name="ReconciliationTurn")
@Table(name="reconcile_turn")
@Immutable
public class TurnEntity {
   private static final Aircraft DEFAULT_AIRCRAFT = new Aircraft();

   @Id
   @Column(name="reconcile_turn_id")
   private long id;

   @Column(name="rt_station")
   @NotNull
   private String station;

   @Column(name="rt_carrier_category")
   @NotNull
   private CompanyCategory carrierCategory;

   @Embedded
   @AttributeOverrides({
      @AttributeOverride(name="tail",column=@Column(name="rt_tail")),
      @AttributeOverride(name="fleet",column=@Column(name="rt_fleet"))
   })
   private Aircraft aircraft;

   @Embedded
   @AttributeOverrides({
      @AttributeOverride(name="id",column=@Column(name="rt_in_id")),
      @AttributeOverride(name="number",column=@Column(name="rt_in_number")),
      @AttributeOverride(name="arrivalTime",column=@Column(name="rt_in_arr_time")),
      @AttributeOverride(name="origin",column=@Column(name="rt_in_origin"))
   })
   private Inbound inbound;

   @Embedded
   @AttributeOverrides({
      @AttributeOverride(name="id",column=@Column(name="rt_out_id")),
      @AttributeOverride(name="number",column=@Column(name="rt_out_number")),
      @AttributeOverride(name="departureTime",column=@Column(name="rt_out_dep_time")),
      @AttributeOverride(name="destination",column=@Column(name="rt_out_destination"))
   })
   private Outbound outbound;

   @OneToMany
   @JoinColumn(name="rj_turn")
   private Set<JobEntity> jobs;

   TurnEntity() {}
   public TurnEntity(
      long id,
      String station,
      CompanyCategory carrierCategory,
      Aircraft aircraft,
      Optional<Inbound> inbound,
      Optional<Outbound> outbound,
      Collection<? extends JobEntity> jobs
   ){
      this.id       = id;
      this.station  = requireNonNull(station);
      this.carrierCategory = requireNonNull(carrierCategory);
      this.aircraft = requireNonNull(aircraft);
      this.inbound  = inbound.orElse(null);
      this.outbound = outbound.orElse(null);
      this.jobs     = new HashSet<>(jobs);
   }

   @Override
   public String toString() {
      return toStringBuilder(this)
         .append("id", id)
         .append("station",  getStation())
         .append("carrierCategory", getCarrierCategory())
         .append("aircraft", getAircraft())
         .append("inbound",  getInbound().orElse(null))
         .append("outbound", getOutbound().orElse(null))
         .append("jobs",     getJobs())
      .build();
   }

   @Override
   public final int hashCode() {
      return Long.hashCode(getId());
   }

   @Override
   public final boolean equals(Object obj) {
      if (this == obj) return true;
      if (!(obj instanceof TurnEntity)) return false;

      TurnEntity rhs = (TurnEntity)obj;
      return getId() == rhs.getId();
   }

   public long getId() {
      return id;
   }

   public String getStation() {
      return station;
   }

   public CompanyCategory getCarrierCategory() {
      return carrierCategory;
   }

   public Optional<Inbound> getInbound() {
      return ofNullable(inbound);
   }

   public Optional<Outbound> getOutbound() {
      return ofNullable(outbound);
   }

   public Aircraft getAircraft() {
      return aircraft != null ? aircraft : DEFAULT_AIRCRAFT;
   }

   public Set<JobEntity> getJobs() {
      return unmodifiableSet(jobs);
   }
}


Create a new paste based on this one


Comments: