Reference no: EM132224708
Background: eVoting Technology
After evaluating various platforms, the government finally decided to adopt a Service Oriented Architecture (SOA) for its future IT infrastructure. They were impressed with your Template based, Reference Architecture approach set out in your Task 1 Report and have accepted your recommendations regarding:
- Computing and storage infrastructure design,
- Application / service integration, and
- Information integration.
However, they would like to gain a deeper understanding of the technologies behind your recommendation and have asked for a small specific demonstration of these technologies along with a brief explanation of the concepts and principles of how it works.
Specifically, they have asked you to provide a demonstration web page in which the user will input a service and a post code. Upon clicking a button, a cluster map of offices, based on the services they offer and location, will be displayed to the user.
Assignment Tasks
This assignment consists of two deliverables, being: demonstration code 75%, and a report 25%. All code relating to this assignment should be contained within a folder named: Task 2
- Your Name - Student Number, the folder is then to be zipped and uploaded to blackboard. The report must be uploaded separately.
Important Note: For ease of demonstration, your code must be self-contained. In addition to using Standards based HTML and Python, PETL, Bottle and Parser are the only additional frameworks you should need. If you use others they must be provided and not require installation.
Demonstration Code
To demonstrate your code, you have been provided with four data sources compiled with fictitious sample data. These are:
- "Offices.csv" contains the information about the government offices,
- "Office_Locations.xml" contains the location coordinates for each office
- "Services.xml" contains a list of government office services
- "Office_Services.csv" contains a list of offices and the services they offer
Task 1 - Data integration demo.
You are to submit a python script named "Data_Integration.py".
Your script should firstly clean the data then merge it into one CSV file named "Office_Service_Locations.csv".
Task 1.1 Data Cleansing
Clean data in the phone number field from "Offices.csv" to ensure all phone numbers are in the same format: +international code regional code phone number. That is all phone numbers should have the international code for Australia "+61", followed by a space, followed by the regional code, followed by a space, followed by the first 4 digits of the local phone number, followed by a space, followed by the last 4 digits of the local phone number. For example, the Brisbane office should be formatted to: +61 7 3672 8709
Whilst regional codes do not always adhere to state boundaries, you may apply the following regional codes for each state:
NSW = 2
VIC = 3
QLD = 7
SA = 9
Task 1.2 Data Merge
Merge the data from the four data sources into "Office_Service_Locations.csv" with the following fields (attributes):
- OfficeServicesID - a unique field identifying each record from Office_Services
- OfficeID - a foreign key linking to Services from Office_Services
- Service - the ServiceName from Services
- OfficeID - a foreign key linking to offices and locations
- Office - the "Contact Name" from offices
- Suburb - the "Suburb" from offices
- Phone - the cleaned "Phone Number" data from offices
- Email - the "Email" address from offices
- Lat from Office_Locations
- Lon from Office_Locations
Task 2 - RESTful Web Service Demo
You are to submit a python script named "Office_Locator.py".
For tasks 2.1 to 2.2 Your script should build a RESTful web service that supports a ‘getoffices' query from the client browser similar to "/getoffices?serviceid=x". The server Web Service will return a JSON table with the following fields (attributes): Office, Suburb, Service, Phone, Email, Lat, Lon. Data is to come from the "Office_Service_Locations.csv" you built in task 1.2.
Task 2.1 Return offices for a service
The server will return a table of records (tuples) of offices offering the service ID passed to it.
Task 2.2 Return all unique offices
In the advent of a call to "getoffices?serviceid=0", the server will return a distinct list of offices offering any service. That is a list of all offices listed once.
Task 2.3 List of Services
To populate your drop-down list in task 3.1 you will need to return a JSON table of all records from "services.csv" with the following fields (attributes): ServiceID, Service. The server should respond to a "getservices" request.
Task 2.4 Error Handling
Your code should handle any errors including incorrect requests.
Task 3 Mashup Demo
You are to submit a HTML file "office_map.html" and optionally a CSS file named
"office_map.css".
Task 3.1 Form Layout
You are to create an input form that accepts user input for a particular service. The input for the service should be a drop-down list with the first item of being "Any Service" with a value
= 0, remaining items should be created dynamically from a call to getservices from task 2.3. The drop-down list should be accompanied with descriptors and a "Locate Offices" button.
Task 3.2 Google Map
Clicking the "Locate Offices" button the will trigger a "getoffices" web service to retrieve a table of offices matching the service with attributes described in task 2. From this data you are to display a Google cluster map marking the position of the returned offices. The map should be centred and zoomed to an appropriate level to show all offices in Australia.
Task 3.3 Information Window Demographics
Upon clicking a marker bubble on the map, the user will be displayed an information window containing: Contact Name, Suburb, Phone Number, and a clickable email address.
Task 3.4 Information window email
Clicking an email address link in the information window should launch the user's email application and automatically insert the subject line "Office Enquiry".
Report
You are required to write a report explaining the theory underlining the key concepts around the design and implementation of your demonstration system. You are also required to explain how to run your code. Finally, you are to include all code submitted in the appendices to the report, note that the code will not count towards the word count.
Attachment:- ASSIGNMENT.rar