/* NumberParameterSpec.java Copyright (c) 2016 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.profile.spec; /** * Number型リクエストパラメータの仕様. * * @author NTT DOCOMO, INC. */ public class NumberParameterSpec extends DConnectParameterSpec<NumberDataSpec> { /** * コンストラクタ. * * @param format データのフォーマット指定 */ NumberParameterSpec(final DataFormat format) { super(new NumberDataSpec(format)); } /** * データのフォーマット指定を取得する. * @return データのフォーマット指定 */ public DataFormat getFormat() { return mDataSpec.getFormat(); } /** * 最大値を取得する. * @return 最大値 */ public Double getMaximum() { return mDataSpec.getMaximum(); } /** * 最大値を設定する. * @param maximum 最大値 */ void setMaximum(final Double maximum) { mDataSpec.setMaximum(maximum); } /** * 最小値を取得する. * @return 最小値 */ public Double getMinimum() { return mDataSpec.getMinimum(); } /** * 最小値を設定する. * @param minimum 最小値 */ void setMinimum(final Double minimum) { mDataSpec.setMinimum(minimum); } /** * 最大値自体を指定可能かどうかのフラグを取得する. * @return 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> */ public boolean isExclusiveMaximum() { return mDataSpec.isExclusiveMaximum(); } /** * 最大値自体を指定可能かどうかのフラグを設定する. * @param exclusiveMaximum 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> */ void setExclusiveMaximum(final boolean exclusiveMaximum) { mDataSpec.setExclusiveMaximum(exclusiveMaximum); } /** * 最小値自体を指定可能かどうかのフラグを取得する * @return 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> */ public boolean isExclusiveMinimum() { return mDataSpec.isExclusiveMinimum(); } /** * 最小値自体を指定可能かどうかのフラグを設定する. * @param exclusiveMinimum 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> */ void setExclusiveMinimum(final boolean exclusiveMinimum) { mDataSpec.setExclusiveMinimum(exclusiveMinimum); } /** * {@link NumberParameterSpec}のビルダー. * * @author NTT DOCOMO, INC. */ public static class Builder extends BaseBuilder<Builder> { private DataFormat mFormat; private Double mMaximum; private Double mMinimum; private Boolean mExclusiveMaximum; private Boolean mExclusiveMinimum; /** * データのフォーマット指定を設定する. * @param format データのフォーマット指定 * @return ビルダー自身のインスタンス */ public Builder setFormat(final DataFormat format) { mFormat = format; return this; } /** * 最大値を設定する. * @param maximum 最大値 * @return ビルダー自身のインスタンス */ public Builder setMaximum(final Double maximum) { mMaximum = maximum; return this; } /** * 最小値を設定する. * @param minimum 最小値 * @return ビルダー自身のインスタンス */ public Builder setMinimum(final Double minimum) { mMinimum = minimum; return this; } /** * 最大値自体を指定可能かどうかのフラグを設定する. * @param exclusiveMaximum 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> * @return ビルダー自身のインスタンス */ public Builder setExclusiveMaximum(final Boolean exclusiveMaximum) { mExclusiveMaximum = exclusiveMaximum; return this; } /** * 最小値自体を指定可能かどうかのフラグを設定する. * @param exclusiveMinimum 指定できない場合は<code>true</code>. それ以外の場合は<code>false</code> * @return ビルダー自身のインスタンス */ public Builder setExclusiveMinimum(final Boolean exclusiveMinimum) { mExclusiveMinimum = exclusiveMinimum; return this; } /** * {@link NumberParameterSpec}のインスタンスを生成する. * @return {@link NumberParameterSpec}のインスタンス */ public NumberParameterSpec build() { if (mFormat == null) { mFormat = DataFormat.FLOAT; } NumberParameterSpec spec = new NumberParameterSpec(mFormat); spec.setName(mName); spec.setRequired(mIsRequired); spec.setMaximum(mMaximum); spec.setExclusiveMaximum(mExclusiveMaximum); spec.setMinimum(mMinimum); spec.setExclusiveMinimum(mExclusiveMinimum); return spec; } @Override protected Builder getThis() { return this; } } }