/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.api;
import java.util.Set;
/**
* Контекст квитанции для подготвки ответа на заявку.
* Содержит методы работы с переменными процесса исполнения маршрута.
*/
public interface ReceiptContext {
/**
* Получить названия переменных, начинающихся на "result_". Вложения пропускаются.
*
* @return названия переменных без префикса "result_"
*/
Set<String> getPropertyNames();
/**
* Получить названия переменных без фильтрации по началу имени. Вложения пропускаются.
*
* @return названия переменных
*/
Set<String> getAllPropertyNames();
/**
* Получить названия вложений, начинающихся на "result_".
*
* @return названия вложений без префикса "result_".
*/
Set<String> getEnclosureNames();
/**
* Получить названия всех вложений, без фильтрации по началу имени
*
* @return названия вложений
*/
Set<String> getAllEnclosureNames();
/**
* Получить значение переменной "result_{@code name}".
*
* @return значение переменной либо null.
*/
Object getVariable(String name);
/**
* Получить значение переменной {@code name}".
*
* @return значение переменной либо null.
*/
Object getVariableByFullName(String name);
/**
* Получить вложение с именем "result_{@code name}".
*
* @return вложение либо null.
*/
Enclosure getEnclosure(String name);
/**
* Получить вложение с именем "{@code name}".
*
* @return вложение либо null.
*/
Enclosure getEnclosureByFullName(String name);
/**
* Установить в процесс исполнения маршрута переменную {@code name}
* со значением указывающим на вложение, созданное по содержимому {@code enclosure}.
*
* @param name название переменной.
* @param enclosure вложение.
*/
void setEnclosure(String name, Enclosure enclosure);
/**
* Установить в процесс исполнения маршрута перменную {@code name}
* с заданным значением {@code value}.
*
* @param name название переменной
* @param value значение переменной
*/
void setVariable(String name, Object value);
/**
* Идентификатор заявления, назначенный данному контексту исполнения.
*
* @return идентификатор заявления.
* @since 1.0.8
*/
String getBid();
}