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

nablarch.integration.workflow.condition.NumberFlowProceedConditionSupport Maven / Gradle / Ivy

package nablarch.integration.workflow.condition;

import java.util.Map;

import nablarch.integration.workflow.definition.SequenceFlow;

/**
 * 数値比較を行うフロー進行条件判定クラスのサポートクラス。
 * 

* 本クラスで許容する値の範囲は、{@link Long#MIN_VALUE}から{@link Long#MAX_VALUE}までである。
*

* 比較対象のパラメータのオブジェクトが、数値型の場合には{@link Number#longValue()}を使用して、 * 強制的にlongに変換し比較を行う。
* 値が文字列型({@link String})の場合には、{@link Long#valueOf(String)}を使用して、 * longに変換し比較を行う。longへの変換に失敗した場合はfalseを返す。
* 上記に該当しない方の場合には、値は期待する値とは一致しないとし{@link FlowProceedCondition#isMatch(String, java.util.Map, SequenceFlow)}はfalseを返す。 * * @author hisaaki sioiri * @since 1.4.2 */ public abstract class NumberFlowProceedConditionSupport implements FlowProceedCondition { /** パラメーターのキー値 */ private final String paramKey; /** 期待する値 */ private final long expectedValue; /** * 数値比較を行うフロー進行条件判定を生成する。 * * @param paramKey 比較対象のパラメータを特定するためのキー値 * @param expectedValue 期待する値 */ protected NumberFlowProceedConditionSupport(String paramKey, String expectedValue) { this.paramKey = paramKey; this.expectedValue = toLong(expectedValue); } /** * {@inheritDoc} */ @Override public boolean isMatch(String instanceId, Map param, SequenceFlow sequenceFlow) { if (param == null) { return false; } Object value = param.get(paramKey); long paramValue; if (value instanceof Number) { paramValue = ((Number) value).longValue(); } else if (value instanceof String) { try { paramValue = toLong((String) value); } catch (NumberFormatException e) { return false; } } else { return false; } return doComparison(paramValue, expectedValue); } /** * 数値の比較を行う。 * * @param paramValue パラメーター値 * @param expectedValue 期待する値 * @return 比較結果 */ protected abstract boolean doComparison(long paramValue, long expectedValue); /** * 引数の文字列をlongに変換する。 *

* longへの変換に失敗した場合は、{@link java.lang.NumberFormatException}をそ送出する。 * * @param value 文字列 * @return 変換結果 */ private static long toLong(String value) { return Long.valueOf(value); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy