xref: /aosp_15_r20/external/spdx-tools/rdfloader/parser2v3/parse_review.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2*ba677afaSXin Li
3*ba677afaSXin Lipackage parser2v3
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"fmt"
7*ba677afaSXin Li
8*ba677afaSXin Li	gordfParser "github.com/spdx/gordf/rdfloader/parser"
9*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_3"
10*ba677afaSXin Li)
11*ba677afaSXin Li
12*ba677afaSXin Lifunc (parser *rdfParser2_3) setReviewFromNode(reviewedNode *gordfParser.Node) error {
13*ba677afaSXin Li	review := v2_3.Review{}
14*ba677afaSXin Li	for _, triple := range parser.nodeToTriples(reviewedNode) {
15*ba677afaSXin Li		switch triple.Predicate.ID {
16*ba677afaSXin Li		case RDF_TYPE:
17*ba677afaSXin Li			// cardinality: exactly 1
18*ba677afaSXin Li			continue
19*ba677afaSXin Li		case RDFS_COMMENT:
20*ba677afaSXin Li			// cardinality: max 1
21*ba677afaSXin Li			review.ReviewComment = triple.Object.ID
22*ba677afaSXin Li		case SPDX_REVIEW_DATE:
23*ba677afaSXin Li			// cardinality: exactly 1
24*ba677afaSXin Li			review.ReviewDate = triple.Object.ID
25*ba677afaSXin Li		case SPDX_REVIEWER:
26*ba677afaSXin Li			// cardinality: max 1
27*ba677afaSXin Li			var err error
28*ba677afaSXin Li			review.ReviewerType, review.Reviewer, err = ExtractSubs(triple.Object.ID, ":")
29*ba677afaSXin Li			if err != nil {
30*ba677afaSXin Li				return fmt.Errorf("error parsing reviewer: %v", err)
31*ba677afaSXin Li			}
32*ba677afaSXin Li		default:
33*ba677afaSXin Li			return fmt.Errorf("unknown predicate %v for review triples", triple.Predicate)
34*ba677afaSXin Li		}
35*ba677afaSXin Li	}
36*ba677afaSXin Li	parser.doc.Reviews = append(parser.doc.Reviews, &review)
37*ba677afaSXin Li	return nil
38*ba677afaSXin Li}
39