OSDN Git Service

92cb468a5745bbe5001ed76289e3acac74175091
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / birthmarks / AbstractBirthmark.java
1 package jp.sourceforge.stigmata.birthmarks;
2
3 /*
4  * $Id$
5  */
6
7 import java.io.Serializable;
8 import java.util.ArrayList;
9 import java.util.Iterator;
10 import java.util.List;
11
12 import jp.sourceforge.stigmata.Birthmark;
13 import jp.sourceforge.stigmata.BirthmarkElement;
14
15 /**
16  * Abstract class for concrete {@link Birthmark <code>Birthmark</code>}
17  *
18  * @author  Haruaki TAMADA
19  */
20 public abstract class AbstractBirthmark implements Birthmark, Serializable{
21         private static final long serialVersionUID = -1300436185045832554L;
22
23         /**
24      * collections for elements.
25      */
26     protected List<BirthmarkElement> elements = new ArrayList<BirthmarkElement>();
27
28     @Override
29     public void addElement(BirthmarkElement element){
30         elements.add(element);
31     }
32
33     /**
34      * returns the number of elements.
35      */
36     @Override
37     public int getElementCount(){
38         int numberOfElement = 0;
39         BirthmarkElement[] elements = getElements();
40         if(elements != null){
41             numberOfElement = elements.length;
42         }
43         return numberOfElement;
44     }
45
46     /**
47      * returns elements.
48      * @return  elements
49      */
50     @Override
51     public BirthmarkElement[] getElements(){
52         return elements.toArray(new BirthmarkElement[elements.size()]);
53     }
54
55     /**
56      * returns elements.
57      */
58     @Override
59     public Iterator<BirthmarkElement> iterator(){
60         return elements.iterator();
61     }
62
63     /**
64      * returns the type of this birthmark.
65      */
66     @Override
67     public abstract String getType();
68
69     /**
70      * Is given birthmark the same type.
71      */
72     @Override
73     public boolean isSameType(Birthmark b){
74         return getType().equals(b.getType());
75     }
76 }