Разработка системы контроля и управления доступом к охраняемым объектам

Принципы работы систем контроля и управления доступом, принцип их работы и оценка возможностей. Сравнительное описание методов идентификации. Разработка информационно-компьютерной системы контроля и управления доступом. Создание аппаратной подсистемы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 26.07.2013
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

<noServer>true</noServer>

<!-- Remove draftCompile when project is ready -->

<draftCompile>false</draftCompile>

<compileReport>true</compileReport>

<style>OBF</style>

<strict>true</strict>

<runTarget>http://localhost:8080/</runTarget>

</configuration>

<executions>

<execution>

<configuration>

<!-- if you don't specify any modules, the plugin will find them -->

<!-- <modules> <module>com.vaadin.demo.mobilemail.gwt.ColorPickerWidgetSet</module>

</modules> -->

</configuration>

<goals>

<goal>resources</goal>

<goal>update-widgetset</goal>

<goal>compile</goal>

</goals>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty-maven-plugin</artifactId>

<!--<configuration>-->

<!--<jettyConfig>src/main/webapp/WEB-INF/web.xml</jettyConfig>-->

<!--</configuration>-->

</plugin>

</plugins>

</build>

</project>

3.3 Тестирование программного обеспечения

На этапе реализации программного обеспечения было проведено тестирование классов, что бы удостоверится в корректности работы классов и в работоспособности. Тестирование классов проводилось с помощью JunitTest библиотеки. Программное обеспечение, за время проектирования и тестирования было доведено до состояния полной работоспособности.

Как можно увидеть со снимка, все тестовые методы были выполнены успешно. Что бы рассмотреть подробнее некоторые из тестовых методов, ниже представлено содержимое класса «AccessLevelTets»

Листинг класса «AccessLevelTets»:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "classpath*:applicationContext.xml"})

public class AccessLevelTest {

@Autowired

private AccessRepository accessRepository;

@Autowired

private GroupRepository groupDao;

@Test

public void testCreateLevel() throws Exception {

AccessLevel accessLevel = new AccessLevel();

accessLevel.setLevelNumber(123L);

GroupWorker groupWorker = new GroupWorker();

groupWorker.setGroupName("Banjo Men");

groupDao.save(groupWorker);

accessLevel.setGroupAccessLevel(groupWorker);

accessRepository.save(accessLevel);

Long getId = accessLevel.getId();

AccessLevel accessLevelTest = accessRepository.findOne(getId);

Long mustEquals=accessLevelTest.getLevelNumber();

Assert.assertNotNull("It was your mistake!", accessLevelTest);

Assert.assertEquals((Object) mustEquals, 123L);

accessRepository.delete(getId);

Long mD= groupWorker.getId();

groupDao.delete(mD);

AccessLevel mustNull=accessRepository.findOne(accessLevel.getId());

Assert.assertNull("It was your mistake", mustNull);

}

@Test

public void testUpdateLevel() throws Exception {

AccessLevel accessLevel = new AccessLevel();

accessLevel.setLevelNumber(123L);

GroupWorker groupWorker = new GroupWorker();

groupWorker.setGroupName("Banjo Men");

groupDao.save(groupWorker);

accessLevel.setGroupAccessLevel(groupWorker);

accessRepository.save(accessLevel);

AccessLevel accessLevelTest = accessRepository.findOne(accessLevel.getId());

accessLevelTest.setLevelNumber(1234567L);

accessRepository.saveAndFlush(accessLevelTest);

Long mustEquals= accessLevelTest.getLevelNumber();

Assert.assertNotNull("It was your mistake!", accessLevelTest);

Assert.assertEquals((Object)mustEquals, 1234567L);

accessRepository.delete(accessLevel.getId());

Long mD= groupWorker.getId();

groupDao.delete(mD);

AccessLevel mustNull=accessRepository.findOne(accessLevel.getId());

Assert.assertNull("It was your mistake", mustNull);

}

@Test

public void testDeleteLevel() throws Exception {

AccessLevel accessLevel = new AccessLevel();

accessLevel.setLevelNumber(123L);

GroupWorker groupWorker = new GroupWorker();

groupWorker.setGroupName("Banjo Men");

groupDao.save(groupWorker);

accessLevel.setGroupAccessLevel(groupWorker);

accessRepository.save(accessLevel);

Long getId = accessRepository.findOne(accessLevel.getId()).getId();

accessRepository.delete(getId);

Long mD= groupWorker.getId();

groupDao.delete(mD);

AccessLevel groupWorkerTest=accessRepository.findOne(getId);

Assert.assertNull("It was your mistake",groupWorkerTest);

}

@Test

public void testGetGroupById() throws Exception {

AccessLevel accessLevel = new AccessLevel();

accessLevel.setLevelNumber(123L);

GroupWorker groupWorker = new GroupWorker();

groupWorker.setGroupName("Banjo Men");

groupDao.save(groupWorker);

accessLevel.setGroupAccessLevel(groupWorker);

accessRepository.save(accessLevel);

AccessLevel accessLevelTest = accessRepository.findOne(accessLevel.getId());

Long mustEquals= accessLevelTest.getLevelNumber();

Assert.assertNotNull("It was your mistake!", accessLevelTest);

Assert.assertEquals((Object)mustEquals, 123L);

accessRepository.delete(accessLevel.getId());

Long mD= groupWorker.getId();

groupDao.delete(mD);

AccessLevel mustNull=accessRepository.findOne(accessLevel.getId());

Assert.assertNull("It was your mistake", mustNull);

}}

3.4 Реализация web-интерфейса

Интерфейс информационной системы разработан с учетом того, чтобы не вызвать дискомфорта при ее использовании. Интерфейс должен отвечать следующим требованиям:

- иметь интуитивно понятную навигацию;

- иметь эффективно подобранную цветовую гамму;

- предоставлять возможность быстро и качественно манипулировать элементами навигации для получения данных.

