OSDN Git Service

Merge release/v1.202.2
[mikutoga/Pmd2XML.git] / src / main / java / jp / sfjp / 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.sfjp.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      * 通し番号を設定する。
23      * @param num 通し番号
24      */
25     void setSerialNumber(int num);
26
27     /**
28      * 通し番号を返す。
29      * @return 通し番号
30      */
31     int getSerialNumber();
32
33
34     /**
35      * 通し番号による比較子Comparator。
36      * 通し番号の昇順を定義づける。
37      */
38     @SuppressWarnings("serial")
39     class SerialComparator
40             implements Comparator<SerialNumbered> {
41
42         /**
43          * コンストラクタ。
44          */
45         public SerialComparator(){
46             super();
47             return;
48         }
49
50
51         /**
52          * {@inheritDoc}
53          * @param o1 {@inheritDoc}
54          * @param o2 {@inheritDoc}
55          * @return {@inheritDoc}
56          */
57         @Override
58         public int compare(SerialNumbered o1, SerialNumbered o2){
59             if(o1 == o2) return 0;
60             if(o1 == null) return -1;
61             if(o2 == null) return +1;
62
63             int ser1 = o1.getSerialNumber();
64             int ser2 = o2.getSerialNumber();
65
66             return ser1 - ser2;
67         }
68
69     }
70
71 }