1 /* Copyright 2002-2025 CS GROUP 2 * Licensed to CS GROUP (CS) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * CS licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.orekit.files.ccsds.section; 18 19 import org.orekit.files.ccsds.utils.ContextBinding; 20 import org.orekit.files.ccsds.utils.lexical.ParseToken; 21 import org.orekit.files.ccsds.utils.lexical.TokenType; 22 23 24 /** Keys for {@link Metadata NDM Metadata} entries. 25 * @author Luc Maisonobe 26 * @since 11.0 27 */ 28 public enum MetadataKey { 29 30 /** Comment entry. */ 31 COMMENT((token, context, metadata) -> 32 token.getType() == TokenType.ENTRY ? metadata.addComment(token.getContentAsNormalizedString()) : true), 33 34 /** Time system entry. */ 35 TIME_SYSTEM((token, context, metadata) -> token.processAsTimeSystem(metadata::setTimeSystem)); 36 37 /** Processing method. */ 38 private final transient TokenProcessor processor; 39 40 /** Simple constructor. 41 * @param processor processing method 42 */ 43 MetadataKey(final TokenProcessor processor) { 44 this.processor = processor; 45 } 46 47 /** Process an token. 48 * @param token token to process 49 * @param context context binding 50 * @param metadata metadata to fill 51 * @return true of token was accepted 52 */ 53 public boolean process(final ParseToken token, final ContextBinding context, final Metadata metadata) { 54 return processor.process(token, context, metadata); 55 } 56 57 /** Interface for processing one token. */ 58 interface TokenProcessor { 59 /** Process one token. 60 * @param token token to process 61 * @param context context binding 62 * @param metadata metadata to fill 63 * @return true of token was accepted 64 */ 65 boolean process(ParseToken token, ContextBinding context, Metadata metadata); 66 } 67 68 }