001    /*
002     * Copyright (c) 2007-2014 Concurrent, Inc. All Rights Reserved.
003     *
004     * Project and contact information: http://www.cascading.org/
005     *
006     * This file is part of the Cascading project.
007     *
008     * Licensed under the Apache License, Version 2.0 (the "License");
009     * you may not use this file except in compliance with the License.
010     * You may obtain a copy of the License at
011     *
012     *     http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing, software
015     * distributed under the License is distributed on an "AS IS" BASIS,
016     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017     * See the License for the specific language governing permissions and
018     * limitations under the License.
019     */
020    
021    package cascading.operation.assertion;
022    
023    import java.beans.ConstructorProperties;
024    
025    /**
026     * Class AssertGroupSizeEquals is an {@link cascading.operation.GroupAssertion} that asserts the number of items in the current group
027     * is equal the given size.
028     * </p>
029     * If a patternString is given, only grouping keys that match the regular expression will have this assertion applied.
030     * Note multiple key values will be delimited by a tab character.
031     */
032    public class AssertGroupSizeEquals extends AssertGroupBase
033      {
034    
035      /**
036       * Constructor AssertGroupSizeEquals creates a new AssertGroupSizeEquals instance.
037       *
038       * @param size of type long
039       */
040      @ConstructorProperties({"size"})
041      public AssertGroupSizeEquals( long size )
042        {
043        super( "group size: %s, is not equal to: %s, in group %s: %s", size );
044        }
045    
046      /**
047       * Constructor AssertGroupSizeEquals creates a new AssertGroupSizeEquals instance.
048       *
049       * @param patternString of type String
050       * @param size          of type long
051       */
052      @ConstructorProperties({"patternString", "size"})
053      public AssertGroupSizeEquals( String patternString, long size )
054        {
055        super( "group matching '%s' with size: %s, is not equal to: %s, in group %s: %s", patternString, size );
056        }
057    
058      @Override
059      protected boolean assertFails( Long groupSize )
060        {
061        return groupSize != size;
062        }
063      }