Critter Chronologer a Software as a Service application that provides a scheduling interface for a small business that takes care of animals

Related tags

Spring Boot critter
Overview

Critter Chronologer Project Starter

Critter Chronologer a Software as a Service application that provides a scheduling interface for a small business that takes care of animals. This Spring Boot project will allow users to create pets, owners, and employees, and then schedule events for employees to provide services for pets.

Getting Started

Dependencies

Part of this project involves configuring a Spring application to connect to an external data source. Before beginning this project, you must install a database to connect to. Here are instructions for installing MySQL 8.

You should install the Server and Connector/J, but it is also convenient to install the Documentation and Workbench.

Alternately, you may wish to run MySQL in a docker container, using these instructions.

After installing the Server, you will need to create a user that your application will use to perform operations on the server. You should create a user that has all permissions on localhost using the sql command found here.

Another SQL database may be used if desired, but do not use the H2 in-memory database as your primary datasource.

Installation

  1. Clone or download this repository.
  2. Open IntelliJ IDEA.
  3. In IDEA, select File -> Open and navigate to the critter directory within this repository. Select that directory to open.
  4. The project should open in IDEA. In the project structure, navigate to src/main/java/com.udacity.jdnd.course3.critter.
  5. Within that directory, click on CritterApplication.java and select Run -> Debug CritterApplication.
  6. Open a browser and navigate to the url: http://localhost:8082/test

You should see the message "Critter Starter installed successfully" in your browser.

Testing

Once you have completed the above installation, you should also be able to run the included unit tests to verify basic functionality as you complete it. To run unit tests:

  1. Within your project in IDEA, Navigate to src/test/java/com.udacity.jdnd.course3.critter.
  2. Within that directory, click on CritterFunctionalTest.java and select Run -> Run CritterFunctionalTest.

A window should open showing you the test executions. All 9 tests should fail and if you click on them they will show java.lang.UnsupportedOperationeException as the cause.

As you complete the objectives of this project, you will be able to verify progress by re-running these tests.

Tested Conditions

Tests will pass under the following conditions:

  • testCreateCustomer - UserController.saveCustomer returns a saved customer matching the request
  • testCreateEmployee - UserController.saveEmployee returns a saved employee matching the request
  • testAddPetsToCustomer - PetController.getPetsByOwner returns a saved pet with the same id and name as the one saved with UserController.savePet for a given owner
  • testFindPetsByOwner - PetController.getPetsByOwner returns all pets saved for that owner.
  • testFindOwnerByPet - UserController.getOwnerByPet returns the saved owner used to create the pet.
  • testChangeEmployeeAvailability - UserController.getEmployee returns an employee with the same availability as set for that employee by UserControler.setAvailability
  • testFindEmployeesByServiceAndTime - UserController.findEmployeesForService returns all saved employees that have the requested availability and skills and none that do not
  • testSchedulePetsForServiceWithEmployee - ScheduleController.createSchedule returns a saved schedule matching the requested activities, pets, employees, and date
  • testFindScheduleByEntities - ScheduleController.getScheduleForEmployee returns all saved schedules containing that employee. ScheduleController.getScheduleForPet returns all saved schedules for that pet. ScheduleController.getScheduleForCustomer returns all saved schedules for any pets belonging to that owner.

Postman

In addition to the included unit tests, a Postman collection has been provided.

  1. Open Postman.
  2. Select the Import button.
  3. Import the file found in this repository under src/main/resource/Udacity.postman_collection.json
  4. Expand the Udacity folder in postman.

Each entry in this collection contains information in its Body tab if necessary and all requests should function for a completed project. Depending on your key generation strategy, you may need to edit the specific ids in these requests for your particular project.

Built With

  • Spring Boot - Framework providing dependency injection, web framework, data binding, resource management, transaction management, and more.
  • Google Guava - A set of core libraries used in this project for their collections utilities.
  • H2 Database Engine - An in-memory database used in this project to run unit tests.
  • MySQL Connector/J - JDBC Drivers to allow Java to connect to MySQL Server

License

This project is licensed under the MIT License - see the LICENSE.md

You might also like...

