An admin dashboard for report management, user management and providing statistics/analytics of the captured reports. Reports come from an android app for citizens to share and report infrastructure issues (pothole on road, broken chair, etc) with different departments (NSW transport, WaterNSW, etc.).
Demo video
Java, Jersey (RESTful Web Services framework), Maven, JSP, Servlet, jQuery, JavaScript, ECharts, Google Maps JavaScript API, MySQL, HTML, CSS, DataTables Table plug-in for jQuery, AJAX, JSON, GitHub, Apache Tomcat, Postman
In order to decouple, front end and back end are separate Java maven projects.
AdminDashboard project contains front end code.
RestfulApi project contains back end code.
- com.myaustralia.beans: JavaBeans, used for back end.
- com.myaustralia.vo: Value Objects, used for front end.
- com.myaustralia.common: common utilities and helper classes used by all
- Adapter.java: include two functions
(1) Convert JavaBeans reports to VO reports (2) Convert VO report to JavaBeans report - DatabaseHelper.java: database connnection related functions
(1) Load database credentials from database.properties file (2) Get connection (3) Close connection - Dictionary.java: (1) Initialize Integer-String HashMap for report status, report stage and report priority. (2) Functions to get HashMap key from value and get HashMap value from key.
- JsonHelper.java: return List in JSON format, there are two different cases: (1) JSON with root element (format required by data table plugin) (2) JSON without root element
- Adapter.java: include two functions
- com.myaustralia.dao: Data Access Object that supports Generics
- com.myaustralia.repositories: Implementation of the functions to be used in the package com.myaustralia.services
- ChartRepository.java: return the JSON data to be used by two charts
- MapMarkerClusterRepository.java: return the JSON data to be used by Google Maps map marker cluster
- MapMarkerRepository.java: return the JSON data to be used by Google Maps map marker
- ReportRepository.java: CRUD of report(s)
- UserRepository.java: CRUD of user(s)
- com.myaustralia.services: Calls the functions provided by repositories. Defines URL (Path), Verb (GET, POST, PUT, DELETE), MediaType for different RESTful web services to be consumed by front end
- ImageService.java: return the image according to ReportId
- ReportService.java: report related services
- UserService.java: user related services
- Visualization.java: charts and Google Maps related services
- database.properties: contains database driver class, URL, credentials
- params.properties: defines the max image size allowed (in Byte)