package com.epam.wilma.domain.stubconfig.sequence;
/*==========================================================================
Copyright 2013-2017 EPAM Systems
This file is part of Wilma.
Wilma is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Wilma is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wilma. If not, see <http://www.gnu.org/licenses/>.
===========================================================================*/
import java.util.Map;
import com.epam.wilma.domain.http.WilmaHttpRequest;
import com.epam.wilma.domain.sequence.WilmaSequence;
import com.epam.wilma.domain.stubconfig.parameter.ParameterList;
/**
* Handle a group of sequences based on a given logic. A group means those sequence objects which comes from the same sequence type.
* @author Tibor_Kovacs
*
*/
public interface SequenceHandler {
/**
* This method tries to find a {@link WilmaSequence} which belongs to the given request. If the request doesn't belong to any sequence, it will return with null.
* @param request will be handled
* @param store contains the collection of existing sequences.
* @param parameters the parameter list the sequence handler needs
* @return with the key of searched sequence. It could be null!
*/
String getExistingSequence(final WilmaHttpRequest request, final Map<String, WilmaSequence> store, final ParameterList parameters);
/**
* Create a new key which is unique in a type of sequences.
* @param request will be handled
* @param parameters the parameter list the sequence handler needs
* @return with a new key.
*/
String generateNewSequenceKey(final WilmaHttpRequest request, final ParameterList parameters);
}