xref: /aosp_15_r20/external/spdx-tools/tvloader/parser2v1/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 parser2v1
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"fmt"
7*ba677afaSXin Li
8*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
9*ba677afaSXin Li)
10*ba677afaSXin Li
11*ba677afaSXin Lifunc (parser *tvParser2_1) parsePairFromReview2_1(tag string, value string) error {
12*ba677afaSXin Li	switch tag {
13*ba677afaSXin Li	// tag for creating new review section
14*ba677afaSXin Li	case "Reviewer":
15*ba677afaSXin Li		parser.rev = &v2_1.Review{}
16*ba677afaSXin Li		parser.doc.Reviews = append(parser.doc.Reviews, parser.rev)
17*ba677afaSXin Li		subkey, subvalue, err := extractSubs(value)
18*ba677afaSXin Li		if err != nil {
19*ba677afaSXin Li			return err
20*ba677afaSXin Li		}
21*ba677afaSXin Li		switch subkey {
22*ba677afaSXin Li		case "Person":
23*ba677afaSXin Li			parser.rev.Reviewer = subvalue
24*ba677afaSXin Li			parser.rev.ReviewerType = "Person"
25*ba677afaSXin Li		case "Organization":
26*ba677afaSXin Li			parser.rev.Reviewer = subvalue
27*ba677afaSXin Li			parser.rev.ReviewerType = "Organization"
28*ba677afaSXin Li		case "Tool":
29*ba677afaSXin Li			parser.rev.Reviewer = subvalue
30*ba677afaSXin Li			parser.rev.ReviewerType = "Tool"
31*ba677afaSXin Li		default:
32*ba677afaSXin Li			return fmt.Errorf("unrecognized Reviewer type %v", subkey)
33*ba677afaSXin Li		}
34*ba677afaSXin Li	case "ReviewDate":
35*ba677afaSXin Li		parser.rev.ReviewDate = value
36*ba677afaSXin Li	case "ReviewComment":
37*ba677afaSXin Li		parser.rev.ReviewComment = value
38*ba677afaSXin Li	// for relationship tags, pass along but don't change state
39*ba677afaSXin Li	case "Relationship":
40*ba677afaSXin Li		parser.rln = &v2_1.Relationship{}
41*ba677afaSXin Li		parser.doc.Relationships = append(parser.doc.Relationships, parser.rln)
42*ba677afaSXin Li		return parser.parsePairForRelationship2_1(tag, value)
43*ba677afaSXin Li	case "RelationshipComment":
44*ba677afaSXin Li		return parser.parsePairForRelationship2_1(tag, value)
45*ba677afaSXin Li	// for annotation tags, pass along but don't change state
46*ba677afaSXin Li	case "Annotator":
47*ba677afaSXin Li		parser.ann = &v2_1.Annotation{}
48*ba677afaSXin Li		parser.doc.Annotations = append(parser.doc.Annotations, parser.ann)
49*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
50*ba677afaSXin Li	case "AnnotationDate":
51*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
52*ba677afaSXin Li	case "AnnotationType":
53*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
54*ba677afaSXin Li	case "SPDXREF":
55*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
56*ba677afaSXin Li	case "AnnotationComment":
57*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
58*ba677afaSXin Li	default:
59*ba677afaSXin Li		return fmt.Errorf("received unknown tag %v in Review section", tag)
60*ba677afaSXin Li	}
61*ba677afaSXin Li
62*ba677afaSXin Li	return nil
63*ba677afaSXin Li}
64