Диплом: Автоматизированные системы управления технологическими процессами (на примере ООО "Заря")

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
72
38. Стивен С. Скиена, Алгоритмы. Руководство по разработке, Спб,
БХВ-Петербург, 2018 г, 720 с.
39. Фредерик Брукс, Проектирование процесса проектирования.
Записки компьютерного эксперта, М., Вильямс, 2017 г, 464 с.
40. Царев Ю.Р, Мультиверсионное программное обеспечение.
Алгоритмы голосования и оценка надёжности: Монография, М, Инфра-М,
2018 г, 118 с.
41. Эрик Эванс, Предметно-ориентированное проектирование
(DDD). Структуризация сложных программных систем, М. , Вильямс, 2017 г,
448 с.
73
Приложение А
Фрагмент листинга программных модулей
/*
* 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;
importjava.io.Serializable;
importjava.util.Collection;
importjava.util.Date;
importjava.util.ResourceBundle;
importjava.util.stream.Collector;
importjavax.persistence.Basic;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.Lob;
importjavax.persistence.ManyToOne;
importjavax.persistence.NamedQueries;
importjavax.persistence.NamedQuery;
importjavax.persistence.OneToMany;
importjavax.persistence.Table;
importjavax.persistence.Temporal;
importjavax.persistence.TemporalType;
importjavax.validation.constraints.Size;
importjavax.xml.bind.annotation.XmlRootElement;
importjavax.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")
74
, @NamedQuery(name = "Document.findByModifiedBy", query = "SELECT d FROM
Document d WHERE d.modifiedBy = :modifiedBy")
, @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
privateDocumentTypeidDocumentType;
@JoinColumn(name = "id_user", referencedColumnName = "id")
75
@ManyToOne
private User idUser;
/**
* Конструкторкласса
*/
public Document() {
}
/**
* Коснтруктор класса
* @paramidИдентифкатор документа
*/
public Document(Integer id) {
this.id = id;
}
/**
* Возвращает идентифкатор документа
* @returnИдентифкатор документа
*/
public Integer getId() {
return id;
}
/**
* Задает идентифкатор документа
* @paramidИдентифкатор документа
*/
public void setId(Integer id) {
this.id = id;
}
/**
* Возвращает дату создания документа
* @return Датасозданиядокумента
*/
public Date getCreatedBy() {
returncreatedBy;
}
/**
* Задает дату создания документа
* @paramcreatedBy Дата создания документа
*/
public void setCreatedBy(Date createdBy) {
this.createdBy = createdBy;
}
76
/**
* Возвращает дату изменения документа
* @return Датаизменениядокумента
*/
public Date getModifiedBy() {
returnmodifiedBy;
}
/**
* Задает дату изменения документа
* @parammodifiedBy Дата изменения документа
*/
public void setModifiedBy(Date modifiedBy) {
this.modifiedBy = modifiedBy;
}
/**
* Возвращает название документа
* @return Название
*/
public String getTitle() {
return title;
}
/**
* Задает название документа
* @paramtitle название документа
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Возвращает описание документа
* @return описаниедокумента
*/
public String getDescription() {
return description;
}
/**
* Задает описание документа
* @paramdescription описание документа
*/
public void setDescription(String description) {
this.description = description;
}
/**
77
* Возвращаетсодержимоефайла
* @return Содержимоефайла
*/
public byte[] getData() {
return data;
}
/**
* Задает содержимое файла
* @paramdata Содержимое файла
*/
public void setData(byte[] data) {
this.data = data;
}
/**
* Задает флаг контроля доступа
* @return Значение флага контроля доступа
*/
public Boolean getLocked() {
return locked;
}
/**
* Возвращает флаг контроля доступа
* @paramlocked Значение флага контроля доступа
*/
public void setLocked(Boolean locked) {
this.locked = locked;
}
/**
* Возвращает коллекцию правил доступа для данного документа
* @return Коллекция правил доступа (DocumentRule)
*/
@XmlTransient
public Collection<DocumentRule>getDocumentRuleCollection() {
returndocumentRuleCollection;
}
/**
* Задает коллекцию правил доступа для данного документа
* @paramdocumentRuleCollectionКоллекцияправилдоступа (DocumentRule)
*/
public void setDocumentRuleCollection(Collection<DocumentRule>documentRuleCollection) {
this.documentRuleCollection = documentRuleCollection;
}
/**
78
* Возвращаетколлекциюдочернихдокументов
* @return Коллекцияэлементов (Document)
*/
@XmlTransient
public Collection<Document>getDocumentCollection() {
returndocumentCollection;
}
/**
* Задает коллекцию дочерних документов
* @paramdocumentCollectionКоллекцияэлементов (Document)
*/
public void setDocumentCollection(Collection<Document>documentCollection) {
this.documentCollection = documentCollection;
}
/**
* Возвращаетродительскийдокумент
* @return Родительскийдокумент
*/
public Document getIdParentDocument() {
returnidParentDocument;
}
/**
* Задает родительский документ
* @paramidParentDocument Родительский документ
*/
public void setIdParentDocument(Document idParentDocument) {
this.idParentDocument = idParentDocument;
}
/**
* Возвращаеттипдокумента (файлилипапка)
* @return Тип документа (файл или папка)
*/
publicDocumentTypegetIdDocumentType() {
returnidDocumentType;
}
/**
* Задает тип документа (файл или папка)
* @paramidDocumentType Тип документа (файл или папка)
*/
public void setIdDocumentType(DocumentTypeidDocumentType) {
this.idDocumentType = idDocumentType;
}
/**
* Возвращает создателя документа
79
* @return Создательдокумента (User)
*/
public User getIdUser() {
returnidUser;
}
/**
* Задает создателя документа
* @paramidUser Создатель документа (User)
*/
public void setIdUser(User idUser) {
this.idUser = idUser;
}
/**
* Hash-кодэлемента
* @return Hash-значение
*/
@Override
publicinthashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
returnhash;
}
/**
* Метод сравнения двух объектов (проверка равенства)
* @paramobject Объект, который будет сравниваться с текущим
* @return Результатсравнения
*/
@Override
publicboolean 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))) {
returnfalse;
}
returntrue;
}
/**
* Метод вычисления названия объекта
* @return Название
*/
@Override
public String toString() {
80
return title;
}
/**
* Метод проверки "Имеет ли пользователь разрешение на просмотр текущего
документа"
* @paramuser Пользователь
* @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())) {
returntrue;
}
}
returnfalse;
}
/**
* Метод проверки "Имеет ли пользователь разрешение на просмотр текущего
документа" (возвращает исключение)
* @paramuser Пользователь
* @throwsException Результат проверки
*/
public void controlViewAccess(User user) throws Exception {
if (testViewAccess(user) == false) {
throw new
Exception(ResourceBundle.getBundle("/resources/Bundle").getString("AccessDenied"));
}
}
81
/**
* Метод проверки "Имеет ли пользователь разрешение на удаление текущего
документа"
* @paramuser Пользователь
* @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) {
returntrue;
}
}
}
returnfalse;
}
/**
* Метод проверки "Имеет ли пользователь разрешение на удаление текущего
документа" (возвращает исключение)
* @paramuser Пользователь
* @throwsException Результат проверки
*/
public void controlDeleteAccess(User user) throws Exception {
if (testDeleteAccess(user) == false) {
throw new
Exception(ResourceBundle.getBundle("/resources/Bundle").getString("AccessDenied"));

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

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