Web-интерфейс является важной частью разрабатываемой системы. Именно через него оператор будет работать с системой: просматривать отчеты, содержащие данные о событиях, тревогах системы, а также данные о сотрудниках, просматривать лог событий системы, добавлять пользователей в списки доступа к охраняемым объектам.

При входе в систему перед оператором появляется форма авторизации, в которую он должен ввести свой логин и пароль, чтобы получить доступ к серверу.

Если пользователь не знает пароль или логин оператора и пытается его подобрать, система после 3-х неудачных попыток выдаёт сообщение о блокировке IP адреса. Такой подход необходим для того, чтобы максимально усложнить подбор пароля пользователем, который не имеет прав работы с данной системой.

После успешной аутентификации, оператор получает доступ к интерфейсу по работе с системой.

Интерфейс предоставляет оператору все средства для управления СКУД, наблюдения за её состоянием и получения отчётов о событиях системы. Нажав на иконку вверху экрана можно попасть в соответствующий раздел, а именно: управление пользователями, статистика переходов, управление группами пользователей, просмотр плана этажей, поиск пользователя в помещениях, просмотреть заработную плату за текучий месяц, просмотреть список болеющих, отправить рассылку сотрудникам, выход из системы.

Нажав на кнопку «Группы пользователей», открывается окно,со списком групп пользователей.Как можно заметить на снимке, в окне “GroupWorkers” присутствуют 3 кнопки- добавить, изменить и удалить. Такое же окно можно увидеть на жав на кнопку пользователи, или список болеющих.

Список болеющих- очень важный элемент системы, он помогает автоматизировано посчитать количество заработанных денег за месяц с учетом больничных и штрафов, за переизбыток проведенного времени, вне рабочего места. Система сама подсчитывает заработную плату к начислению, в конце месяца и штрафует нарушителей, согласно тарифу, который можно изменять, нажав кнопку настройки. Таким образом система полезна не только в контексте безопасности, но и берет на себя часть работу бухгалтера.

Нажав на кнопку «удалить», «добавить» или «изменить» откроется окно, с соответствующими полями, что позволит произвести выбранную операцию.

Интерфейс реализован при помощи jquery и ajax, что позволяет не перезагружать страницы, при каждом же действии. Система позволяет открыть все окна управления и переключатся между ними, как в графической ОС, без обновления самой страницы, что экономит время и делает систему более удобной в использовании.

СКУД позволяет отыскать нужного сотрудника, и вывести местоположение его на территории предприятия, если он находится на предприятии в текущий момент. Различные списки в системе можно фильтровать и выравнивать по различным критериям.

Так же была разработана интерактивная карта, которая отображает местонахождение сотрудников на на схематическом изображении кабинета, на плане помещения и отображение списка персонала находящегося в кабинете. Для того что бы просмотреть список пользователей достаточно навести на изображение кабинета и произвести щелчок левой кнопкой мыши по объекту.

С целью расширения функциональности системы был разработан модуль «карта территории» предприятия. В случае если территория предприятия занимает более чем одно здание, таким образом можно централизировать контроль и управление доступом. Для наглядности модуля- создан скриншот интерфейса данного модуля.

Выводы

Целью данной дипломной работы являлась разработка системы контроля и управления доступом, позволяющей предотвратить несанкционированный доступ к охраняемым объектам предприятия, а также, позволяющей сохранить и затем просмотреть информацию о событиях в системе за определенный промежуток времени.

Для достижения поставленной цели был проведен анализ подобных существующих компьютерных систем контроля и управления доступом. Был выбран RFID метод идентификации пользователя по его подписи. Этот метод был выбран за счет низких материальных затрат на построение системы, а также сыграла роль относительная привычность данного метода идентификации для рядового пользователя.

Программная часть реализована с архитектурой клиент/сервер. В ходе выполнения данной квалификационной работы специалиста была разработана база данных и толстый клиент (Web-приложение) для оператора.

Результатом разработки являются архитектура разработанной системы, структура и схема электрическая принципиальная устройства контроля и управления доступом.

Особенностью данной разработки является использование микроконтроллера SK-iMX53 в качестве управляющего элемента устройства контроля и управления доступом. Благодаря этому устройство обладает широкой функциональностью, а также, высоким уровнем защиты передаваемых по сети данных.

Применение данной системы даст возможность качественно улучшить решение таких важных задач как безопасность труда, соблюдение трудовой дисциплины, сохранность материальных ценностей, коммерческая тайна.

В разделе охраны труда проведен расчет искусственного освещения, необходимого для обеспечения освещенности согласно нормам во всем здании банка, а также описаны условия, которые необходимо обеспечить для нормальной работы пользователей с ВДТ ЭВМ.

Разработка данной системы дает следующие преимущества:

- возможность контролировать рабочее время сотрудников;

- контроль и ограничение доступа посетителей и в то же время беспрепятственный проход сотрудников;

- организация базы данных на каждого сотрудника.

Планируется дальнейшее расширение функций данной системы с пожарной и охранной сигнализациями, а также системой видеонаблюдения.

Перечень использованных источников

1 ГОСТ 51241-2008 “Средства и системы контроля и управления доступом. Классификация. Общие технические требования. Методы испытаний”.

2 Биометрическая идентификация и аутентификация [Электронный ресурс]. - Режим доступа: http://www.gmmcc.com.ua // ?id=76. - Название с экрана.

3 Интегрированные системы безопасности [Электронный ресурс]. - Режим доступа: http://www.aamsystems.ru/publications/?id=132. - Название с экрана.

4 Биометрические системы контроля доступа [Электронный ресурс]. - Режим доступа: http://ien.izi.vlsu.ru/teach/books/910/theory.html#_1. - Название с экрана.

5 Контроль доступа: устройства контроля доступа ведущих мировых производителей [Электронный ресурс]. - Режим доступа: http://www.armosystems.ru/system/hid_skd.ahtm. - Название с экрана.

6 Panasonic - Системы безопасности [Электронный ресурс]. - Режим доступа: http://security.panasonic.ru/Catalog/Receiver/WV-BM-ET200.html. - Название с экрана.

7 Новости о мобильных устройствах и технологиях [Электронный ресурс]. - Режим доступа: URL: http://naviny.by/rubrics/computer/2005/11/13/art_12. - Название с экрана.

8 Блог о гаджетах: новости, статьи, заметки [Электронный ресурс]. - Режим доступа: URL: http://telnews.ru/Nadezhda_Balovsyak/c101972. - Название с экрана.

9 Системы видеонаблюдения, контроля доступа, охранные сигнализации и домофоны (видеодомофоны), видеорегистраторы [Электронный ресурс]. - Режим доступа: URL: http://forward.lg.ua/pages/control.html. - Название с экрана.

10 Журнал “КомпьютерПресс”: (Многообразие сенсорных дисплеев) / С.А. Асмаков // Б.М. Молчанов -- 2010. -- №8. -- Режим доступа к журналу: http://www.compress.ru/archive.aspx.

11 Беленков В.Д. Электронные системы идентификации подписей. Защита информации. Конфидент. 1997, №6, с. 39-42.

12 Иванов А.И., Сорокин И.А. Автоматическая система идентификации личности по динамике подписи. // Новые промышленные технологии. №6, 1993, с. 56-63.

13 Державні санітарні правила і норми роботи з візуальними дисплейними терміналами електронно-обчислювальних машин. ДСанПІН 3.3.2.007-98. Головне санітарно-епідеміологічне управління України. Київ 1998. - 24 с.

14 Охорона праці. Методичні рекомендації до дипломного проекту для студентів инженерно-технічних спеціальностей / Уклад.: Л.Д. Косухіна, О.И. Сиза. - Чернігів: ЧТІ, 1997.- 26 с.

15 Справочник по охране труда на промышленном предприятии / К.Н. Ткачук, Д.Ф. Иванчук, Р.В. Сабарно, А.Г. Степанов - К.: Тэхника, 1991.

16 Лебедев О.Н. Микросхемы памяти и их применение. - М.: Радио и связь, 1990. - 160 с.

17 Дипломне проектування. Організаційно-методичні вказівки до дипломного проектування для студентів спеціальностей 7.05010201 - “Комп'ютерні системи та мережі”, 7.05010202 - “Системне програмування”, 7.05010203 - “Спеціалізовані комп'ютерні системи”. /Укл.: Акименко А.М., Зінченко А.Л., Нікитенко Є.В., Пріла О.А., Роговенко А.І., Стасюк С.С., Хижняк А.В.- Чернігів: ЧДТУ, 2011. - 39 с.

18 Структура і оформлення кваліфікаційних та курсових робіт. Методичні вказівки для студентів професійного спрямування “Комп'ютерна інженерія” / Уклад. А.І. Вервейко, С.О. Нестеренко, Є.В. Нікітенко. - Чернігів: ЧДТУ, 2002. - 28 с., рос. мовою.

Приложение 1

1 РЕАЛИЗАЦИЯ КЛАСОВ ДОМЕНОВ

1 1.1 Класс AccessLevel.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

/**

* User: LejaStu

*/

// @Component

@Entity

@Table(name = "ACCESSLEVEL")

