diff --git a/controller.png b/controller.png index e6e9232..32c187f 100644 --- a/controller.png +++ b/controller.png Binary files differ diff --git a/controller.pu b/controller.pu index 3a7f87c..8049e4b 100644 --- a/controller.pu +++ b/controller.pu @@ -19,6 +19,7 @@ state "ログアウト" as logout_ state "BLDGデータリスト" as indeies_ state "マッパーリスト" as list_ + state "管理" as admin_ state "使い方(外部リンク)" as howto_ logout_ --> logout_ : /logout } @@ -56,6 +57,10 @@ task : updateTime } +state "管理" as admin { + admin : download +} + state "外部リンク" as howto { howto : "https://github.com/yuuhayashi/task-bldg/wiki" } @@ -77,5 +82,7 @@ meshes --> tasks : /tasks tasks -> task : /task tasks <- task : /tasks +admin_ --> admin : /admin +admin --> admin : /admin/download @enduml \ No newline at end of file diff --git a/src/main/java/osm/surveyor/task/city/TaskController.java b/src/main/java/osm/surveyor/task/city/TaskController.java index bc61f24..91c98d9 100644 --- a/src/main/java/osm/surveyor/task/city/TaskController.java +++ b/src/main/java/osm/surveyor/task/city/TaskController.java @@ -1,8 +1,12 @@ package osm.surveyor.task.city; +import java.io.IOException; +import java.io.OutputStream; import java.util.List; import java.util.UUID; +import javax.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.core.annotation.AuthenticationPrincipal; @@ -176,6 +180,44 @@ return "redirect:/tasks?citycode="+ task.getCitycode() +"&meshcode="+ task.getMeshcode(); } + @GetMapping("/admin") + public String admin() + { + return "admin"; + } + + @PostMapping("/admin/download") + public String download(HttpServletResponse response) { + try (OutputStream os = response.getOutputStream();) { + List list = taskRepository.findAll(); + StringBuffer sb = new StringBuffer(); + boolean c1 = false; + sb.append("["); + sb.append(System.lineSeparator()); + for (Task task : list) { + if (c1) { + sb.append(","); + } + else { + c1 = true; + } + sb.append(task.toString()); + sb.append(System.lineSeparator()); + } + sb.append("]"); + byte[] fb1 = String.valueOf(sb).getBytes(); + + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename="+ "task-bldg.json"); + response.setContentLength(fb1.length); + os.write(fb1); + os.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + /** * 400 Bad Request * diff --git a/src/main/java/osm/surveyor/task/city/TaskService.java b/src/main/java/osm/surveyor/task/city/TaskService.java index f308c0c..5cc9a1e 100644 --- a/src/main/java/osm/surveyor/task/city/TaskService.java +++ b/src/main/java/osm/surveyor/task/city/TaskService.java @@ -165,5 +165,4 @@ public List getTasks() { return repository.findAll(); } - } diff --git a/src/main/java/osm/surveyor/task/city/model/Task.java b/src/main/java/osm/surveyor/task/city/model/Task.java index 7b279b7..c5560b7 100644 --- a/src/main/java/osm/surveyor/task/city/model/Task.java +++ b/src/main/java/osm/surveyor/task/city/model/Task.java @@ -14,13 +14,16 @@ import org.springframework.format.annotation.NumberFormat; +import com.fasterxml.jackson.databind.JsonNode; + import lombok.Getter; import lombok.Setter; +import osm.surveyor.task.util.JsonTemple; @Getter @Setter @Entity -public class Task { +public class Task extends JsonTemple { @Id @Column(name = "current_id") @@ -78,4 +81,29 @@ */ @Temporal(TemporalType.TIMESTAMP) Date updateTime; + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + boolean c1 = false; + sb.append("{"); + c1 = outStr(c1, sb, "currentId", this.getCurrentId()); + c1 = outStr(c1, sb, "preId", this.getPreId()); + c1 = outStr(c1, sb, "citycode", this.getCitycode()); + c1 = outStr(c1, sb, "meshcode", this.getMeshcode()); + c1 = outStr(c1, sb, "status", this.getStatus().toString()); + c1 = outStr(c1, sb, "username", this.getUsername()); + c1 = outStr(c1, sb, "validator", this.getValidator()); + c1 = outStr(c1, sb, "changeSet", this.getChangeSet()); + c1 = outStr(c1, sb, "comment", this.getComment()); + c1 = outStr(c1, sb, "operation", this.getOperation().toString()); + c1 = outStr(c1, sb, "updateTime", this.getUpdateTime().toString()); + sb.append("}"); + return sb.toString(); + } + + @Override + public void parse(JsonNode node) { + // TODO + } } diff --git a/src/main/resources/templates/admin.html b/src/main/resources/templates/admin.html new file mode 100644 index 0000000..c24caab --- /dev/null +++ b/src/main/resources/templates/admin.html @@ -0,0 +1,56 @@ + + + + + + + + +
+
+ + +
+
+
+ + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+ +

+

+ + + +
+
+
+ +
+
+
+
+
+ + diff --git a/src/main/resources/templates/fragments/sidebar.html b/src/main/resources/templates/fragments/sidebar.html index 27dcd0b..5752b84 100644 --- a/src/main/resources/templates/fragments/sidebar.html +++ b/src/main/resources/templates/fragments/sidebar.html @@ -55,6 +55,12 @@ +