Комментарии 4
Возможно, я не уловил сути, но зачем вообще нужна такая таблица и почему эту задачу нельзя решить существующим плагином (insight, например)?
0
Уважаемый bboogwin этот решение для «на коленке» сделанного. А то очень уже перегруженный контроллер который реализует в себе логику. Понимаю что круто писать лямбды на java, но в человеческий вид привести бы стоило следующий метод.
@POST
@Path("/self/{id}/move")
public Response moveEvent(@PathParam("id") String idString, MoveInfo moveInfo) {
long oldId = Long.valueOf(idString);
long newId;
if (moveInfo.getAfter() != null) {
String[] afterPathParts = moveInfo.getAfter().split("/");
long afterId = Long.valueOf(afterPathParts[afterPathParts.length - 1]);
newId = afterId > oldId ? afterId - 1 : afterId;
} else if (moveInfo.getPosition() != null) {
switch (moveInfo.getPosition()) {
case "First":
newId = getLastId();
break;
case "Last":
newId = 1L;
break;
case "Earlier":
newId = oldId < getLastId() ? oldId + 1 : oldId;
break;
case "Later":
newId = oldId > 1 ? oldId - 1 : oldId;
break;
default:
throw new IllegalArgumentException("Unknown position type!");
}
} else {
throw new IllegalArgumentException("Invalid move data!");
}
if (newId > oldId) {
storage.stream()
.filter(entry -> entry.getId() <= newId && entry.getId() >= oldId)
.forEach(entry -> entry.setId(entry.getId() == oldId ? newId : entry.getId() - 1));
} else if (newId < oldId) {
storage.stream()
.filter(entry -> entry.getId() >= newId && entry.getId() <= oldId)
.forEach(entry -> entry.setId(entry.getId() == oldId ? newId : entry.getId() + 1));
}
return Response.ok().build();
}
0
Угу, там не только логика, там и данные хранятся прямо в контроллере, потому что это И ЕСТЬ «на коленке сделанное» решение. Я бы никому не посоветовал делать так при реальной разработке, но это всего лишь демонстрационный пример, и от бекенда здесь требуется только работоспособность при минимуме кода. Выносить логику в какой-то отдельный сервис в этих условиях, на мой взгляд, причин нет.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Реализация RESTful Table в Atlassian User Interface