public class AccessLevel implements IId {

/**

* Fields of Class AccessLevel *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private Long levelNumber;

@ManyToOne

@JoinColumn(name = "group_id",referencedColumnName = "id", nullable=true)

private GroupWorker groupAccessLevel;

/**

* Constructors of Class AccessLevel *

*/

public AccessLevel() {

}

public AccessLevel(Long levelNumber) {

this.levelNumber = levelNumber;

}

/**

* Getters & Setters of Class AccessLevel *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getLevelNumber() {

return levelNumber;

}

public void setLevelNumber(Long levelNumber) {

this.levelNumber = levelNumber;

}

public GroupWorker getGroupAccessLevel() {

return groupAccessLevel;

}

public void setGroupAccessLevel(GroupWorker groupAccessLevel) {

this.groupAccessLevel = groupAccessLevel;

}

}

2 1.2 Класс Buildings.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "BUILDINGS")

public class Buildings implements IId {

/**

* Fields of Class BuildingsRepository *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private String address;

@Column

private Integer housingNumber;

@Column

private String pathFile;

@OneToMany(mappedBy = "buildingsStage")

private List<Stage> buildingsStageList;

/**

* Constructor of Class BuildingsRepository *

*/

public Buildings() {

}

public Buildings(String address, String pathFile) {

this.address = address;

this.pathFile = pathFile;

}

/**

* Getters & Setters of Class BuildingsRepository *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public Integer getHousingNumber() {

return housingNumber;

}

public void setHousingNumber(Integer housingNumber) {

this.housingNumber = housingNumber;

}

public String getPathFile() {

return pathFile;

}

public void setPathFile(String pathFile) {

this.pathFile = pathFile;

}

public List<Stage> getBuildingsStageList() {

return buildingsStageList;

}

}

3 1.3 Класс Calendaring.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.Date;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "CALENDARING")

public class Calendaring implements IId {

/**

* Fields of Class CalendaringDao *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

@Temporal(TemporalType.DATE)

private Date date;

@OneToMany(mappedBy = "calendarTrans")

private List<Transition> calendarTransList;

/**

* Constructors of Class Calendaring *

*/

public Calendaring() {

}

public Calendaring(Date date) {

this.date = date;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public List<Transition> getCalendarTransList() {

return calendarTransList;

}

public void setCalendarTransList(List<Transition> calendarTransList) {

this.calendarTransList = calendarTransList;

}

}

4 1.4 Класс GroupWorker.java

# package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.Date;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "CALENDARING")

public class Calendaring implements IId {

/**

* Fields of Class CalendaringDao *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

@Temporal(TemporalType.DATE)

private Date date;

@OneToMany(mappedBy = "calendarTrans")

private List<Transition> calendarTransList;

/**

* Constructors of Class Calendaring *

*/

public Calendaring() {

}

public Calendaring(Date date) {

this.date = date;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public List<Transition> getCalendarTransList() {

return calendarTransList;

}

public void setCalendarTransList(List<Transition> calendarTransList) {

this.calendarTransList = calendarTransList;

}

}

5 1.5 Класс MissByIll.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.Date;

/**

* User: LejaStu

*/

@Entity

@Table(name = "MISSBYILL")

public class MissByIll implements IId {

/**

* Fields of Class MissByIll *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

@Temporal(TemporalType.DATE)

private Date fromDate;

@Column

@Temporal(TemporalType.DATE)

private Date toDate;

@ManyToOne

@JoinColumn(name = "user_id",referencedColumnName = "id", nullable=false)

private User userMissed;

/**

* Constructors of Class MissByIll *

*/

public MissByIll() {

}

public MissByIll(Date fromDate, Date toDate) {

this.fromDate = fromDate;

this.toDate = toDate;

}

/**

* Getters & Setters of Class MissByIll *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Date getFromDate() {

return fromDate;

}

public void setFromDate(Date from) {

this.fromDate = from;

}

public Date getToDate() {

return toDate;

}

public void setToDate(Date to) {

this.toDate = to;

}

public User getUserMissed() {

return userMissed;

}

public void setUserMissed(User userMissed) {

this.userMissed = userMissed;

}

}

6 1.6 Класс RealSalary.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.Date;

/**

* User: LejaStu

*/

@Entity

@Table(name = "REALSALARY")

public class RealSalary implements IId {

/**

* Fields of Class RealSalaryForm *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

@Temporal(TemporalType.DATE)

private Date month;

@Column

private Long salary;

@Column

private Long realTimeWork;

@ManyToOne

@JoinColumn(name = "user_id",referencedColumnName = "id", nullable=false)

private User userSalary;

/**

* Constructors of Class RealSalaryForm *

*/

public RealSalary() {

}

public RealSalary(Date month, long salary, long realTimeWork) {

this.month = month;

this.salary = salary;

this.realTimeWork = realTimeWork;

}

/**

* Getter & Setters of Class RealSalaryForm *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Date getMonth() {

return month;

}

public void setMonth(Date month) {

this.month = month;

}

public Long getSalary() {

return salary;

}

public void setSalary(Long salary) {

this.salary = salary;

}

public Long getRealTimeWork() {

return realTimeWork;

}

public void setRealTimeWork(Long realTimeWork) {

this.realTimeWork = realTimeWork;

}

public User getUserSalary() {

return userSalary;

}

public void setUserSalary(User userSalary) {

this.userSalary = userSalary;

}

}

7 1.7 Класс Room.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "ROOM")

public class Room implements IId {

/**

* Fields of Class Room *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private Integer number;

@Column

private Integer accessLevel;

@OneToMany(mappedBy = "roomTrans", fetch=FetchType.LAZY)

private List<Transition> roomTransList;

@ManyToOne(fetch=FetchType.LAZY)

@JoinColumn(name = "stage_id",referencedColumnName = "id")

private Stage stageRoom;

/**

* Constructors of Class Room *

*/

public Room() {

}

public Room(int number, int accessLevel) {

this.number = number;

this.accessLevel = accessLevel;

}

/**

* Getters & Setters of Class Room *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Integer getNumber() {

return number;

}

public void setNumber(Integer number) {

this.number = number;

}

public Integer getAccessLevel() {

return accessLevel;

}

public void setAccessLevel(Integer accessLevel) {

this.accessLevel = accessLevel;

}

public List<Transition> getRoomTransList() {

return roomTransList;

}

public Stage getStageRoom() {

return stageRoom;

}

public void setStageRoom(Stage stageRoom) {

this.stageRoom = stageRoom;

}

}

8 1.8 Класс RealSalary.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "STAGE")

public class Stage implements IId {

/**

* Fields of Class Room *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private Integer stageNumber;

@Column

private String pathSvg;

@OneToMany(mappedBy = "stageRoom",fetch = FetchType.LAZY)

private List<Room> stageRoomList;

@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn(name = "building_id",referencedColumnName = "id")

private Buildings buildingsStage;

public Stage() {

}

public Stage(int stageNumber, String pathSvg) {

this.stageNumber = stageNumber;

this.pathSvg = pathSvg;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Integer getStageNumber() {

return stageNumber;

}

public void setStageNumber(Integer stageNumber) {

this.stageNumber = stageNumber;

}

public String getPathSvg() {

return pathSvg;

}

public void setPathSvg(String pathSvg) {

this.pathSvg = pathSvg;

}

public List<Room> getStageRoomList() {

return stageRoomList;

}

public Buildings getBuildingsStage() {

return buildingsStage;

}

public void setBuildingsStage(Buildings buildingsStage) {

this.buildingsStage = buildingsStage;

}

}

9 1.9 Класс Transition.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.Date;

/**

* User: LejaStu

*/

@Entity

@Table(name = "TRANSITION")

public class Transition implements IId {

/**

* Fields of Class TransitionRepository *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private Long spendTime;

@Column

private String io;

@Column

private Long fromRoom;

@Column

private Long toRoom;

@Column

private Boolean isAccessPermitted;

@Column

private String reason;

@Column

@Temporal(TemporalType.DATE)

private Date timeIn;

@Column

@Temporal(TemporalType.DATE)

private Date timeOut;

@ManyToOne

@JoinColumn(name = "user_id",referencedColumnName = "id")

private User userTransition;

@ManyToOne

@JoinColumn(name = "calendaring_id",referencedColumnName = "id")

private Calendaring calendarTrans;

@ManyToOne(fetch=FetchType.LAZY)

@JoinColumn(name = "room_id",referencedColumnName = "id")

private Room roomTrans;

/**

* Constructors of Class TransitionRepository *

*/

public Transition() {

}

public Transition(Long fromRoom, Long toRoom, Boolean isAccessPermitted, String reason, Date timeIn) {

this.fromRoom = fromRoom;

this.toRoom = toRoom;

this.isAccessPermitted = isAccessPermitted;

this.reason = reason;

this.timeIn = timeIn;

}

/**

* Getters of Class TransitionRepository *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getSpendTime() {

return spendTime;

}

public void setSpendTime(Long spendTime) {

this.spendTime = spendTime;

}

public String getIo() {

return io;

}

public void setIo(String io) {

this.io = io;

}

public Long getFromRoom() {

return fromRoom;

}

public void setFromRoom(Long from) {

this.fromRoom = from;

}

public Long getToRoom() {

return toRoom;

}

public void setToRoom(Long to) {

this.toRoom = to;

}

public Boolean getIsAccessPermitted() {

return isAccessPermitted;

}

public void setIsAccessPermitted(Boolean isAccessPermitted) {

this.isAccessPermitted = isAccessPermitted;

}

public String getReason() {

return reason;

}

public void setReason(String reason) {

this.reason = reason;

}

public Date getTimeIn() {

return timeIn;

}

public void setTimeIn(Date timeIn) {

this.timeIn = timeIn;

}

public Date getTimeOut() {

return timeOut;

}

public void setTimeOut(Date timeOut) {

this.timeOut = timeOut;

}

public User getUserTransition() {

return userTransition;

}

public void setUserTransition(User userTransition) {

this.userTransition = userTransition;

}

public Calendaring getCalendarTrans() {

return calendarTrans;

}

public void setCalendarTrans(Calendaring calendarTrans) {

this.calendarTrans = calendarTrans;

}

public Room getRoomTrans() {

return roomTrans;

}

public void setRoomTrans(Room roomTrans) {

this.roomTrans = roomTrans;

}

}

10 1.10 Класс User.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

/**

* User: LejaStu

*/

@Entity

@Table(name = "USER")

public class User implements IId {

/**

* Fields of Class User *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private String firstName;

@Column

private String lastName;

@Column

@Temporal(TemporalType.DATE)

private Date birthDay;

@Column

private String job;

@Column

private Long salary;

@Column

private String address;

@Column

private String phone;

@Column

private String passportData;

@Column

private String photo;

@Column

private String departmentName;

@Column

private Long obligedSpendTime;

@OneToMany(mappedBy = "userTransition")

private List<Transition> userTransitionList = new ArrayList<Transition>();

@OneToMany(mappedBy = "userMissed")

private List<MissByIll> userMissedList = new ArrayList<MissByIll>();

@OneToMany(mappedBy = "userSalary")

private List<RealSalary> userSalaryList = new ArrayList<RealSalary>();

@ManyToOne

@JoinColumn(name = "group_id",referencedColumnName = "id", nullable=false)

private GroupWorker groupUser;

/**

* Const of User's Class *

*/

public User() {

}

public User(String firstName, String lastName, Date birthDay, String job, long salary, long obligedSpendTime,GroupWorker groupUser) {

this.firstName = firstName;

this.lastName = lastName;

this.birthDay = birthDay;

this.job = job;

this.salary = salary;

this.obligedSpendTime = obligedSpendTime;

this.groupUser=groupUser;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public Date getBirthDay() {

return birthDay;

}

public void setBirthDay(Date birthDay) {

this.birthDay = birthDay;

}

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

public Long getSalary() {

return salary;

}

public void setSalary(Long salary) {

this.salary = salary;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

public String getPassportData() {

return passportData;

}

public void setPassportData(String passportData) {

this.passportData = passportData;

}

public String getPhoto() {

return photo;

}

public void setPhoto(String photo) {

this.photo = photo;

}

public String getDepartmentName() {

return departmentName;

}

public void setDepartmentName(String departmentName) {

this.departmentName = departmentName;

}

public Long getObligedSpendTime() {

return obligedSpendTime;

}

public void setObligedSpendTime(Long obligedSpendTime) {

this.obligedSpendTime = obligedSpendTime;

}

public List<Transition> getUserTransitionList() {

return userTransitionList;

}

public void setUserTransitionList(List<Transition> userTransitionList) {

this.userTransitionList = userTransitionList;

}

public List<MissByIll> getUserMissedList() {

return userMissedList;

}

public void setUserMissedList(List<MissByIll> userMissedList) {

this.userMissedList = userMissedList;

}

public List<RealSalary> getUserSalaryList() {

return userSalaryList;

}

public void setUserSalaryList(List<RealSalary> userSalaryList) {

this.userSalaryList = userSalaryList;

}

public GroupWorker getGroupUser() {

return groupUser;

}

public void setGroupUser(GroupWorker groupUser) {

this.groupUser = groupUser;

}

}

11 1.10 Класс Workbench.java

package ua.com.lejastu.entity;

import javax.persistence.*;

import java.io.Serializable;

/**

* User: LejaStu

*/

@Entity

@Table(name = "WORKBENCH")

public class Workbench implements IId {

/**

* Fields of Class WorkbenchDao *

*/

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column

private Long workBenchNumber;

@ManyToOne

@JoinColumn(name = "group_id",referencedColumnName = "id", nullable=false)

private GroupWorker groupWorkbench;

/**

* Constructors of Class WorkbenchDao *

*/

public Workbench() {

}

public Workbench(Long workBenchNumber) {

this.workBenchNumber = workBenchNumber;

}

/**

* Getters of Class WorkbenchDao *

*/

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getWorkBenchNumber() {

return workBenchNumber;

}

public void setWorkBenchNumber(Long workBenchNumber) {

this.workBenchNumber = workBenchNumber;

}

public GroupWorker getGroupWorkbench() {

return groupWorkbench;

}

public void setGroupWorkbench(GroupWorker groupWorkbench) {

this.groupWorkbench = groupWorkbench;

}

}

2 WEB-ИНТЕРФЕЙС СИСТЕМЫ

2.1 Файл index.java

package ua.com.lejastu.design;

import com.vaadin.annotations.Theme;

import com.vaadin.annotations.Title;

import com.vaadin.event.MouseEvents;

import com.vaadin.server.ThemeResource;

import com.vaadin.server.VaadinRequest;

import com.vaadin.ui.*;

import ua.com.lejastu.design.inform.*;

import java.util.HashMap;

/**

* User: LejaStu

*/

@Title("Skudy")

@Theme("skudytheme")

public class Index extends UI {

HorizontalSplitPanel navigation = new HorizontalSplitPanel();

HorizontalLayout body;

HorizontalLayout border;

HorizontalLayout header;

Components components;

VerticalLayout main;

VerticalSplitPanel headBord;

Image logo;

HashMap <Integer,Component> levels;

Panel buttonGroup, buttonUser, buttonAccessLevel, littleButtonBuildings, littleButtonStage, buttonMisByIll,buttonWorkbench, buttonTransition,buttonRoom,buttonVisual;

static HashMap<String, Window> windowsProperties;

@Override

protected void init(VaadinRequest request) {

components = new Components();

initLayout();

initGroupForm();

initUserForm();

initAccessLevelForm();

initMissByIllForm();

initRoomForm();

initTransitionForm();

initWorkbenchForm();

}

public void initLayout() {

main = components.initMain();

header = components.initHeader();

border = components.initBorder();

body = components.initBody();

headBord = components.initHeadBord();

Panel topMenu= new Panel();

topMenu.setHeight("50%");

topMenu.setSizeFull();

setContent(main);

main.addComponent(header);

main.addComponent(topMenu);

main.addComponent(border);

main.addComponent(body);

main.setExpandRatio(body, 80);

main.setExpandRatio(border, 0);

main.setExpandRatio(header, 20);

body.setSizeFull();

border.addComponent(headBord);

ThemeResource resource = new ThemeResource("img/eye.png");

logo = components.initImageFromResource(resource);

logo.setStyleName("logo");

header.addComponent(logo);

levels = components.initMainMenu();

navigation.setSplitPosition(16);

navigation.setLocked(true);

body.addComponent(navigation);

navigation.addComponent(levels.get(0));

}

public Boolean findWindow(String windowName) {

if (windowsProperties == null) {

windowsProperties = new HashMap<String, Window>();

}

return windowsProperties.containsKey(windowName);

}

public Window getWindow(String windowName) {

return windowsProperties.get(windowName);

}

public void windowsPropertiesDelete(String windowName){

windowsProperties.remove(windowName);

}

private void initGroupForm() {

buttonGroup = (Panel) levels.get(7);

buttonGroup.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp = null;

if (findWindow("GroupWorkers") == false) {

try {

GroupWorkerForm gr = new GroupWorkerForm();

temp = gr.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("GroupWorkers", temp);

} else {

temp = getWindow("GroupWorkers");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("GroupWorkers");

}

});

}

});

}

private void initUserForm(){

buttonUser = (Panel) levels.get(8);

buttonUser.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("Users") == false) {

temp = null;

try {

UserForm us = new UserForm();

temp = us.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("Users", temp);

} else {

temp = getWindow("Users");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("Users");

}

});

}

});

}

