Skip to content

dnaroid/laser-server

Repository files navigation

Create a backend for simple News Management application using all knowledge from Training. Pay attention that your application should be without view layer (UI).

Your application should perform next operations:

  • Add news;
  • Edit news;
  • Delete news;
  • View the list of news;
  • View single news message;
  • Add news author;
  • Search according SearchCtiteria (see details in Implementation requirements section);
  • Add tag/tags for news message;
  • Add comment(s) for news message;
  • Delete comment(s);
  • Get list of news messages should be sorted by most commented news.
  • Save news message with author and tags should go as one step in service layer;
  • Each news should have only one author;
  • Each news may have more than 1 tag;
  • Count all news;

Implementation requirements:

  • Persistence layers should implement four basic C.R.U.D operations.
  • Sun java coding conventions;
  • Follow naming standards for all database objects;
  • Use Spring Dependency Injection and Inversion of Control;
  • Service layer should be tested using mocking framework - Mockito;
  • Persistence layer should be tested using DBUnit framework. Default data for testing should be loaded automatically.
  • Use Transfer Object to represent each database entity.
  • For search functionality use SeachCriteria object which may contains: author entity and list of tags (will be using for constructing SQL queries in DAO layer);
  • Note: author can be deleted – it’s possible to make him expired (not displayable in author dropdown, but visible on news list and view/update news);

System requirements: • Database: Oracle (version 10 and higher) • Data access: JDBC (simple SQL); • Use bitbucket as code repository.

Definition of done:

  • Code is clean, readable and documented;
  • The application should has correct structure of packages;
  • Database schema should be adjusted as described on page 2. Create 2 separate db scripts: one for db schema generation and one for loading default data (near 20 items for each table);
  • Exception handling;
  • Logging;
  • Application should be built using Maven in jar file (preferable to do it manually using command line, without help of IDE);