diff --git a/models/workflow/workflow.go b/models/workflow/workflow.go index d8cee9b..5467baa 100644 --- a/models/workflow/workflow.go +++ b/models/workflow/workflow.go @@ -139,7 +139,7 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A } }, } - graphVarName := map[string]*graph.GraphItem{} + graphVarName := map[string]graph.GraphItem{} scanner := bufio.NewScanner(plantUML) for scanner.Scan() { @@ -153,27 +153,29 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A if err != nil { return d, err } - graphVarName[varName] = graphItem + if graphItem != nil { + graphVarName[varName] = *graphItem + } continue - } else if strings.Contains(line, n+"-->") { + } else if strings.Contains(line, "-->") { err := d.extractLink(line, graphVarName, "-->", false) if err != nil { fmt.Println(err) continue } - } else if strings.Contains(line, n+"<--") { + } else if strings.Contains(line, "<--") { err := d.extractLink(line, graphVarName, "<--", true) if err != nil { fmt.Println(err) continue } - } else if strings.Contains(line, n+"--") { + } else if strings.Contains(line, "--") { err := d.extractLink(line, graphVarName, "--", false) if err != nil { fmt.Println(err) continue } - } else if strings.Contains(line, n+"-") { + } else if strings.Contains(line, "-") { err := d.extractLink(line, graphVarName, "-", false) if err != nil { fmt.Println(err) @@ -190,6 +192,7 @@ func (d *Workflow) ExtractFromPlantUML(plantUML multipart.File, request *tools.A d.generateResource(d.GetResources(tools.STORAGE_RESOURCE), request) d.generateResource(d.GetResources(tools.COMPUTE_RESOURCE), request) d.generateResource(d.GetResources(tools.WORKFLOW_RESOURCE), request) + d.Graph.Items = graphVarName return d, nil } @@ -204,17 +207,11 @@ func (d *Workflow) generateResource(datas []resources.ResourceInterface, request return nil } -func (d *Workflow) extractLink(line string, graphVarName map[string]*graph.GraphItem, pattern string, reverse bool) error { +func (d *Workflow) extractLink(line string, graphVarName map[string]graph.GraphItem, pattern string, reverse bool) error { splitted := strings.Split(line, pattern) if len(splitted) < 2 { return errors.New("links elements not found") } - if graphVarName[splitted[0]] != nil { - return errors.New("links elements not found -> " + strings.Trim(splitted[0], " ")) - } - if graphVarName[splitted[1]] != nil { - return errors.New("links elements not found -> " + strings.Trim(splitted[1], " ")) - } link := &graph.GraphLink{ Source: graph.Position{ ID: graphVarName[splitted[0]].ID,