|
@@ -20,6 +20,7 @@
|
|
|
package edp.davinci.controller;
|
|
|
|
|
|
import com.alibaba.druid.util.StringUtils;
|
|
|
+import edp.core.annotation.AuthIgnore;
|
|
|
import edp.core.annotation.CurrentUser;
|
|
|
import edp.core.model.DBTables;
|
|
|
import edp.core.model.TableInfo;
|
|
@@ -45,13 +46,15 @@ import springfox.documentation.annotations.ApiIgnore;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.validation.Valid;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Api(value = "/sources", tags = "sources", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
@ApiResponses(@ApiResponse(code = 404, message = "sources not found"))
|
|
|
@RestController
|
|
|
@RequestMapping(value = Constants.BASE_API_PATH + "/sources", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
-public class SourceController extends BaseController {
|
|
|
+public class SourceController extends BaseController
|
|
|
+{
|
|
|
|
|
|
@Autowired
|
|
|
private SourceService sourceService;
|
|
@@ -69,8 +72,10 @@ public class SourceController extends BaseController {
|
|
|
@GetMapping
|
|
|
public ResponseEntity getSources(@RequestParam Long projectId,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(projectId)) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+ if (invalidId(projectId))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid project id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -89,15 +94,103 @@ public class SourceController extends BaseController {
|
|
|
@ApiOperation(value = "get tree sources")
|
|
|
@GetMapping(value = "/treeSources")
|
|
|
public ResponseEntity getTreeSources(@RequestParam Long projectId,
|
|
|
- @ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(projectId)) {
|
|
|
- ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid project id");
|
|
|
- return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
- }
|
|
|
+ @ApiIgnore @CurrentUser User user,
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+// if (invalidId(projectId))
|
|
|
+// {
|
|
|
+// ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid project id");
|
|
|
+// return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
+// }
|
|
|
List<Source> sources = sourceService.getSources(projectId, user);
|
|
|
+ List<SourceTreeInfo> sourceTreeInfos = new ArrayList<SourceTreeInfo>();
|
|
|
+ List<Source> rootNodes = getRootNodes(sources);
|
|
|
+ for (Source rootNode : rootNodes)
|
|
|
+ {
|
|
|
+ SourceTreeInfo sourceTreeInfo = new SourceTreeInfo();
|
|
|
+ BeanUtils.copyProperties(rootNode, sourceTreeInfo);
|
|
|
+ buildChildNodes(sourceTreeInfo, rootNode, sources);
|
|
|
+ sourceTreeInfos.add(sourceTreeInfo);
|
|
|
+ }
|
|
|
+ return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(sourceTreeInfos));
|
|
|
+ }
|
|
|
|
|
|
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(sources));
|
|
|
+ /**
|
|
|
+ * 递归子节点
|
|
|
+ *
|
|
|
+ * @param node
|
|
|
+ */
|
|
|
+ public void buildChildNodes(SourceTreeInfo sourceTreeInfo, Source node, List<Source> treeNodesList)
|
|
|
+ {
|
|
|
+ List<Source> children = getChildNodes(node, treeNodesList);
|
|
|
+ if (!children.isEmpty())
|
|
|
+ {
|
|
|
+ for (Source child : children)
|
|
|
+ {
|
|
|
+ buildChildNodes(sourceTreeInfo, child, treeNodesList);
|
|
|
+ }
|
|
|
+ sourceTreeInfo.setNodes(children);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取父节点下所有的子节点
|
|
|
+ *
|
|
|
+ * @param nodes
|
|
|
+ * @param pnode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List getChildNodes(Source pnode, List<Source> treeNodesList)
|
|
|
+ {
|
|
|
+ List childNodes = new ArrayList();
|
|
|
+ for (Source n : treeNodesList)
|
|
|
+ {
|
|
|
+ if (pnode.getId().equals(n.getPId()))
|
|
|
+ {
|
|
|
+ childNodes.add(n);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return childNodes;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否为根节点
|
|
|
+ *
|
|
|
+ * @param nodes
|
|
|
+ * @param inNode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean rootNode(Source node, List<Source> treeNodesList)
|
|
|
+ {
|
|
|
+ boolean isRootNode = true;
|
|
|
+ for (Source n : treeNodesList)
|
|
|
+ {
|
|
|
+ if (null!= node.getPId() && node.getPId().equals(n.getId()))
|
|
|
+ {
|
|
|
+ isRootNode = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return isRootNode;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取集合中所有的根节点
|
|
|
+ *
|
|
|
+ * @param nodes
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List getRootNodes(List<Source> treeNodesList)
|
|
|
+ {
|
|
|
+ List rootNodes = new ArrayList();
|
|
|
+ for (Source n : treeNodesList)
|
|
|
+ {
|
|
|
+ if (rootNode(n, treeNodesList))
|
|
|
+ {
|
|
|
+ rootNodes.add(n);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rootNodes;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -113,8 +206,10 @@ public class SourceController extends BaseController {
|
|
|
@GetMapping("/{id}")
|
|
|
public ResponseEntity getSourceDetail(@PathVariable Long id,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(id)) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid project id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -137,9 +232,11 @@ public class SourceController extends BaseController {
|
|
|
public ResponseEntity createSource(@Valid @RequestBody SourceCreate source,
|
|
|
@ApiIgnore BindingResult bindingResult,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
- if (bindingResult.hasErrors()) {
|
|
|
+ if (bindingResult.hasErrors())
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -165,15 +262,18 @@ public class SourceController extends BaseController {
|
|
|
@Valid @RequestBody SourceInfo source,
|
|
|
@ApiIgnore BindingResult bindingResult,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
|
|
|
- if (bindingResult.hasErrors()) {
|
|
|
+ if (bindingResult.hasErrors())
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
|
|
|
|
- if (invalidId(id) || !id.equals(source.getId())) {
|
|
|
+ if (invalidId(id) || !id.equals(source.getId()))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -194,9 +294,11 @@ public class SourceController extends BaseController {
|
|
|
@DeleteMapping("/{id}")
|
|
|
public ResponseEntity deleteSource(@PathVariable Long id,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
- if (invalidId(id)) {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -220,9 +322,11 @@ public class SourceController extends BaseController {
|
|
|
public ResponseEntity testSource(@Valid @RequestBody SourceTest sourceTest,
|
|
|
@ApiIgnore BindingResult bindingResult,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
- if (bindingResult.hasErrors()) {
|
|
|
+ if (bindingResult.hasErrors())
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -245,7 +349,8 @@ public class SourceController extends BaseController {
|
|
|
public ResponseEntity reconnect(@PathVariable Long id,
|
|
|
@RequestBody DbBaseInfo dbBaseInfo,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
sourceService.reconnect(id, dbBaseInfo, user);
|
|
|
return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request));
|
|
|
}
|
|
@@ -267,14 +372,17 @@ public class SourceController extends BaseController {
|
|
|
@Valid @RequestBody UploadMeta uploadMeta,
|
|
|
@ApiIgnore BindingResult bindingResult,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
- if (invalidId(id)) {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
|
|
|
|
- if (bindingResult.hasErrors()) {
|
|
|
+ if (bindingResult.hasErrors())
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -302,19 +410,23 @@ public class SourceController extends BaseController {
|
|
|
@ApiIgnore BindingResult bindingResult,
|
|
|
@RequestParam("file") MultipartFile file,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
|
|
|
- if (invalidId(id)) {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
|
|
|
|
- if (bindingResult.hasErrors()) {
|
|
|
+ if (bindingResult.hasErrors())
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
|
|
|
|
- if (file.isEmpty() || StringUtils.isEmpty(file.getOriginalFilename())) {
|
|
|
+ if (file.isEmpty() || StringUtils.isEmpty(file.getOriginalFilename()))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Upload file can not be empty");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -336,8 +448,10 @@ public class SourceController extends BaseController {
|
|
|
@GetMapping("/{id}/databases")
|
|
|
public ResponseEntity getSourceDbs(@PathVariable Long id,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(id)) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -360,8 +474,10 @@ public class SourceController extends BaseController {
|
|
|
public ResponseEntity getSourceTables(@PathVariable Long id,
|
|
|
@RequestParam(name = "dbName") String dbName,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(id)) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -388,13 +504,16 @@ public class SourceController extends BaseController {
|
|
|
@RequestParam(name = "dbName") String dbName,
|
|
|
@RequestParam(name = "tableName") String tableName,
|
|
|
@ApiIgnore @CurrentUser User user,
|
|
|
- HttpServletRequest request) {
|
|
|
- if (invalidId(id)) {
|
|
|
+ HttpServletRequest request)
|
|
|
+ {
|
|
|
+ if (invalidId(id))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Invalid source id");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
|
|
|
|
- if (StringUtils.isEmpty(tableName)) {
|
|
|
+ if (StringUtils.isEmpty(tableName))
|
|
|
+ {
|
|
|
ResultMap resultMap = new ResultMap(tokenUtils).failAndRefreshToken(request).message("Table cannot be empty");
|
|
|
return ResponseEntity.status(resultMap.getCode()).body(resultMap);
|
|
|
}
|
|
@@ -419,7 +538,8 @@ public class SourceController extends BaseController {
|
|
|
*/
|
|
|
@ApiOperation(value = "get jdbc datasources")
|
|
|
@GetMapping("/jdbc/datasources")
|
|
|
- public ResponseEntity getJdbcDataSources(@ApiIgnore @CurrentUser User user, HttpServletRequest request) {
|
|
|
+ public ResponseEntity getJdbcDataSources(@ApiIgnore @CurrentUser User user, HttpServletRequest request)
|
|
|
+ {
|
|
|
List<DatasourceType> list = sourceService.getDatasources();
|
|
|
return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(list));
|
|
|
}
|