Alba

parent 7214ee3c
......@@ -20,13 +20,13 @@
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.9.4</version>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-template-freemarker</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
<build>
......
......@@ -62,4 +62,9 @@ public class Circuito
public void setCurvas(int curvas) {
this.curvas = curvas;
}
@Override
public String toString()
{
return getNombre();
}
}
\ No newline at end of file
package com.example.demo;
public class CircuitoException extends Exception
{
public CircuitoException()
{
super();
}
public CircuitoException(String message)
{
super(message);
}
}
package com.example.demo;
import java.util.Collection;
public interface CircuitoService
{
public void addCircuito(Circuito user);
public Collection<Circuito> getCircuitos();
public Circuito getCircuito(String id);
public Circuito editCircuito(Circuito user) throws CircuitoException;
public void deleteCircuito(String id);
public boolean circuitoExist(String id);
}
package com.example.demo;
import java.util.Collection;
import java.util.HashMap;
public class CircuitoServiceMapImpl implements CircuitoService {
private HashMap<Integer, Circuito> circuitoMap;
public CircuitoServiceMapImpl()
{
circuitoMap = new HashMap<>();
}
@Override
public void addCircuito(Circuito circuito) {
circuitoMap.put(circuito.getId(), circuito);
}
@Override
public Collection<Circuito> getCircuitos()
{
return circuitoMap.values();
}
@Override
public Circuito getCircuito(String id)
{
return circuitoMap.get(id);
}
@Override
public Circuito editCircuito(Circuito forEdit) throws CircuitoException {
try {
int id = forEdit.getId();
if (id <= 0)
{
throw new CircuitoException("Invalid circuit ID");
}
Circuito toEdit = circuitoMap.get(id);
if (toEdit == null)
{
throw new CircuitoException("Circuito not found");
}
if (forEdit.getNombre() != null && !forEdit.getNombre().isEmpty())
{
toEdit.setNombre(forEdit.getNombre());
}
if (forEdit.getPais() != null && !forEdit.getPais().isEmpty())
{
toEdit.setPais(forEdit.getPais());
}
if (forEdit.getCiudad() != null && !forEdit.getCiudad().isEmpty())
{
toEdit.setCiudad(forEdit.getCiudad());
}
if (forEdit.getLongitud() > 0)
{
toEdit.setLongitud(forEdit.getLongitud());
}
if (forEdit.getCurvas() > 0)
{
toEdit.setCurvas(forEdit.getCurvas());
}
return toEdit;
}
catch (Exception ex)
{
throw new CircuitoException(ex.getMessage());
}
}
@Override
public void deleteCircuito(String id)
{
circuitoMap.remove(id);
}
@Override
public boolean circuitoExist(String id)
{
return circuitoMap.containsKey(id);
}
}
package com.example.demo;
import static spark.Spark.delete;
import static spark.Spark.get;
import static spark.Spark.options;
import static spark.Spark.post;
import static spark.Spark.put;
import com.google.gson.Gson;
public class SparkRest
{
public static void main(String[] args) {
final CircuitoService circuitoService = new CircuitoServiceMapImpl()
{};
post("/circuito", (request, response) -> {
response.type("application/json");
Circuito circuito = new Gson().fromJson(request.body(), Circuito.class);
circuitoService.addCircuito(circuito);
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS));
});
get("/circuitos", (request, response) -> {
response.type("application/json");
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS, new Gson().toJsonTree(circuitoService.getCircuitos())));
});
get("/circuitos/:id", (request, response) -> {
response.type("application/json");
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS, new Gson().toJsonTree(circuitoService.getCircuito(request.params(":id")))));
});
put("/circuitos/:id", (request, response) -> {
response.type("application/json");
Circuito toEdit = new Gson().fromJson(request.body(), Circuito.class);
Circuito editedCircuito = circuitoService.editCircuito(toEdit);
if (editedCircuito != null) {
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS, new Gson().toJsonTree(editedCircuito)));
} else {
return new Gson().toJson(new StandardResponse(StatusResponse.ERROR, new Gson().toJson("Circuito not found or error in edit")));
}
});
delete("/circuitos/:id", (request, response) -> {
response.type("application/json");
circuitoService.deleteCircuito(request.params(":id"));
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS, "user deleted"));
});
options("/circuitos/:id", (request, response) -> {
response.type("application/json");
return new Gson().toJson(new StandardResponse(StatusResponse.SUCCESS, (circuitoService.circuitoExist(request.params(":id"))) ? "Circuito exists" : "Circuito does not exists"));
});
}
}
package com.example.demo;
import com.google.gson.JsonElement;
public class StandardResponse {
private StatusResponse status;
private String message;
private JsonElement data;
public StandardResponse(StatusResponse status)
{
this.status = status;
}
public StandardResponse(StatusResponse status, String message)
{
this.status = status;
this.message = message;
}
public StandardResponse(StatusResponse status, JsonElement data)
{
this.status = status;
this.data = data;
}
public StatusResponse getStatus()
{
return status;
}
public void setStatus(StatusResponse status)
{
this.status = status;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
public JsonElement getData()
{
return data;
}
public void setData(JsonElement data)
{
this.data = data;
}
}
package com.example.demo;
public enum StatusResponse
{
SUCCESS("Success"), ERROR("Error");
final private String status;
StatusResponse(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment