i have java project, and i will send the details
CS 300 Final Project/Exam
You’ve been presented with a copy of BluePrints, the 2017-2018 CS480/481 project. This project
is a web site designed to allow easy editing of building, floor, and room data for the MonarchMaps
project (’16-’17). This project has a number of dependencies, and zero unit tests. It relies fairly heavily
on Spring and Spring MVC to manage *many* of those dependencies so you are in reasonably good
shape compared to other legacy projects. This represents a fairly realistic request in business and the
time frame (2 weeks) is likely a much larger timeframe than you would normally have OR the
application’s scope would be much larger.
I have updated this project to no longer depend on a remote Postgres SQL database, but instead
use Spring’s built-in, in-memory database H2. This means you do not have to connect to or worry about
conflicts with a database, however, nothing is actually persisted between sessions. When you run this
project (using Eclipse’s “Run on Server” feature), you’ll be able to point your browser at
http://localhost:8080/BluePrints to investigate the live app. I’ll be pushing a .sql file into your repository
within a few days to auto-seed the H2 database with some test data and will supply you a dummy
login/password at that point. In the meantime, you can still get familiar with the code!
Your task is to add the following feature/change, leveraging the techniques you’ve learned
throughout this course and make sure you are creating proper unit tests for the feature and any code
you must modify. Some areas of the code may not work properly, and you’ll need to investigate/fix
those areas using characterization tests to explore. I am not mandating a specific number of tests, but
you should adequately ensure you are testing what you’re changing.
We no longer want to “hard delete” any comment from the system. Comments are
attached to floors. Instead “soft delete” them by setting a deleted flag on the
comment. Soft-deleted comments should not normally be accessible under normal
operations but should still be stored in the table. We want to capture the date/time
the comment was deleted, and the user who did the deletion.
There are several things to consider, here. The project is using Jpa, which you can read more
about at https://spring.io/guides/gs/accessing-data-jpa/. Pay particular attention to how the
@Repository annotation works, especially in creating “find” methods… Here are a few suggestions to
get you started:
• Do some quick sketching/outlining to see how the classes interact
• Refactor the classes and interfaces in the edu.kings.cs480.BluePrints.Database
package to split the “Model” classes from the @Repository interfaces to simplify the scope of
what you’re working on
• Start by getting the field on each object to work, then look to override the delete behavior, and
finally the find behavior
• You may or may not have to create concrete implementations of the @Repository interfaces
depending on your approach
• Follow the existing application conventions for how “users” are stored my mimicking how the
“creator”/created_by fields work
• Be *cautious* when a floor is deleted – currently, a deleted floor hard-deletes all of its
comments; this behavior must also change
o Pay attention to the relationship between Floor and Comment; and note how a
Comment ignores if the comment creator cannot be found in the AppUsers data… <that
is a hint>
Your work is your own. Please do not share code as that will fall under the college’s academic
dishonesty and plagiarism guidelines.