Alpha Land and Home (ALH) is a real estate company operational in suburban Brisbane and Sydney. As a part of its growth strategy ALH is now planning to implement an online property listing system that uses 3-tier enterprise application that encompasses presentation, business, and persistence tiers. Being a software developer at ALH, the management has assigned you design, develop, and implement a prototype version of that system using Java Enterprise Edition (JEE) technology and related platforms, frameworks and tools.
In this assignment (Assignment-1) you will design, implement, and test the persistence tier of the proposed prototype system.
The specification of this assignment is as follows.
1. As a real estate agency, ALH is involved with selling and renting properties.
A major assumption is that these properties share some common or generic attributes like street address, number of bedrooms, number of bathrooms, and number of garages.
2. In order to reduce code redundancy, you must implement inheritance mapping using ORM (Object Relational Mapping) technology in this assignment. As a part of assignment requirements, you must:
1. Implement at least 1 superclass entity namely Property by using either the Joined- Subclass Strategy (detailed on page 170 of the textbook) or the Mapped Superclass Strategy (detailed on page 174 to 175 of the textbook).
2. Implement at least 2 subclass entities (PropertyForSale and PropertyForRent) that inherit the above superclass entity (Property) to abstract common properties and/or operations. These inherited classes will have some additional attributes on its own such as sale price (in PropertyForSale), rent per week (in PropertyForRent).
c. You must also be able to store the information of customers who shows interested with the listed properties. The customer information will contain data like Customer ID, first name, last name, email address, mobile phone number.
4. You also must be able to store the inquiry information (which customer was interested with which property). The inquiry information may contain data such as enquiry ID, date of enquiry, customer, and property.
5. In your ORM design, the relationship between customer and inquiry entities must be one-to-many, i.e. a customer can inquire about many properties. Refer pages 156 to 159 of the textbook to understand the entity relationships.
3. The property, customer, and inquiry data must be persisted into a Derby database. You are required to use Java Persistence API (JPA 2 or higher) to persist information into a Derby database and Java Persistence Query Language (JPQL) to query data.
In order to demonstrate your ability to design, develop and implement the prototype, you are required to implement all the entities and Java standalone applications (i.e. a standard java program with public static void main (args[] arg) method to persist and retrieve data. To submit your assignment, you need to provide:
1. The design of all entities. You are required to describe the structures of these entities, their inheritance hierarchy, or relationship.
2. The complete implementation code of the persistence tier, including: Java source code, the Maven POM file and persistence XML file within a standard Maven directory structure (for example see Listing 2-53, page 63 of the textbook). That means the code can be compiled and run directly in the Java EE environment that is used in this course without any further revision/redevelopment.
3. The test instruction.
You are required to provide detailed instructions on how users can run the software to persist at least 1 property on sale, 1 property for lease, 2 customers, and 2 inquiries of each customer. These test data can be either hard- in your programs or you can use command prompts to input the data.