/* * Copyright 2014 the original author or authors. * * 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 org.springframework.data.redis.core; import org.springframework.util.StringUtils; /** * Options to be used for with {@literal SCAN} command. * * @author Christoph Strobl * @author Thomas Darimont * @since 1.4 */ public class ScanOptions { public static ScanOptions NONE = new ScanOptions(); private Long count; private String pattern; private ScanOptions() {} /** * Static factory method that returns a new {@link ScanOptionsBuilder}. * * @return */ public static ScanOptionsBuilder scanOptions() { return new ScanOptionsBuilder(); } public Long getCount() { return count; } public String getPattern() { return pattern; } public String toOptionString() { if (this.equals(ScanOptions.NONE)) { return ""; } String params = ""; if (this.count != null) { params += (", 'count', " + count); } if (StringUtils.hasText(this.pattern)) { params += (", 'match' , '" + this.pattern + "'"); } return params; } /** * @author Christoph Strobl * @since 1.4 */ public static class ScanOptionsBuilder { ScanOptions options; public ScanOptionsBuilder() { options = new ScanOptions(); } /** * Returns the current {@link ScanOptionsBuilder} configured with the given {@code count}. * * @param count * @return */ public ScanOptionsBuilder count(long count) { options.count = count; return this; } /** * Returns the current {@link ScanOptionsBuilder} configured with the given {@code pattern}. * * @param pattern * @return */ public ScanOptionsBuilder match(String pattern) { options.pattern = pattern; return this; } public ScanOptions build() { return options; } } }