All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.exactpro.sf.common.impl.messages.xml.converter.XmlDictionaryUtils Maven / Gradle / Ivy

There is a newer version: 3.4.260
Show newest version
/*******************************************************************************
 * Copyright 2009-2019 Exactpro (Exactpro Systems Limited)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.exactpro.sf.common.impl.messages.xml.converter;

import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.exactpro.sf.common.impl.messages.xml.configuration.Dictionary;
import com.exactpro.sf.common.impl.messages.xml.configuration.Field;
import com.exactpro.sf.common.impl.messages.xml.configuration.Message;
import com.exactpro.sf.common.messages.structures.IFieldStructure;

public class XmlDictionaryUtils {

	public static Field getDictionaryField(Dictionary dictionary, String name){
		for(Field field : dictionary.getFields().getFields()){
			if(field.getName().equals(name)){
				return field;
			}
		}
		return null;
	}

    public static List> getGroupFieldsName(IFieldStructure fieldStructure){
        List> fieldsName = new ArrayList>();
        Map fields = fieldStructure.getFields();
        fields.forEach((name, field) -> {
            if(field.isComplex()) {
                Map groupFieldsName = new HashMap();
                groupFieldsName.put(name, getGroupFieldsName(field));
                fieldsName.add(groupFieldsName);
            } else if (field.getReferenceName() != null) {
                Map groupFieldsName = new HashMap();
                groupFieldsName.put(field.getReferenceName(), null);
                fieldsName.add(groupFieldsName);
            }
        });
        return fieldsName;
    }

    protected static List> getGroupFieldsName(Message field){
        if(field == null){
            return null;
        }
        List> groupFieldsName = new ArrayList>();
        Message subField = (Message)field.getReference();
        if(subField == null){
            for(Field fieldName: field.getFieldsAndMessages()){
                SimpleEntry fieldMap = new HashMap.SimpleEntry(fieldName.getName(), null);
                groupFieldsName.add(fieldMap);
            }
        } else {
            SimpleEntry fieldMap = new HashMap.SimpleEntry(subField.getName(), getGroupFieldsName(subField));
            groupFieldsName.add(fieldMap);
        }
        return groupFieldsName;
    }
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy