View Javadoc

1   /*
2    * $Id: IteratorStatus.java 471756 2006-11-06 15:01:43Z husted $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  package org.apache.struts2.views.jsp;
22  
23  
24  /***
25   * The iterator tag can export an IteratorStatus object so that
26   * one can get information about the status of the iteration, such as
27   * the size, current index, and whether any more items are available.
28   *
29   */
30  public class IteratorStatus {
31      protected StatusState state;
32  
33      public IteratorStatus(StatusState aState) {
34          state = aState;
35      }
36  
37      public int getCount() {
38          return state.index + 1;
39      }
40  
41      public boolean isEven() {
42          return ((state.index + 1) % 2) == 0;
43      }
44  
45      public boolean isFirst() {
46          return state.index == 0;
47      }
48  
49      public int getIndex() {
50          return state.index;
51      }
52  
53      public boolean isLast() {
54          return state.last;
55      }
56  
57      public boolean isOdd() {
58          return ((state.index + 1) % 2) == 1;
59      }
60  
61      public int modulus(int operand) {
62          return (state.index + 1) % operand;
63      }
64  
65      public static class StatusState {
66          boolean last = false;
67          int index = 0;
68  
69          public void setLast(boolean isLast) {
70              last = isLast;
71          }
72  
73          public void next() {
74              index++;
75          }
76      }
77  }