private void initAccessLevelForm(){

buttonAccessLevel = (Panel) levels.get(9);

buttonAccessLevel.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("AccessLevel") == false) {

temp = null;

try {

AccessLevelForm al = new AccessLevelForm();

temp = al.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("AccessLevel", temp);

} else {

temp = getWindow("AccessLevel");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("AccessLevel");

}

});

}

});

}

private void initMissByIllForm(){

buttonMisByIll = (Panel) levels.get(10);

buttonMisByIll.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("MissByIll") == false) {

temp = null;

try {

MissByIllForm mi = new MissByIllForm();

temp = mi.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("MissByIll", temp);

} else {

temp = getWindow("MissByIll");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("MissByIll");

}

});

}

});

}

private void initRoomForm(){

buttonRoom = (Panel) levels.get(11);

buttonRoom.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("Room") == false) {

temp = null;

try {

RoomForm bs = new RoomForm();

temp = bs.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("Room", temp);

} else {

temp = getWindow("Room");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("Room");

}

});

}

});

}

private void initTransitionForm(){

buttonTransition = (Panel) levels.get(12);

buttonTransition.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("Transition") == false) {

temp = null;

try {

TransitionForm tr = new TransitionForm();

temp = tr.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("Transition", temp);

} else {

temp = getWindow("Transition");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("Transition");

}

});

}

});

}

