diff options
Diffstat (limited to 'rdfloader/parser2v3/parse_review.go')
-rw-r--r-- | rdfloader/parser2v3/parse_review.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/rdfloader/parser2v3/parse_review.go b/rdfloader/parser2v3/parse_review.go new file mode 100644 index 0000000..c1c8b02 --- /dev/null +++ b/rdfloader/parser2v3/parse_review.go @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +package parser2v3 + +import ( + "fmt" + + gordfParser "github.com/spdx/gordf/rdfloader/parser" + "github.com/spdx/tools-golang/spdx/v2_3" +) + +func (parser *rdfParser2_3) setReviewFromNode(reviewedNode *gordfParser.Node) error { + review := v2_3.Review{} + for _, triple := range parser.nodeToTriples(reviewedNode) { + switch triple.Predicate.ID { + case RDF_TYPE: + // cardinality: exactly 1 + continue + case RDFS_COMMENT: + // cardinality: max 1 + review.ReviewComment = triple.Object.ID + case SPDX_REVIEW_DATE: + // cardinality: exactly 1 + review.ReviewDate = triple.Object.ID + case SPDX_REVIEWER: + // cardinality: max 1 + var err error + review.ReviewerType, review.Reviewer, err = ExtractSubs(triple.Object.ID, ":") + if err != nil { + return fmt.Errorf("error parsing reviewer: %v", err) + } + default: + return fmt.Errorf("unknown predicate %v for review triples", triple.Predicate) + } + } + parser.doc.Reviews = append(parser.doc.Reviews, &review) + return nil +} |