OSDN Git Service

0af6cd38108fac07b325c90c5b99c2deb108d5c7
[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  * @version  $Revision$ 
20  */
21 public abstract class AbstractBirthmark implements Birthmark, Serializable{
22         private static final long serialVersionUID = -1300436185045832554L;
23
24         /**
25      * collections for elements.
26      */
27     protected List<BirthmarkElement> elements = new ArrayList<BirthmarkElement>();
28
29     @Override
30     public void addElement(BirthmarkElement element){
31         elements.add(element);
32     }
33
34     /**
35      * returns the number of elements.
36      */
37     @Override
38     public int getElementCount(){
39         int numberOfElement = 0;
40         BirthmarkElement[] elements = getElements();
41         if(elements != null){
42             numberOfElement = elements.length;
43         }
44         return numberOfElement;
45     }
46
47     /**
48      * returns elements.
49      * @return  elements
50      */
51     @Override
52     public BirthmarkElement[] getElements(){
53         return elements.toArray(new BirthmarkElement[elements.size()]);
54     }
55
56     /**
57      * returns elements.
58      */
59     @Override
60     public Iterator<BirthmarkElement> iterator(){
61         return elements.iterator();
62     }
63
64     /**
65      * returns the type of this birthmark.
66      */
67     @Override
68     public abstract String getType();
69
70     /**
71      * Is given birthmark the same type.
72      */
73     @Override
74     public boolean isSameType(Birthmark b){
75         return getType().equals(b.getType());
76     }
77 }