1 /*** 2 * Redistribution and use in source and binary forms, with or without 3 * modification, are permitted provided that the following conditions are 4 * met : 5 * 6 * . Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * 9 * . Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * . The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $Id: AbstractDirectionGroup.java,v 1.2 2005/09/09 22:12:34 mat007 Exp $ 29 */ 30 31 package jtge.util.grid.directiongroup; 32 33 import java.util.Iterator; 34 import java.util.Vector; 35 import jtge.util.grid.direction.IDirection; 36 37 /*** 38 * Provides direction groups common behaviours. 39 * 40 * @author Jean-Laurent Fabre de Morlhon 41 * @version $Id: AbstractDirectionGroup.java,v 1.2 2005/09/09 22:12:34 mat007 Exp $ 42 */ 43 public abstract class AbstractDirectionGroup implements IDirectionGroup 44 { 45 private final Vector directions; 46 47 /*** 48 * Create an abstract direction group. 49 */ 50 protected AbstractDirectionGroup() 51 { 52 directions = new Vector(); 53 } 54 55 /*** 56 * Add a direction to the group. 57 * 58 * @param direction the direction to add 59 */ 60 protected final void add( final IDirection direction ) 61 { 62 directions.add( direction ); 63 } 64 65 /*** 66 * {@inheritDoc} 67 */ 68 public final Iterator iterator() 69 { 70 return directions.iterator(); 71 } 72 73 /*** 74 * {@inheritDoc} 75 */ 76 public final String[] getNames() 77 { 78 final int max = directions.size(); 79 final String[] result = new String[max]; 80 for( int i = 0; i < max; i++ ) 81 result[i] = ((IDirection)directions.get( i )).getName(); 82 return result; 83 } 84 85 /*** 86 * {@inheritDoc} 87 */ 88 public final String[] getShortNames() 89 { 90 final int max = directions.size(); 91 final String[] result = new String[max]; 92 for( int i = 0; i < max; i++ ) 93 result[i] = ((IDirection)directions.get( i )).getShortName(); 94 return result; 95 } 96 }