Mega Code Archive

 
Categories / Java Tutorial / Development
 

A bean that can be used to keep track of a counter

/*  * Copyright (c) 2002-2003 by OpenSymphony  * All rights reserved.  */ import java.io.Serializable; /**  * A bean that can be used to keep track of a counter.  * <p/>  * Since it is an Iterator it can be used by the iterator tag  *  * @author Rickard Öberg (rickard@middleware-company.com)  * @version $Revision: 1282 $  * @see <related>  */ public class Counter implements java.util.Iterator, Serializable {     boolean wrap = false;     // Attributes ----------------------------------------------------     long first = 1;     long current = first;     long interval = 1;     long last = -1;     public void setAdd(long addition) {         current += addition;     }     public void setCurrent(long current) {         this.current = current;     }     public long getCurrent() {         return current;     }     public void setFirst(long first) {         this.first = first;         current = first;     }     public long getFirst() {         return first;     }     public void setInterval(long interval) {         this.interval = interval;     }     public long getInterval() {         return interval;     }     public void setLast(long last) {         this.last = last;     }     public long getLast() {         return last;     }     // Public --------------------------------------------------------     public long getNext() {         long next = current;         current += interval;         if (wrap && (current > last)) {             current -= ((1 + last) - first);         }         return next;     }     public long getPrevious() {         current -= interval;         if (wrap && (current < first)) {             current += (last - first + 1);         }         return current;     }     public void setWrap(boolean wrap) {         this.wrap = wrap;     }     public boolean isWrap() {         return wrap;     }     public boolean hasNext() {         return ((last == -1) || wrap) ? true : (current <= last);     }     public Object next() {         return new Long(getNext());     }     public void remove() {         // Do nothing     } } /////////////////// /*  * Copyright (c) 2002-2003 by OpenSymphony  * All rights reserved.  */ package com.opensymphony.webwork.util; import junit.framework.TestCase; /**  * User: plightbo  * Date: Jan 7, 2004  * Time: 7:55:35 PM  */ public class CounterTest extends TestCase {     Counter c = new Counter();     public void testCurrentAfterNext() {         long next = c.getNext();         long current = c.getCurrent();         assertEquals(next + 1, current);     }     public void testCurrentBeforeNext() {         long current = c.getCurrent();         long next = c.getNext();         assertEquals(current, next);     }     public void testWrap() {         c.setWrap(true);         c.setLast(1);         long a = c.getNext();         long b = c.getNext();         assertEquals(1, a);         assertEquals(1, b);     } }