public ListBuildingsRequest build() { return new ListBuildingsRequest(nameStartsWith); } }
public ListBuildingsRequest toRequest() { final ListBuildingsRequest.Builder builder = new ListBuildingsRequest.Builder(); getNameStartsWith().ifPresent(builder::nameStartsWith); return builder.build(); } }
@Override public void evictTenantFromBuilding(String buildingId, String tenantId) { evictTenantFromBuilding.execute(new EvictTenantFromBuildingRequest(buildingId, tenantId)); }
public List<BuildingJson> list(String nameStartsWith) { ListConsumer<BuildingResponseModel> consumer = new ListConsumer<>(); listBuildings.execute(new ListBuildingsRequest.Builder().nameStartsWith(nameStartsWith).build(), consumer); return consumer.getContent().stream().map(BuildingPresenter::present).collect(Collectors.toList()); } }
@GetMapping("/{buildingId}") public BuildingJson get(@PathVariable String buildingId) { final JsonBuildingResponseModelPresenter presenter = new JsonBuildingResponseModelPresenter(); getBuilding.execute(new GetBuildingRequest(buildingId), presenter); return presenter.getPresentedResult(); }
@Override public String createBuilding(String name) { SimpleConsumer<String> consumer = new SimpleConsumer<>(); createBuilding.execute(new CreateBuildingRequest(name), consumer); return consumer.getContent(); }
@Override public String addTenantToBuilding(String buildingId, String tenantName) { SimpleConsumer<String> consumer = new SimpleConsumer<>(); addTenantToBuilding.execute(new AddTenantToBuildingRequest(buildingId, tenantName), consumer); return consumer.getContent(); }
@Override public void execute(EvictTenantFromBuildingRequest request) { Building building = buildingEntityGateway.findById(request.getBuildingId()); building.evictTenant(request.getTenantId()); buildingEntityGateway.save(building); } }
@Override public void execute(AddTenantToBuildingRequest request, Consumer<String> idConsumer) { Building building = buildingEntityGateway.findById(request.getBuildingId()); Tenant tenant = TenantFactory.create().createTenant(request.getTenantName()); building.addTenant(tenant); buildingEntityGateway.save(building); idConsumer.accept(tenant.getId()); } }
private List<Building> findBuildings(ListBuildingsRequest request) { return request.getNameStartsWith() .map(buildingEntityGateway::findByNameStartingWith) .orElse(buildingEntityGateway.findAll()); } }
@Override public void execute(CreateBuildingRequest request, Consumer<String> idConsumer) { Building building = BuildingFactory.create().createBuilding(request.getName()); idConsumer.accept(buildingEntityGateway.save(building)); } }
@Override public void execute(GetBuildingRequest request, Consumer<BuildingResponseModel> consumer) { Building b = buildingEntityGateway.findById(request.getBuildingId()); List<TenantResponseModel> tenants = b.getTenants().stream().map(it -> new TenantResponseModel(it.getId(), it.getName())).collect(Collectors.toList()); consumer.accept(new BuildingResponseModel(b.getId(), b.getName(), tenants)); } }
@Override public List<BuildingJson> listBuildings(String nameStartsWith) { ListConsumer<BuildingResponseModel> consumer = new ListConsumer<>(); listBuildings.execute(new ListBuildingsRequest.Builder().nameStartsWith(nameStartsWith).build(), consumer); return consumer.getContent().stream().map(this::present).collect(Collectors.toList()); }
public ListBuildingsRequest toRequest() { final ListBuildingsRequest.Builder builder = new ListBuildingsRequest.Builder(); getNameStartsWith().ifPresent(builder::nameStartsWith); return builder.build(); } }
@GET @Produces("application/json") @Path("/{buildingId}") public BuildingJson get(@PathParam(("buildingId")) String buildingId) { final JsonBuildingResponseModelPresenter presenter = new JsonBuildingResponseModelPresenter(); getBuilding.execute(new GetBuildingRequest(buildingId), presenter); return presenter.getPresentedResult(); }
@DeleteMapping("{buildingId}/tenant/{tenantId}") public void evictTenant(@PathVariable("buildingId") String buildingId, @PathVariable("tenantId") String tenantId) { evictTenantFromBuilding.execute(new EvictTenantFromBuildingRequest(buildingId, tenantId)); } }
@POST @Consumes("application/json") public Response create(CreateBuildingJsonPayload payload) { final AtomicReference<String> id = new AtomicReference<>(); createBuilding.execute(new CreateBuildingRequest(payload.getName()), id::set); return Response.created(UriBuilder.fromPath(GET_SINGLE_BUILDING_URI_TEMPLATE).resolveTemplate("buildingId", id.get()).build()) .header("X-Created-Id", id.get()) .build(); }
public BuildingJson getBuilding(String buildingId) { SimpleConsumer<BuildingResponseModel> consumer = new SimpleConsumer<>(); getBuilding.execute(new GetBuildingRequest(buildingId), consumer); return BuildingPresenter.present(consumer.getContent()); } }
@DELETE @Path("{buildingId}/tenant/{tenantId}") public Response evictTenant(@PathParam("buildingId") String buildingId, @PathParam("tenantId") String tenantId) { evictTenantFromBuilding.execute(new EvictTenantFromBuildingRequest(buildingId, tenantId)); return Response.ok().build(); } }
@Override public BuildingJson getBuilding(String buildingId) { SimpleConsumer<BuildingResponseModel> consumer = new SimpleConsumer<>(); getBuilding.execute(new GetBuildingRequest(buildingId), consumer); return present(consumer.getContent()); }