Диплом: Автоматизация электронного документооборота для решения задач организационного управления на примере АО «Алюминий Металлург Рус»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
118
Приложение. Листинг основных программных модулей
/*
* 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")
119
, @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
120
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""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")