private void initWorkbenchForm(){

buttonWorkbench = (Panel) levels.get(13);

buttonWorkbench.addClickListener(new MouseEvents.ClickListener() {

@Override

public void click(MouseEvents.ClickEvent event) {

Window temp;

if (findWindow("Workbench") == false) {

temp = null;

try {

WorkbenchForm wb = new WorkbenchForm();

temp = wb.init();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

addWindow(temp);

windowsProperties.put("Workbench", temp);

} else {

temp = getWindow("Workbench");

temp.focus();

}

temp.addCloseListener(new Window.CloseListener(){

@Override

public void windowClose(Window.CloseEvent e) {

windowsPropertiesDelete("Workbench");

}

});

}

});

}

}

2.2 Файл Components.java

package ua.com.lejastu.design;

import com.vaadin.server.ThemeResource;

import com.vaadin.ui.*;

import javax.persistence.Column;

import javax.persistence.Id;

import java.lang.annotation.Annotation;

import java.util.HashMap;

/**

* User: LejaStu

*/

public class Components {

public Window intWindow(Class aClass) {

String className = aClass.getSimpleName() + "s";

Window window = new Window(className);

window.setWidth("60%");

window.setHeight("60%");

window.setPositionX(300);

window.setPositionY(200);

return window;

}

public Table initTable(Object o) {

java.lang.reflect.Field fields[] = o.getClass().getDeclaredFields();

int a = fields.length;

Table table = new Table();

for (int i = 0; i < a; i++) {

Annotation annotations[] = fields[i].getAnnotations();

for (int k = 0; k < annotations.length; k++) {

Annotation annotation = annotations[k];

if (annotation.annotationType().getSimpleName().equals(Column.class.getSimpleName()) || annotation.annotationType().getSimpleName().equals(Id.class.getSimpleName())) {

table.addContainerProperty(fields[i].getName(), fields[i].getType(), null);

}

}

}

table.setSizeFull();

return table;

}

public VerticalLayout initMain() {

VerticalLayout main = new VerticalLayout();

main.setStyleName("backcol");

main.setSizeFull();

return main;

}

public HorizontalLayout initBorder() {

HorizontalLayout border = new HorizontalLayout();

border.setSizeFull();

return border;

}

public HorizontalLayout initHeader() {

HorizontalLayout header = new HorizontalLayout();

header.setWidth("100%");

header.setStyleName("header");

header.setSizeFull();

return header;

}

public HorizontalLayout initBody() {

HorizontalLayout body = new HorizontalLayout();

body.setStyleName("workspace");

body.setWidth("100%");

return body;

}

public VerticalSplitPanel initHeadBord() {

VerticalSplitPanel headBord = new VerticalSplitPanel();

headBord.setSplitPosition(0);

headBord.setLocked(true);

return headBord;

}

public Image initImageFromResource(ThemeResource resource) {

Image image = new Image(null, resource);

return image;

}

public HorizontalSplitPanel initNavigation() {

HorizontalSplitPanel navigation = new HorizontalSplitPanel();

navigation.setSplitPosition(16);

navigation.setLocked(true);

return navigation;

}

public HashMap<Integer,Component> initMainMenu() {

Panel b1 = new Panel();

Panel b2 = new Panel();

Panel b3 = new Panel();

VerticalLayout mainMenu = new VerticalLayout();

mainMenu.setSizeFull();

HorizontalLayout level1 = new HorizontalLayout();

level1.setHeight("100%");

level1.setWidth("100%");

mainMenu.addComponent(level1);

b1.setContent(new Label("Group"));

b1.setSizeFull();

b2.setContent(new Label("User"));

b2.setSizeFull();

level1.addComponent(b1);

level1.addComponent(b2);

level1.setExpandRatio(b1, 1);

level1.setExpandRatio(b2, 1);

HorizontalLayout level2 = new HorizontalLayout();

level2.setHeight("100%");

level2.setWidth("100%");

mainMenu.addComponent(level2);

b3.setContent(new Label("Transition"));

b3.setSizeFull();

Panel b4 = new Panel();

b4.setSizeFull();

level2.addComponent(b3);

level2.addComponent(b4);

level2.setExpandRatio(b3, 1);

level2.setExpandRatio(b4, 1);

HorizontalLayout level3 = new HorizontalLayout();

level3.setHeight("100%");

level3.setWidth("100%");

mainMenu.addComponent(level3);

Panel b5 = new Panel();

b5.setSizeFull();

Panel b6 = new Panel();

b6.setSizeFull();

level3.addComponent(b5);

level3.addComponent(b6);

level3.setExpandRatio(b5, 1);

level3.setExpandRatio(b6, 1);

HorizontalLayout level4 = new HorizontalLayout();

level4.setHeight("100%");

level4.setWidth("100%");

mainMenu.addComponent(level4);

Panel b7 = new Panel();

b7.setSizeFull();

Panel b8 = new Panel();

b8.setSizeFull();

level4.addComponent(b7);

level4.addComponent(b8);

level4.setExpandRatio(b7, 1);

level4.setExpandRatio(b8, 1);

// HorizontalLayout level5 = new HorizontalLayout();

// level5.setHeight("100%");

// level5.setWidth("100%");

// mainMenu.addComponent(level5);

// Panel b9 = new Panel();

// b9.setSizeFull();

// Panel b10 = new Panel();

// b10.setSizeFull();

// level5.addComponent(b9);

// level5.addComponent(b10);

// level5.setExpandRatio(b9, 1);

// level5.setExpandRatio(b10, 1);

HorizontalLayout level6 = new HorizontalLayout();

// level5.setHeight("100%");

// level5.setWidth("100%");

// mainMenu.addComponent(level5);

HashMap<Integer,Component> componentsOnBrowser= new HashMap<Integer,Component>();

componentsOnBrowser.put(0,mainMenu);

componentsOnBrowser.put(1,level1);

componentsOnBrowser.put(2,level2);

componentsOnBrowser.put(3,level3);

componentsOnBrowser.put(4,level4);

// componentsOnBrowser.put(5,level5);

componentsOnBrowser.put(6,level6);

componentsOnBrowser.put(6,level6);

componentsOnBrowser.put(6,level6);

componentsOnBrowser.put(7,b1);

componentsOnBrowser.put(8,b2);

componentsOnBrowser.put(9,b3);

componentsOnBrowser.put(10,b4);

componentsOnBrowser.put(11,b5);

componentsOnBrowser.put(12,b6);

componentsOnBrowser.put(13,b7);

componentsOnBrowser.put(14,b8);

// componentsOnBrowser.put(15,b9);

// componentsOnBrowser.put(16,b10);

// Object[] levels = {mainMenu, level1, level2, level3, level4, level5, level6, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10};

return componentsOnBrowser;

}

}

