Диплом: Автоматизация оперативного управления муниципальным предприятием МУП Северный г.Электросталь

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
122
Приложение. Листинг основных программных модулей
/*
*
To change this license header, choose License Headers in Project Properties.
*
To change this template file, choose Tools | Templates
*
and open the template in the editor.
*/
package entities;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.ResourceBundle;
import java.util.stream.Collector;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
*
Класс (модель) для таблицы "Документ"
*/
@Entity
@Table(name = "document")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Document.findAll", query = "SELECT d FROM
Document d")
, @NamedQuery(name = "Document.findById", query = "SELECT d FROM
Document d WHERE d.id = :id")
, @NamedQuery(name = "Document.findByCreatedBy", query = "SELECT d
FROM Document d WHERE d.createdBy = :createdBy")
, @NamedQuery(name = "Document.findByModifiedBy", query = "SELECT d
FROM Document d WHERE d.modifiedBy = :modifiedBy")
123
, @NamedQuery(name = "Document.findByTitle", query = "SELECT d FROM
Document d WHERE d.title = :title")
, @NamedQuery(name = "Document.findByLocked", query = "SELECT d FROM
Document d WHERE d.locked = :locked")
, @NamedQuery(name = "Document.findAllInFolder", query = "SELECT d FROM
Document d WHERE d.idParentDocument.id = :idParentDocument")
, @NamedQuery(name = "Document.findAllInRootFolder", query = "SELECT d
FROM Document d WHERE d.idParentDocument = NULL")
})
public class Document implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Column(name = "created_by")
@Temporal(TemporalType.TIMESTAMP)
private Date createdBy;
@Column(name = "modified_by")
@Temporal(TemporalType.TIMESTAMP)
private Date modifiedBy;
@Size(max = 255)
@Column(name = "title")
private String title;
@Lob
@Size(max = 65535)
@Column(name = "description")
private String description;
@Lob
@Column(name = "data")
private byte[] data;
@Column(name = "locked")
private Boolean locked;
@OneToMany(mappedBy = "idDocument")
private Collection<DocumentRule> documentRuleCollection;
@OneToMany(mappedBy = "idParentDocument")
private Collection<Document> documentCollection;
@JoinColumn(name = "id_parent_document", referencedColumnName = "id")
@ManyToOne
private Document idParentDocument;
@JoinColumn(name = "id_document_type", referencedColumnName = "id")
@ManyToOne
private DocumentType idDocumentType;
@JoinColumn(name = "id_user", referencedColumnName = "id")
@ManyToOne
124
private User idUser;
/**
*
Конструктор класса
*/
public Document() {
}
/**
*
Коснтруктор класса
*
@param id Идентифкатор документа
*/
public Document(Integer id) {
this.id = id;
}
/**
*
Возвращает идентифкатор документа
*
@return Идентифкатор документа
*/
public Integer getId() {
return id;
}
/**
*
Задает идентифкатор документа
*
@param id Идентифкатор документа
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
Возвращает дату создания документа
*
@return Дата создания документа
*/
public Date getCreatedBy() {
return createdBy;
}
/**
*
Задает дату создания документа
*
@param createdBy Дата создания документа
*/
public void setCreatedBy(Date createdBy) {
this.createdBy = createdBy;
}
121
/**
*
Возвращает дату изменения документа
*
@return Дата изменения документа
*/
public Date getModifiedBy() {
return modifiedBy;
}
/**
*
Задает дату изменения документа
*
@param modifiedBy Дата изменения документа
*/
public void setModifiedBy(Date modifiedBy) {
this.modifiedBy = modifiedBy;
}
/**
*
Возвращает название документа
*
@return Название
*/
public String getTitle() {
return title;
}
/**
*
Задает название документа
*
@param title название документа
*/
public void setTitle(String title) {
this.title = title;
}
/**
*
Возвращает описание документа
*
@return описание документа
*/
public String getDescription() {
return description;
}
/**
*
Задает описание документа
*
@param description описание документа
*/
public void setDescription(String description) {
this.description = description;
}
122
/**
*
Возвращает содержимое файла
*
@return Содержимое файла
*/
public byte[] getData() {
return data;
}
/**
*
Задает содержимое файла
*
@param data Содержимое файла
*/
public void setData(byte[] data) {
this.data = data;
}
/**
*
Задает флаг контроля доступа
*
@return Значение флага контроля доступа
*/
public Boolean getLocked() {
return locked;
}
/**
*
Возвращает флаг контроля доступа
*
@param locked Значение флага контроля доступа
*/
public void setLocked(Boolean locked) {
this.locked = locked;
}
/**
*
Возвращает коллекцию правил доступа для данного документа
*
@return Коллекция правил доступа (DocumentRule)
*/
@XmlTransient
public Collection<DocumentRule> getDocumentRuleCollection() {
return documentRuleCollection;
}
/**
*
Задает коллекцию правил доступа для данного документа
*
@param documentRuleCollection Коллекция правил доступа (DocumentRule)
*/
public void
setDocumentRuleCollection(Collection<DocumentRule>
documentRuleCollection) {
this.documentRuleCollection = documentRuleCollection;
123
}
/**
*
Возвращает коллекцию дочерних документов
*
@return Коллекция элементов (Document)
*/
@XmlTransient
public Collection<Document> getDocumentCollection() {
return documentCollection;
}
/**
*
Задает коллекцию дочерних документов
*
@param documentCollection Коллекция элементов (Document)
*/
public void setDocumentCollection(Collection<Document> documentCollection) {
this.documentCollection = documentCollection;
}
/**
*
Возвращает родительский документ
*
@return Родительский документ
*/
public Document getIdParentDocument() {
return idParentDocument;
}
/**
*
Задает родительский документ
*
@param idParentDocument Родительский документ
*/
public void setIdParentDocument(Document idParentDocument) {
this.idParentDocument = idParentDocument;
}
/**
*
Возвращает тип документа (файл или папка)
*
@return Тип документа (файл или папка)
*/
public DocumentType getIdDocumentType() {
return idDocumentType;
}
/**
*
Задает тип документа (файл или папка)
*
@param idDocumentType Тип документа (файл или папка)
*/
public void setIdDocumentType(DocumentType idDocumentType) {
124
this.idDocumentType = idDocumentType;
}
/**
*
Возвращает создателя документа
*
@return Создатель документа (User)
*/
public User getIdUser() {
return idUser;
}
/**
*
Задает создателя документа
*
@param idUser Создатель документа (User)
*/
public void setIdUser(User idUser) {
this.idUser = idUser;
}
/**
*
Hash-код элемента
*
@return Hash-значение
*/
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
/**
*
Метод сравнения двух объектов (проверка равенства)
*
@param object Объект, который будет сравниваться с текущим
*
@return Результат сравнения
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Document)) {
return false;
}
Document other = (Document) object;
if ((this.id == null && other.id != null) || (this.id != null &&
!this.id.equals(other.id))) {
return false;
}
return true;
}
125
/**
*
Метод вычисления названия объекта
*
@return Название
*/
@Override
public String toString() {
return title;
}
/**
*
Метод проверки "Имеет ли пользователь разрешение на просмотр текущего
документа"
*
@param user Пользователь
*
@return Результат проверки (да, нет)
*/
public Boolean testViewAccess(User user) {
if (user == null) {
return false;
}
if (locked == false) {
return true;
}
if (idUser.getId().equals(user.getId())) {
return true;
}
if (user.getIdUserType().getId().equals(1)) {
return true;
}
Collection<DocumentRule> rules = documentRuleCollection;
for (DocumentRule rule : rules) {
if ((rule.getIdUser() != null && rule.getIdUser().getId().equals(user.getId())
&& rule.getAccessView())
|| (rule.getIdUserType() != null &&
rule.getIdUserType().getId().equals(user.getIdUserType().getId()) &&
rule.getAccessView())) {
return true;
}
}
return false;
}
/**
*
Метод проверки "Имеет ли пользователь разрешение на просмотр текущего
документа" (возвращает исключение)
*
@param user Пользователь
126
*
@throws Exception Результат проверки
*/
public void controlViewAccess(User user) throws Exception {
if (testViewAccess(user) == false) {
throw
new
Exception(ResourceBundle.getBundle("/resources/Bundle").getString("AccessDenied"
));
}
}
/**
*
Метод проверки "Имеет ли пользователь разрешение на удаление текущего
документа"
*
@param user Пользователь
*
@return Результат проверки
*/
public Boolean testDeleteAccess(User user) {
if (user == null) {
return false;
}
if (locked == false) {
return true;
}
if (idUser.getId().equals(user.getId())) {
return true;
}
if (user.getIdUserType().getId().equals(1)) {
return true;
}
Collection<DocumentRule> rules = getDocumentRuleCollection();
for (DocumentRule rule : rules) {
if (rule.getIdUser() != null) {
if (rule.getIdUser().getId().equals(user.getId()) && rule.getAccessDelete()
== true) {
}
}
return true;
if (rule.getIdUserType() != null) {
if (rule.getIdUserType().getId().equals(user.getIdUserType().getId()) &&
rule.getAccessDelete() == true) {
return true;
}
}
}
return false;
}
127
/**
*
Метод проверки "Имеет ли пользователь разрешение на удаление текущего
документа" (возвращает исключение)
*
@param user Пользователь
*
@throws Exception Результат проверки
*/
public void controlDeleteAccess(User user) throws Exception {
if (testDeleteAccess(user) == false) {
throw
new
Exception(ResourceBundle.getBundle("/resources/Bundle").getString("AccessDenied"
));
}
}
/**
*
Метод проверки "Имеет ли пользователь разрешение на добавление
документа"
*
@param user Пользователь
*
@return Результат проверки
*/
public Boolean testInsetAccess(User user) {
if (user == null) {
return false;
}
if (locked == false) {
return true;
}
if (idUser.getId().equals(user.getId())) {
return true;
}
if (user.getIdUserType().getId().equals(1)) {
return true;
}
Collection<DocumentRule> rules = getDocumentRuleCollection();
for (DocumentRule rule : rules) {
if ((rule.getIdUser() != null && rule.getIdUser().getId().equals(user.getId())
&& rule.getAccessInsert())
|| (rule.getIdUserType() != null &&
rule.getIdUserType().getId().equals(user.getIdUserType().getId()) &&
rule.getAccessInsert())) {
return true;
}
}
return false;
}

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)