diff --git a/pom.xml b/pom.xml
index 654f71d..a794d14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,30 +1,33 @@
-
-
+
+
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
-
+
com.yame
uml
0.0.1-SNAPSHOT
- demo
- Demo project for Spring Boot
+ umlserver
+ Demo umlserver project for Spring Boot
1.8
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
net.sourceforge.plantuml
plantuml
1.2020.0
-
+
org.springframework.boot
@@ -55,7 +58,6 @@
-
@@ -67,4 +69,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/com/yame/uml/Application.java b/src/main/java/com/yame/uml/Application.java
index ef31fa2..35b7385 100644
--- a/src/main/java/com/yame/uml/Application.java
+++ b/src/main/java/com/yame/uml/Application.java
@@ -2,7 +2,6 @@ package com.yame.uml;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScans;
@SpringBootApplication
public class Application {
diff --git a/src/main/java/com/yame/uml/control/api.java b/src/main/java/com/yame/uml/control/api.java
index 087284a..ca04103 100644
--- a/src/main/java/com/yame/uml/control/api.java
+++ b/src/main/java/com/yame/uml/control/api.java
@@ -1,41 +1,29 @@
package com.yame.uml.control;
import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.ObjectOutputStream;
import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-
import com.yame.uml.model.Result;
import com.yame.uml.model.ResultType;
-import net.sourceforge.plantuml.BlockUml;
-import net.sourceforge.plantuml.FileFormat;
-import net.sourceforge.plantuml.FileFormatOption;
-import net.sourceforge.plantuml.LineLocation;
-import net.sourceforge.plantuml.SourceStringReader;
-import net.sourceforge.plantuml.api.PlantumlUtils;
-import net.sourceforge.plantuml.code.Transcoder;
-import net.sourceforge.plantuml.code.TranscoderUtil;
-import net.sourceforge.plantuml.core.*;
-
-import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import lombok.extern.slf4j.Slf4j;
+import net.sourceforge.plantuml.BlockUml;
+import net.sourceforge.plantuml.FileFormat;
+import net.sourceforge.plantuml.FileFormatOption;
+import net.sourceforge.plantuml.SourceStringReader;
+import net.sourceforge.plantuml.core.Diagram;
+import net.sourceforge.plantuml.error.PSystemError;
+
@RestController
@RequestMapping("/api")
+@Slf4j
public class api {
static public String getUmlSource(String source) {
@@ -57,7 +45,25 @@ public class api {
}
@PostMapping("/v1/megreflow")
- public Result megreSVG(@RequestParam("data") String data) throws IOException {
+ public Result megreSVG(@RequestParam("src") String src, @RequestParam("dst") String dst) throws IOException {
+ String source = getUmlSource(src);
+ List srcblocks = new SourceStringReader(source).getBlocks();
+
+ String destination = getUmlSource(dst);
+ List dstblocks = new SourceStringReader(destination).getBlocks();
+
+ Result result = new Result();
+
+ if(srcblocks.size() != 0 && dstblocks.size() != 0) {
+
+
+ }
+ result.setType(ResultType.ErrorMegreUML2SVG);
+ return result;
+ }
+
+ @PostMapping("/v1/uml2svg")
+ public Result uml2SVG(@RequestParam("data") String data) throws IOException {
String source = getUmlSource(data);
List blocks = new SourceStringReader(source).getBlocks();
// FileOutputStream os = new FileOutputStream(new File("./t.svg"));
@@ -66,15 +72,26 @@ public class api {
Result result = new Result();
if(blocks.size() != 0) {
for(BlockUml block: blocks) {
+ Diagram diagram = block.getDiagram();
+ if (diagram instanceof PSystemError) {
+ result.setType(ResultType.ErrorSource2SVG);
+ int errorLine = ((PSystemError) diagram).getLineLocation().getPosition();
+ result.setMsg("error line: " + errorLine);
+ } else {
+ result.setType(ResultType.Source2SVG);
+ }
+
OutputStream os = new ByteArrayOutputStream();
- block.getDiagram().exportDiagram(os, 0, new FileFormatOption(FileFormat.SVG));
- result.setType(ResultType.Source2SVG);
+ diagram.exportDiagram(os, 0, new FileFormatOption(FileFormat.SVG));
result.getContent().add(os.toString());
return result;
}
}
+
+
result.setType(ResultType.ErrorSource2SVG);
+ log.debug( ResultType.ErrorSource2SVG + data);
return result;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/yame/uml/model/Result.java b/src/main/java/com/yame/uml/model/Result.java
index a5bc4e0..49e8eed 100644
--- a/src/main/java/com/yame/uml/model/Result.java
+++ b/src/main/java/com/yame/uml/model/Result.java
@@ -1,18 +1,18 @@
package com.yame.uml.model;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
import java.util.ArrayList;
import java.util.List;
/**
* result
*/
+
public class Result {
- public ResultType type;
- public List content;
-
+
+ private ResultType type;
+ private String msg;
+ private List content;
public Result() {
content = new ArrayList();
@@ -22,6 +22,14 @@ public class Result {
return content;
}
+ public void addContent(String content) {
+ this.content.add(content);
+ }
+
+ public void delContent(int idx) {
+ this.content.remove(idx);
+ }
+
public ResultType getType() {
return type;
}
@@ -29,4 +37,12 @@ public class Result {
public void setType(ResultType type) {
this.type = type;
}
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/yame/uml/model/ResultType.java b/src/main/java/com/yame/uml/model/ResultType.java
index 5342f9a..d9f026e 100644
--- a/src/main/java/com/yame/uml/model/ResultType.java
+++ b/src/main/java/com/yame/uml/model/ResultType.java
@@ -1,29 +1,36 @@
package com.yame.uml.model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonFormat.Shape;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+
+@JsonFormat(shape = Shape.OBJECT)
public enum ResultType {
- Success("Success", 1),
- Source2PNG("Source2PNG", 101),
- Source2SVG("Source2SVG", 102),
+ Success("Success", 1, true),
+ Source2PNG("Source2PNG", 101, true),
+ Source2SVG("Source2SVG", 102, true),
+
+ MegreUML2SVG("megreUML2SVG", 202, true),
- Error("Error", 0),
- ErrorSource2PNG("Error Source2PNG: source format is erorr", -101),
- ErrorSource2SVG("Error Source2SVG: source format is erorr", -102),
+ Error("Error", 0, false),
+ ErrorSource2PNG("Error Source2PNG", -101, false),
+ ErrorSource2SVG("Error Source2SVG", -102, false),
+
+ ErrorMegreUML2SVG("Error MegreUML2SVG", -202, false),
;
- private String status;
+ @JsonProperty("desc")
+ private String desc;
+ @JsonProperty("code")
private int code;
+ @JsonProperty("success")
+ private boolean success;
- private ResultType(String status, int code) {
- this.status = status;
+ private ResultType(String desc, int code, Boolean isSuccessed) {
+ this.desc = desc;
this.code = code;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
+ this.success = isSuccessed;
}
public int getCode() {
@@ -33,4 +40,20 @@ public enum ResultType {
public void setCode(int code) {
this.code = code;
}
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
}
\ No newline at end of file