Skip to content

Latest commit

 

History

History

jun2022

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Испитна задача

Потребно е да развиете апликација за менаџирање на cloud ресурси која ќе овозможи прегледување, додавање, уредување и бришење на виртуелни сервери.

Функционални барања

  • (15 поени) Потребно е на патеките / и /VirtualServers да прикажете листа од сите креирани виртуелни сервери со користење на темплејтот list.html.

    • Имплементацијата на оваа функционалност може да ја проверите со тестот test_list_20pt.
  • (20 поени) Потребно е да се имплементира додавање на виртуелен сервер. При клик на копчето Add од темплејтот list.html, потребно е да се прикаже темплејтот form.html на патеката /VirtualServers/add, каде при клик на Submit ќе се креира и запише нов ентитет во базата на податоци. Потоа треба да се прикаже страната /VirtualServers.

    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_create_10pt и test_create_mvc_10pt.
  • (10 поени) Потребно е да се имплементира бришење на виртуелен сервер. При клик на копчето Delete од темплејтот list.html, потребно е да се избрише ентитетот од базата на податоци. Потоа треба да се прикаже страната /VirtualServers.

    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_delete_5pt и test_delete_mvc_5pt.
  • (20 поени) Потребно е да се имплементира променување на задача. При клик на копчето Edit од темплејтот list.html, потребно е да се прикаже темплејтот form.html на патеката /VirtualServers/[id]/edit, при што во <input> елементите ќе се прикажат вредностите за ентитетот кој се променува. При клик на Submit треба да се запише промената на ентитетот во базата на податоци. Потоа треба да се прикаже страната /VirtualServers.

    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_edit_10pt и test_edit_mvc_10pt.
  • (20 поени) Потребно е да конфигурирате најава на /login и одјава на /logout. Притоа, јавна треба да биде само страницата /, додека сите останати страници треба да се видливи само за најавените корисници. Дополнително, кајlist.html копчињата Edit, Delete и Add треба да се видливи само за ROLE_SYSADMIN.

    • Најавата треба да биде со username и password својствата од корисниците во базата. Лозинките треба да се чуваат енкриптирани.
    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_security_urls_10pt и test_security_buttons_10pt
  • (5 поени) Потребно е да овозможите концепт за терминирање на виртуелен сервер со клик на копчето Terminate во list.html. Ова копче треба да се гледа само доколку виртуелната машина е активна.

    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_mark_terminated_5pt
  • (10 поени) Потребно е да овозможите пребарување на виртуелни машини според owner и денови активност (launchDate <= (now - filtering days)) преку формата со id="filter-form" во темплејтот list.html. Резултатите од пребарувањето треба да се прикажат на истата страница, при што ќе се прикажат само сопствениците според бараниот услов. Филтрирањето се извршува само според внесените полиња (ако се празни, се игнорира филтрирањето по тој критериум).

    • Имплементацијата на оваа функционалност може да ја проверите со тестовите test_filter_5pt и test2_filter_service_5pt.

ВАЖНО: Сите споменати тестови се наоѓаат во класата SeleniumScenarioTest.

Поставување на решението

Тестовите мора задолжително да ги извршите, затоа што на тој начин го испраќате вашето решение за прегледување. За проверка дали успешно е поставено вашето решение пристепете на патеката env4health.finki.ukim.mk/submit/[index], каде наместо [index] ќе го наведете вашиот индекс, кој претходно ќе го поставите во TODO вредноста на текстот.

Тие ќе ви помогнат да ја проверите точноста на вашата имплементација, но и ќе испратат информации до нашиот сервер за тоа до каде функционира вашата апликација. Ќе се гледа кодот само на студентите кај кои барем една проверка (ExamAssert) ќе помине успешно.

НЕ Е ДОЗВОЛЕНО МЕНУВАЊЕ НА ТЕСТОВИТЕ, освен внесување на вашиот индекс

Техничко упатство:

  • Во пакетот mk.ukim.finki.wp.june2022.g1 веќе се креирани класите кои го репрезентираат моделот. Потребно е да извршите нивно мапирање со соодветните JPA анотации за моделот успешно да се сними во базата на податоци. Притоа важат следните услови:
    • Еден виртуелен сервер може да има повеќе owners, додека пак на еден корисник може да е додаден како owner на повеќе сервери.
    • Идентификаторите за VirtualServer и User треба да бидат генерирани.
  • Во пакетот service се веќе дефинирани интерфејсите за сервисната логика. За секој од методите имате опис што треба да биде имплементирано. Потребно е да се имплементираат овие интерфејси во соодветните класи во пакетот service.impl. Во коментарите на методите се објаснети дополнителни услови (доколку ги има) кои треба да ги исполни методот.
  • Класите од пакетот repository треба да ги дополните со потребните методи кои ви се потребни за да ја овозможите функционалноста на имплементацијата на сервисниот слој. Тие треба да се изведат од класата JpaRepository од Spring Data.
  • Потребно е да ја анотирате класата DataInitializer и нејзините соодветни методи, така што при стартување на апликацијата ќе се изврши методот initData.
  • Во класата VirtualServerController се дефинирани сите методи кои се потребни за да се имплементира менаџирањето со виртуелните сервери. За секој од методите имате опис што треба да биде имплементирано. Потребно е овие handler методи да ги мапирате со користење само на HTTP GET и POST барања.
  • Дополнете ги темплејтите со соодветните Thymeleaf атрибути за да се постигнат бараните функционалности. Притоа, ако недостасуваат одредени елементи и атрибути, може да ги додадете, но НЕ СМЕЕ да ги менувате id и class својствата на тековните елементи. Во коментари се дадени описи за елементите кои треба да се повторуваат, како и кои методи од контролерот треба да се повикаат.
  • Потребно е да конфигурирате најава и одјава на корисници со Spring Security во класата SecurityConfig. Во самата класа има опис што треба да биде имплементирано.