Line data Source code
1 : // Copyright (C) 2021 The Android Open Source Project 2 : // 3 : // Licensed under the Apache License, Version 2.0 (the "License"); 4 : // you may not use this file except in compliance with the License. 5 : // You may obtain a copy of the License at 6 : // 7 : // http://www.apache.org/licenses/LICENSE-2.0 8 : // 9 : // Unless required by applicable law or agreed to in writing, software 10 : // distributed under the License is distributed on an "AS IS" BASIS, 11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 : // See the License for the specific language governing permissions and 13 : // limitations under the License. 14 : 15 : package com.google.gerrit.server.notedb; 16 : 17 : import com.google.errorprone.annotations.Immutable; 18 : import com.google.gerrit.entities.SubmitRequirementResult; 19 : import com.google.gerrit.entities.converter.ProtoConverter; 20 : import com.google.gerrit.server.cache.proto.Cache.SubmitRequirementResultProto; 21 : import com.google.gerrit.server.cache.serialize.ObjectIdConverter; 22 : import com.google.gerrit.server.cache.serialize.entities.SubmitRequirementExpressionResultSerializer; 23 : import com.google.gerrit.server.cache.serialize.entities.SubmitRequirementSerializer; 24 : import com.google.protobuf.Descriptors.FieldDescriptor; 25 : import com.google.protobuf.Parser; 26 : import java.util.Optional; 27 : 28 103 : @Immutable 29 : public enum SubmitRequirementProtoConverter 30 : implements ProtoConverter<SubmitRequirementResultProto, SubmitRequirementResult> { 31 103 : INSTANCE; 32 : 33 : private static final FieldDescriptor SR_APPLICABILITY_EXPR_RESULT_FIELD = 34 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(2); 35 : private static final FieldDescriptor SR_SUBMITTABILITY_EXPR_RESULT_FIELD = 36 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(3); 37 : private static final FieldDescriptor SR_OVERRIDE_EXPR_RESULT_FIELD = 38 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(4); 39 : private static final FieldDescriptor SR_LEGACY_FIELD = 40 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(6); 41 : private static final FieldDescriptor SR_FORCED_FIELD = 42 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(7); 43 103 : private static final FieldDescriptor SR_HIDDEN_FIELD = 44 103 : SubmitRequirementResultProto.getDescriptor().findFieldByNumber(8); 45 : 46 : @Override 47 : public SubmitRequirementResultProto toProto(SubmitRequirementResult r) { 48 3 : SubmitRequirementResultProto.Builder builder = SubmitRequirementResultProto.newBuilder(); 49 3 : builder 50 3 : .setSubmitRequirement(SubmitRequirementSerializer.serialize(r.submitRequirement())) 51 3 : .setCommit(ObjectIdConverter.create().toByteString(r.patchSetCommitId())); 52 3 : if (r.legacy().isPresent()) { 53 3 : builder.setLegacy(r.legacy().get()); 54 : } 55 3 : if (r.forced().isPresent()) { 56 1 : builder.setForced(r.forced().get()); 57 : } 58 3 : if (r.hidden().isPresent()) { 59 2 : builder.setHidden(r.hidden().get()); 60 : } 61 3 : if (r.applicabilityExpressionResult().isPresent()) { 62 2 : builder.setApplicabilityExpressionResult( 63 2 : SubmitRequirementExpressionResultSerializer.serialize( 64 2 : r.applicabilityExpressionResult().get())); 65 : } 66 3 : if (r.submittabilityExpressionResult().isPresent()) { 67 3 : builder.setSubmittabilityExpressionResult( 68 3 : SubmitRequirementExpressionResultSerializer.serialize( 69 3 : r.submittabilityExpressionResult().get())); 70 : } 71 3 : if (r.overrideExpressionResult().isPresent()) { 72 2 : builder.setOverrideExpressionResult( 73 2 : SubmitRequirementExpressionResultSerializer.serialize( 74 2 : r.overrideExpressionResult().get())); 75 : } 76 3 : return builder.build(); 77 : } 78 : 79 : @Override 80 : public SubmitRequirementResult fromProto(SubmitRequirementResultProto proto) { 81 : SubmitRequirementResult.Builder builder = 82 3 : SubmitRequirementResult.builder() 83 3 : .patchSetCommitId(ObjectIdConverter.create().fromByteString(proto.getCommit())) 84 3 : .submitRequirement( 85 3 : SubmitRequirementSerializer.deserialize(proto.getSubmitRequirement())); 86 3 : if (proto.hasField(SR_LEGACY_FIELD)) { 87 1 : builder.legacy(Optional.of(proto.getLegacy())); 88 : } 89 3 : if (proto.hasField(SR_FORCED_FIELD)) { 90 1 : builder.forced(Optional.of(proto.getForced())); 91 : } 92 3 : if (proto.hasField(SR_HIDDEN_FIELD)) { 93 2 : builder.hidden(Optional.of(proto.getHidden())); 94 : } 95 3 : if (proto.hasField(SR_APPLICABILITY_EXPR_RESULT_FIELD)) { 96 2 : builder.applicabilityExpressionResult( 97 2 : Optional.of( 98 2 : SubmitRequirementExpressionResultSerializer.deserialize( 99 2 : proto.getApplicabilityExpressionResult()))); 100 : } 101 3 : if (proto.hasField(SR_SUBMITTABILITY_EXPR_RESULT_FIELD)) { 102 3 : builder.submittabilityExpressionResult( 103 3 : SubmitRequirementExpressionResultSerializer.deserialize( 104 3 : proto.getSubmittabilityExpressionResult())); 105 : } 106 3 : if (proto.hasField(SR_OVERRIDE_EXPR_RESULT_FIELD)) { 107 2 : builder.overrideExpressionResult( 108 2 : Optional.of( 109 2 : SubmitRequirementExpressionResultSerializer.deserialize( 110 2 : proto.getOverrideExpressionResult()))); 111 : } 112 3 : return builder.build(); 113 : } 114 : 115 : @Override 116 : public Parser<SubmitRequirementResultProto> getParser() { 117 2 : return SubmitRequirementResultProto.parser(); 118 : } 119 : }