Java tutorial
/* * Copyright (c) 2014 Mateusz Szczap * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package controllers; import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import domain.SearchResults; import domain.VehicleData; import domain.VehicleImage; import play.libs.F; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; import java.util.List; import java.util.Optional; import java.util.concurrent.TimeUnit; /** * Mock controller that simply returns fake json data * * Created by Mateusz Szczap on 19/10/14. */ public class Mock extends Controller { public static F.Promise<Result> mock(final String serviceName, final int vehicleId) { final int secsDelayed = Optional.ofNullable(request().getQueryString("secsDelayed")) .map(str -> Integer.parseInt(str)).orElse(0); final boolean boom = Optional.ofNullable(request().getQueryString("boom")).map(str -> Boolean.valueOf(str)) .orElse(false); if (boom) { return F.Promise.throwing(new RuntimeException("boom!!!")); } if (vehicleId != 1) { return F.Promise.pure(notFound(Json.toJson(ImmutableMap.of("error", "content not found!")))); } switch (serviceName) { case "vehicleData": return respond(Json.toJson(fakeVehicleData()), secsDelayed); case "vehicleImage": return respond(Json.toJson(fakeVehicleImage()), secsDelayed); case "searchResults": return respond(Json.toJson(fakeSearchResults()), secsDelayed); default: return F.Promise.pure(badRequest(String.format("serviceName %s not supported!", serviceName))); } } private static F.Promise<Result> respond(final JsonNode json, final int delayInSeconds) { return F.Promise.timeout(ok(json), delayInSeconds, TimeUnit.SECONDS); } private static VehicleData fakeVehicleData() { return new VehicleData(1, "Ford", "Mondeo", "TDCi", "2.2", "Der Ford Mondeo 2.2 TDCI ist das Topmodell unter den" + " Selbstzndern der erfolgreichen Baureihe. Seit dem Jahr 2012 wirkt der neue oder gebrauchte Ford Mondeo 2.2 TDCI " + "auf seine direkten Wettbewerber wie den Opel Insignia 2.0 CDTI oder Peugeot 508 HDI FAP 200 ein. Der Ford Mondeo 2.2 TDCI " + "Neuwagen will neben dem gnstigeren Preis mit vielen weiteren Attributen punkten. So ist die Serienausstattung im Ford Mondeo 2.2 TDCI " + "recht komplett und lsst auch als Gebrauchtwagen kaum Wnsche offen. Das Highlight des als Limousine und Turnier (Kombi) erhltlichen Ford Mondeo 2.2 TDCI " + "ist ohne Zweifel das drehmomentstarke Triebwerk: Der Vierzylinder-Turbodiesel mit knapp 2,2 Liter Hubraum entwickelt 200 PS und verhilft dem Klner Bestseller zu" + " sportlichen Fahrleistungen: ber das manuelle Sechsganggetriebe spurtet der Ford Mondeo 2.2 TDCI aus dem Stand in 8,3 Sekunden auf Landstraentempo." + " Mit seiner Spitzengeschwindigkeit von 230 km/h liegen Limousine wie auch der Turnier im Bereich der Konkurrenten. Trotz seiner sportlichen Leistungswerte lsst sich ein" + " Ford Mondeo 2.2 TDCI Gebrauchtwagen sehr moderat bewegen: Im Durchschnitt konsumiert der Selbstznder lediglich 6,0 Liter Diesel auf 100 Kilometer." + " Falls Sie auf der Suche nach einem krftig motorisierten Selbstznder sind, finden Sie den Ford Mondeo 2.2 TDCI Gebrauchtwagen in den Inseraten auf mobile.de!"); } private static VehicleImage fakeVehicleImage() { return new VehicleImage(1, "http://static.classistatic.de/imagegallery/ford/mondeo/ford-mondeo-for_mon_10_kb_5.jpg"); } private static SearchResults fakeSearchResults() { final List<SearchResults.Item> items = ImmutableList.of(car1(), car2(), car3()); return new SearchResults("FORD MONDEO 2.2 TDCI", 3680, items); } private static SearchResults.Item car1() { return new SearchResults.Item("Ford Mondeo Turnier 2.0 TDCi AUTOMATIK NAVI AHK PDC", 1220, "http://i.ebayimg.com/00/s/NzY4WDEwMjQ=/z/~OQAAOSwY45URsn~/$_18.JPG", "DE", "12167", "Berlin", "2005/05", 120990, 80, 8.7F, 149.0F); } private static SearchResults.Item car2() { return new SearchResults.Item("Ford Mondeo Turnier 2.0 TDCi Aut.", 9022, "http://i.ebayimg.com/00/s/NzY4WDEwMjQ=/z/9jkAAOSw6EhURsHB/$_18.JPG", "DE", "72072", "Landau", "2001/02", 80100, 60, 7.7F, 119.0F); } private static SearchResults.Item car3() { return new SearchResults.Item("Ford Mondeo 2.0 Turnier TDCi Ghia Vollausstattung", 7654, "http://i.ebayimg.com/00/s/NTc2WDEwMjQ=/z/GM8AAOSwU9xURsLl/$_18.JPG", "FR", "129011", "Paris", "1990/09", 200000, 120, 10.7F, 150.5F); } }