PA165 Enterprise Java - Seminars

2nd Milestone Project Requirements (M2)

2nd Milestone Project Requirements

project done: Fri 25.11.2016 23:59
evaluation submitted: Tue 29.11.2016 15:59

Project Requirements:

  • Implement Facade layer interfaces and implementations.
    • Everything that should happen in the system must be available through these interfaces (create entities, deleting them etc);
    • You must have at least 2 non-trivial business functions on Service Layer (the example project contains several of them). Service layer is not always just a place to delegate to DAO;
  • Other points about the Facade and Service layers:
    • All the classes must be wired via dependency injection. Your service objects should obtain an instance of the EntityManager that way;
    • All the facade interfaces must not reference entities, but Transfer Objects only;
    • All service interfaces must reference only entities, not Data Transfer Objects;
    • You can use Dozer framework to map entity instances to transfer objects. The mapping may be done on Facade Layer;
    • Facade layer is used to drive transactions;
  • Change layout of your project to Multimodule Maven project (tutorial here http://maven.apache.org/guides/getting-started/index.html) Your project should have 3 separate modules:
    • DAO layer
    • Service Layer and Facade Layer implementation
    • API layer - just DTOs and facade interfaces!
  • Facade layer will use Service layer and Service layer will use DAO layer;
  • Make sure that DataAccessException or its subclass is thrown in case of any exception on a the DAO layer;
  • Implement simple unit tests for facade layer. Just one simple test per method is enough. This is mainly so that it’s easy to verify the Facade layer works;
  • There must be extensive unit tests for the service layer (particularly for your 2 business functions) and all the tests of service layer must use Mock DAO objects;

Evaluation Checklist:

  • Maximum number of points for this milestone is 10 points;
  • -2 points if it is not possible to compile the project and run tests using “mvn clean install”;
  • -2 points if there are test failures;
  • minimally -1 point for each of the unmet project requirements;
  • -1 point for each occurrence of a team member not contributing enough;
  • If a team member was not contributing at all, or very little, you should explicitly say this in your evaluation report. Tutor will follow up on this information;