2.3 Файл AbstractForm.java

package ua.com.lejastu.design.inform;

import com.vaadin.data.Container;

import com.vaadin.server.VaadinServlet;

import com.vaadin.ui.*;

import org.springframework.data.repository.PagingAndSortingRepository;

import ua.com.lejastu.design.Components;

import ua.com.lejastu.design.SpringContextHelper;

import ua.com.lejastu.entity.IId;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

/**

* User: LejaStu

*/

public abstract class AbstractForm<BEANTYPE extends IId> extends Window {

private static AbstractForm instance;

Components components = new Components();

PagingAndSortingRepository<BEANTYPE, Long> repository;

private Class<?> aClass;

Window window;

Table table = new Table();

Button add = new Button();

Button change = new Button();

Button remove = new Button();

String container=new String();

VerticalLayout operationLayout = new VerticalLayout();

AbstractForm() throws ClassNotFoundException {

Type types = getClass().getGenericSuperclass();

if (!(types instanceof ParameterizedType)) return;

ParameterizedType genericSuperclass = (ParameterizedType) types;

Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();

this.aClass = (Class<?>) actualTypeArguments[0];

SpringContextHelper helper = new SpringContextHelper(VaadinServlet.getCurrent().getServletContext());

String s = "ua.com.lejastu.repository.".concat(aClass.getSimpleName()).concat("Repository");

Class c = Class.forName(s);

repository = (PagingAndSortingRepository) helper.getBean(c);

container = "ua.com.lejastu.design.containers.".concat(aClass.getSimpleName()).concat("Container");

buttonAddInit();

}

public void buttonAddInit(){

add.addClickListener(new Button.ClickListener() {

@Override

public void buttonClick(Button.ClickEvent event) {

Label label = new Label();

label.setCaption("yhsdjkjdowsopd wi ewjiopp d");

operationLayout.addComponent(label);

}

});

}

public Window init() throws ClassNotFoundException, IllegalAccessException, InstantiationException {

VerticalLayout verticalLayout= new VerticalLayout();

verticalLayout.setSizeFull();

Panel tablePanel= new Panel();

tablePanel.setSizeFull();

verticalLayout.addComponent(tablePanel);

HorizontalLayout operationPanel= new HorizontalLayout();

operationPanel.setSizeFull();

verticalLayout.addComponent(operationPanel);

verticalLayout.setExpandRatio(tablePanel, 3);

verticalLayout.setExpandRatio(operationPanel, 1);

operationPanel.addComponent(operationLayout);

VerticalLayout pn= new VerticalLayout();

pn.setWidth("100%");

pn.setHeight("5px");

operationLayout.addComponent(pn);

add.setCaption("add");

add.setWidth("100px");

change.setWidth("100px");

remove.setWidth("100px");

change.setCaption("change");

remove.setCaption("remove");

operationLayout.addComponent(add);

operationLayout.addComponent(change);

operationLayout.addComponent(remove);

window = components.intWindow(aClass);

Object obj = aClass.newInstance();

table = components.initTable(obj);

tablePanel.setContent(table);

window.setContent(verticalLayout);

Class c = Class.forName(container);

Object groupWorkerContainer= c.newInstance();

table.setContainerDataSource((Container) groupWorkerContainer);

return window;

}

}

