/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.adm.database; import org.eclipse.persistence.annotations.Index; import ru.codeinside.log.Logger; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; @Entity @EntityListeners(Logger.class) @SequenceGenerator(name = "bid_seq", sequenceName = "bid_seq") @Index(name = "bid_gid_idx", unique = false, columnNames = "gid") public class Bid { @Id @GeneratedValue(generator = "bid_seq") private Long id; @ManyToOne private Procedure procedure; @Column(nullable = false) private String processInstanceId; @Temporal(TemporalType.TIMESTAMP) private Date dateCreated = new Date(); @Temporal(TemporalType.TIMESTAMP) private Date dateFinished; @Column(nullable = false) private String declarant; @Column(nullable = false) private String version; private String comment; @ManyToOne private ProcedureProcessDefinition procedureProcessDefinition; @Column(nullable = false) private BidStatus status; @ElementCollection private Set<String> currentSteps; @ManyToOne private Employee employee; @Column(nullable = false, length = 512) private String tag; @ManyToOne(optional = true, fetch = FetchType.LAZY) @JoinColumn(name = "gid") private ExternalGlue glue; @Temporal(TemporalType.TIMESTAMP) @Column(name = "rest_date") private Date restDate; @Temporal(TemporalType.TIMESTAMP) @Column(name = "max_date") private Date maxDate; @Column(name = "default_rest_interval") private Integer defaultRestInterval; @Column(name = "default_max_interval") private Integer defaultMaxInterval; @Column(name = "worked_days", nullable = false) private boolean workedDays = false; public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public Procedure getProcedure() { return procedure; } public void setProcedure(Procedure procedure) { this.procedure = procedure; } public String getProcessInstanceId() { return processInstanceId; } public void setProcessInstanceId(String processInstanceId) { this.processInstanceId = processInstanceId; } public String getDeclarant() { return declarant; } public void setDeclarant(String declarant) { this.declarant = declarant; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public ProcedureProcessDefinition getProcedureProcessDefinition() { return procedureProcessDefinition; } public void setProcedureProcessDefinition(ProcedureProcessDefinition procedureProcessDefinition) { this.procedureProcessDefinition = procedureProcessDefinition; } public BidStatus getStatus() { return status; } public void setStatus(BidStatus status) { this.status = status; } public Set<String> getCurrentSteps() { if (currentSteps == null) { currentSteps = new LinkedHashSet<String>(); } return currentSteps; } public Date getDateCreated() { return dateCreated; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Date getDateFinished() { return dateFinished; } public void setDateFinished(Date dateFinished) { this.dateFinished = dateFinished; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; } public ExternalGlue getGlue() { return glue; } public void setGlue(ExternalGlue glue) { this.glue = glue; } public Date getRestDate() { return restDate; } public void setRestDate(Date restDate) { this.restDate = restDate; } public Date getMaxDate() { return maxDate; } public void setMaxDate(Date maxDate) { this.maxDate = maxDate; } public Integer getDefaultRestInterval() { return defaultRestInterval; } public void setDefaultRestInterval(Integer defaultRestInterval) { this.defaultRestInterval = defaultRestInterval; } public Integer getDefaultMaxInterval() { return defaultMaxInterval; } public void setDefaultMaxInterval(Integer defaultMaxInterval) { this.defaultMaxInterval = defaultMaxInterval; } public boolean getWorkedDays() { return workedDays; } public void setWorkedDays(boolean workDays) { this.workedDays = workDays; } public boolean hasDefaultInterval() { return defaultRestInterval != null && defaultMaxInterval != null; } public boolean hasDefaultWorkInterval() { return workedDays && defaultRestInterval != null && defaultMaxInterval != null; } }