Anda di halaman 1dari 7

Outsourcing Requirements

We would like you to create a RESTFull webservice. First, the following requirements must be fulfilled.

The services must be implemented in Java using Maven. The webservice must be implemented in JAX-RS.

The program must connect to our MySQL Database ca4, IP-address: 52.169.222.182, port: 3306

The Database is whitelisted and contains test data, so we need your IP-address to give you access.

This is the domain model for our project:

Outsourcing Requirements We would like you to create a RESTFull webservice. First, the following requirements musthttps://github.com/PeterLLange/ca4.git " id="pdf-obj-0-14" src="pdf-obj-0-14.jpg">

Do not make any changes to the tables and entity classes, that they have already been made.

Our entity classes:

Service name: Flights

Service name: Flights Service name: Reservation The persons provided with the request, will be given as

Service name: Reservation

Service name: Flights Service name: Reservation The persons provided with the request, will be given as

The persons provided with the request, will be given as JSON objects. For examples, see below.

JSON Format for Data Exchange between Server and Client

 

JSON – Object

{

 

"airline":String,

"flights":[

{

Response-1

"flightID": String, "flightNumber" : String

"date": ISO-8601 String (date+time), "numberOfSeats": Integer, "totalPrice": Number (Euro), "traveltime": Integer (minutes), "origin":"IATA-Code (String), "destination": IATA-Code

"date": ISO-8601 String (date+time), "numberOfSeats": Integer, "totalPrice": Number (Euro), "traveltime": Integer (minutes), "origin":"IATA-Code (String), "destination": IATA-Code (String)

}

], ...

}

--------------------------------------------------------------------

 

Example

{

 

"airline": "AngularJS Airline", "flights": [ {

"flightID": "2257-1457179200000", "flightNumber": "COL2257", "date": "2016-03-05T13:00:00.000Z", "numberOfSeats": 3, "totalPrice": 180, "traveltime": 120, "origin": "CDG", "destination": "CPH",

}

]

}

   

JSON – Object

 

reservationReques

{

t

 

"flightID": String,

"firstName":String,

"numberOfSeats": Integer, "reserveeName": String, "reservePhone": String, "reserveeEmail": String (valid email), "passengers":[ { "lastName": String

"numberOfSeats": Integer, "reserveeName": String, "reservePhone": String, "reserveeEmail": String (valid email), "passengers":[ {

"lastName": String

}

]

   

}

--------------------------------------------------------------------

 
 

Example

 

{

 

"flightID":"2256-1459929600000",

"numberOfSeats":2,

"reserveeName":"Peter Hansen",

"reservePhone":"12345678",

"reserveeEmail":"peter@peter.dk", "passengers":[ { "firstName":"Peter","lastName":"Peterson"}, { "firstName":"Jane","lastName":"Peterson"}

]

 

}

 
   

JSON – Object

{

 

"flightNumber":"String", "origin":"String (Friendly name + IATA)", "destination":"String (Friendly name + IATA)",

"date":"ISO-8601-Date/time",

reservationRespon

se

"flightTime":"Integer (minutes)", "numberOfSeats":"Integer",

"firstName":"String",

"reserveeName":"String", "passengers":[ {

"reserveeName":"String", "passengers":[ {

 

"lastName":"String"

}

 

]

}

--------------------------------------------------------------------

   

Example

{

 

"flightNumber": "COL2256", "origin": "Copenhagen Kastrup(CPH)", "destination": "Charles de Gaulle International(CDG)", "date": "2016-04-06T10:00:00.000Z", "flightTime": 120, "numberOfSeats": 2, "reserveeName": "Peter Hansen", "passengers": [ {

 

"firstName": "Peter", "lastName": "Peterson" }, {

 

"firstName": "Jane", "lastName": "Peterson"

 

}

 

]

}

We would also like you to provide a Java Class containing these following methods:

public FlightFacade (EntityManagerFactory emf) public List<Flight> getFlightsWithFromDateTickets (String from, Date date, int tickets) public List<Flight> getFlightsWithFromToDateTickets (String to, String From, Date date, int tickets) public Reservation postReservationWithFlightIdPassengers (List<Passenger> passenger, int flightId)

JSON Format and HTTP codes for Errors Reported by the Server

All errors responses must be reported using both one of the following HTTP-Status Codes and a supplementary JSON Error Response given below:

HTTP Error Code

HTTP-400 (all errors relating to the client side, like illegal data etc.)

HTTP-404 (resource does not exist)

HTTP-500 (For all Unchecked Exceptions Thrown on the Server)

FlightException - Error Response JSON

{

 

"httpError": integer (400, 404, 500), "errorCode": integer (see below), "message": A descriptive message, meant for end users

}

How to interpret the errorCode:

1: No Flights (return an error when a search for flights returns no flights) 2: None or not enough available tickets (return an error when trying to reserve a flight when no tickets with the requested number of seats are available - only with a flight reservation) 3: Illegal Input (return an error when trying to type in a string in an int type field) 4: Unknown error (return an error when none of the above errors covers the problem)

Costs and time estimate

We would like an offer of your time estimate and your fixed price.

If you have any questions, please feel free to ask.