OSDN Git Service

[no commit message]
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / model / SerialNumbered.java
1 /*
2  * serial-numbered interface
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd.model;
9
10 import java.util.Comparator;
11
12 /**
13  * 通し番号を持つオブジェクトの抽象化インタフェース。
14  */
15 public interface SerialNumbered {
16
17     /** 昇順での比較子。 */
18     Comparator<SerialNumbered> COMPARATOR = new SerialComparator();
19
20     /**
21      * 通し番号を設定する。
22      * @param num 通し番号
23      */
24     void setSerialNumber(int num);
25
26     /**
27      * 通し番号を返す。
28      * @return 通し番号
29      */
30     int getSerialNumber();
31
32     /**
33      * 通し番号による比較子Comparator。
34      * 通し番号の昇順を定義づける。
35      */
36     class SerialComparator
37             implements Comparator<SerialNumbered> {
38
39         /**
40          * コンストラクタ。
41          */
42         public SerialComparator(){
43             super();
44             return;
45         }
46
47         /**
48          * {@inheritDoc}
49          * @param o1 {@inheritDoc}
50          * @param o2 {@inheritDoc}
51          * @return {@inheritDoc}
52          */
53         @Override
54         public int compare(SerialNumbered o1, SerialNumbered o2){
55             if(o1 == o2) return 0;
56             if(o1 == null) return -1;
57             if(o2 == null) return +1;
58
59             int ser1 = o1.getSerialNumber();
60             int ser2 = o2.getSerialNumber();
61
62             return ser1 - ser2;
63         }
64
65     }
66
67 }