2.4 Файл AbstractDataProvider.java

package ua.com.lejastu.design.containers;

import com.vaadin.data.util.BeanContainer;

import com.vaadin.data.util.BeanItem;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageRequest;

import org.springframework.data.repository.PagingAndSortingRepository;

import ua.com.lejastu.design.SpringContextHelper;

import ua.com.lejastu.entity.IId;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* author: Oleksandr.Alieinikov

*/

public abstract class AbstractDataProvider<BEANTYPE extends IId> extends BeanContainer<Long, BEANTYPE> {

PagingAndSortingRepository<BEANTYPE, Long> repository;

private Map<Long, BEANTYPE> visibleItems = new HashMap<Long, BEANTYPE>();

private String globalFilter = "";

public AbstractDataProvider(Class<? super BEANTYPE> type) {

super(type);

removeContainerProperty("id");

String repoName = "ua.com.lejastu.repository." + type.getSimpleName() + "Repository";

Class<?> aClass = null;

try {

aClass = getClass().getClassLoader().loadClass(repoName);

} catch (ClassNotFoundException e) {

e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.

}

repository = (PagingAndSortingRepository<BEANTYPE, Long>) SpringContextHelper.getBean(aClass);

}

public abstract Page<BEANTYPE> getPage(PageRequest pageRequest);

@Override

public BeanItem<BEANTYPE> getItem(Object itemId) {

return new BeanItem<BEANTYPE>(visibleItems.get(itemId));

}

@Override

public int size() {

Page<BEANTYPE> page = getPage(null);

return page.getContent().size();

}

@Override

public List<Long> getItemIds(int startIndex, int numberOfIds) {

int page = Math.round(startIndex / numberOfIds);

PageRequest pageRequest = new PageRequest(page, numberOfIds);

Page<BEANTYPE> all = getPage(pageRequest);

List<BEANTYPE> content = all.getContent();

visibleItems.clear();

for (BEANTYPE beantype: content) {

visibleItems.put(beantype.getId(), beantype);

}

List<Long> longs = new ArrayList<Long>(visibleItems.keySet());

getAllItemIds().clear();

getAllItemIds().addAll(longs);

return longs;

}

public PagingAndSortingRepository<BEANTYPE, Long> getRepository() {

return repository;

}

public String getGlobalFilter() {

return globalFilter;

}

public void setGlobalFilter(String globalFilter) {

this.globalFilter = globalFilter;

}

}

3 ФАЙЛЫ КОНФИГУРАЦИИ

3.1 Файл web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>Vaadin Web Application</display-name>

<context-param>

<description>Vaadin production mode</description>

<param-name>productionMode</param-name>


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.