Implementation of Greedy Particle Swarm Optimization, HSGA and Hybrid(GA+PSO) for the purpose of Task Scheduling in cloud computing environment using CloudSim

Implementation of Greedy Particle Swarm Optimization, HSGA and Hybrid(GA+PSO) for the purpose of Task Scheduling in cloud computing environment using CloudSim

Dec 18, 2022

Tasks Planner : A minimalist collaborative app for scheduling and managing your tasks with the team and getting notifications through discord.

Tasks Planner : A minimalist collaborative app for scheduling and managing your tasks with the team and getting notifications through discord.

Tasks Planner ✨ Overview Tasks planner is a minimalist collaborative app for planning and managing your tasks with the team and get notifications thro

Dec 1, 2022

OpenL Tablets Business Rules Management System

Easy Business Rules OpenL Tablets targets the infamous gap between business requirements (rules and policies) and software implementation. Designed to

Dec 17, 2022

Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Jan 4, 2023

Highly customized business metrics monitoring with TDengine & Spring Boot

Highly customized business metrics monitoring with TDengine & Spring Boot

Horus —— Highly customized business metrics monitoring with TDengine & Spring Boot 给予业务指标监控的高度定制自由 设计文档:https://akhnhwmr9k.feishu.cn/wiki/wikcnJJFmDHj

Jun 17, 2022

Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

May 21, 2022

The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and application is evidently made available to the user.

RocketMQ Dashboard How To Install With Docker get docker image mvn clean package -Dmaven.test.skip=true docker:build or docker pull apacherocketmq/ro

Dec 30, 2022

Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.

Spring Cloud Alibaba A project maintained by Alibaba. See the 中文文档 for Chinese readme. Spring Cloud Alibaba provides a one-stop solution for distribut

Jan 1, 2023

Provides a simple java application for managing internationall football teams, players, coaches and matches.

Provides a simple java application for managing internationall football teams, players, coaches and matches.

Internationall football team manager application Provides a simple java application for managing internationall football teams, players, coaches and m

Feb 7, 2022
Owner
Rasha Omran
Rasha Omran
Tuya 37 Dec 26, 2022
Business Application Platform - no-code/low-code platform to build business applications

Orienteer What is Orienteer Orienteer is Business Application Platform: Easy creation of business applications Extendable to fit your needs Dynamic da

Orienteer 189 Dec 6, 2022
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.

Flowable (V6) Maven Central: Docker Images: License: Homepage: https://www.flowable.org/ flowable / flowəb(ə)l / a compact and highly efficient workfl

Flowable 6k Jan 7, 2023
Lattice is a powerful, lightweight business extension invoke framework. By using the Lattice framework, complex business customization can be efficiently organized and managed.

Lattice Framework Introduction Lattice is a powerful, lightweight business extension invoke framework. By using the Lattice framework, complex busines

null 41 Dec 30, 2022
Harvest your animals in the most cursed way possible.

Reaping Harvest your animals in the most cursed way possible. By using the Reaper you can harvest food from animals as if you had killed them, but wit

Jam Core 4 Oct 23, 2022
A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduling and validation capabilities

Aerie A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduli

NASA Advanced Multi-Mission Operations System 31 Jan 3, 2023
Restler is a library that automatically generates a client for a web service at run time, by analyzing the respective annotated Spring controller interface

Restler Overview Restler is a library that automatically generates a client for a web service at run time, by analyzing the respective annotated Sprin

Excelsior LLC 29 Oct 24, 2022
This program takes player stats spreasheets from Basketball Reference and predicts NBA outcomes.

NBAPredictor This program takes player stats spreasheets from Basketball Reference and predicts NBA outcomes. On line 28, change the file path to be a

null 1 Feb 5, 2022
The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types.

Apache Commons CSV The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types. Documentation More i

The Apache Software Foundation 307 Dec 26, 2022
CodeGen - a secure, high efficiency, and offline-able software, it provides several useful functions

CodeGen Efficiency ToolBox Introduce Download References Issues and Suggestions Software Preview Introduce CodeGen is a secure, high efficiency, and o

null 454 Jan 4, 2023