OSDN Git Service

fixed findbugs warnings.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / BirthmarkStoreTarget.java
1 package jp.sourceforge.stigmata;
2
3 import java.io.Serializable;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 /**
8  * This class represents how to store extracted birthmarks.
9  * memory?, databases?, or files?
10  * 
11  * @author Haruaki Tamada
12  */
13 public class BirthmarkStoreTarget implements Serializable, Comparable<BirthmarkStoreTarget>{
14     private static final long serialVersionUID = -4225861589804166362L;
15
16     private static final Map<String, BirthmarkStoreTarget> TARGETS = new HashMap<String, BirthmarkStoreTarget>();
17
18     public static final BirthmarkStoreTarget MEMORY = new BirthmarkStoreTarget(0, "MEMORY");
19     public static final BirthmarkStoreTarget XMLFILE = new BirthmarkStoreTarget(1, "XMLFILE");
20     public static final BirthmarkStoreTarget MEMORY_SINGLE = new BirthmarkStoreTarget(2, "MEMORY_SINGLE");
21     public static final BirthmarkStoreTarget RDB = new BirthmarkStoreTarget(3, "RDB");
22
23     private final String name;
24     private final int ordinal;
25
26     private BirthmarkStoreTarget(int index, String name){
27         this.name = name;
28         this.ordinal = index;
29         TARGETS.put(name, this);
30     }
31
32     public String name(){
33         return name;
34     }
35
36     public int ordinal(){
37         return ordinal;
38     }
39
40     @Override
41     public boolean equals(Object o){
42         return this == o;
43     }
44
45     @Override
46     public int compareTo(BirthmarkStoreTarget other){
47         return ordinal - other.ordinal;
48     }
49
50     public static BirthmarkStoreTarget valueOf(String name){
51         return TARGETS.get(name);
52     }
53
54     public static BirthmarkStoreTarget createTarget(String name){
55         BirthmarkStoreTarget bst = TARGETS.get(name);
56         if(bst == null){
57             bst = new BirthmarkStoreTarget(TARGETS.size(), name);
58         }
59         return bst;
60     }
61 }