01: /*
02: * $Id: IteratorStatus.java 471756 2006-11-06 15:01:43Z husted $
03: *
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "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: * The iterator tag can export an IteratorStatus object so that
25: * one can get information about the status of the iteration, such as
26: * the size, current index, and whether any more items are available.
27: *
28: */
29: public class IteratorStatus {
30: protected StatusState state;
31:
32: public IteratorStatus(StatusState aState) {
33: state = aState;
34: }
35:
36: public int getCount() {
37: return state.index + 1;
38: }
39:
40: public boolean isEven() {
41: return ((state.index + 1) % 2) == 0;
42: }
43:
44: public boolean isFirst() {
45: return state.index == 0;
46: }
47:
48: public int getIndex() {
49: return state.index;
50: }
51:
52: public boolean isLast() {
53: return state.last;
54: }
55:
56: public boolean isOdd() {
57: return ((state.index + 1) % 2) == 1;
58: }
59:
60: public int modulus(int operand) {
61: return (state.index + 1) % operand;
62: }
63:
64: public static class StatusState {
65: boolean last = false;
66: int index = 0;
67:
68: public void setLast(boolean isLast) {
69: last = isLast;
70: }
71:
72: public void next() {
73: index++;
74: }
75: }
76: }
|