OSDN Git Service

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