OSDN Git Service

ローカルスキーマ参照処理の共通化
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / vmd / FrameNumbered.java
1 /*
2  * frame-numbered interface
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd;
9
10 import java.util.Comparator;
11
12 /**
13  * キーフレーム番号を持つオブジェクトの抽象化インタフェース。
14  */
15 public interface FrameNumbered {
16
17     /** 昇順での比較子。 */
18     Comparator<FrameNumbered> COMPARATOR = new FrameComparator();
19
20     /**
21      * フレーム番号を設定する。
22      * @param num フレーム番号
23      */
24     void setFrameNumber(int num);
25
26     /**
27      * フレーム番号を返す。
28      * @return フレーム番号
29      */
30     int getFrameNumber();
31
32
33     /**
34      * フレーム番号による比較子Comparator。
35      * フレーム番号の昇順を定義づける。
36      */
37     @SuppressWarnings("serial")
38     class FrameComparator
39             implements Comparator<FrameNumbered> {
40
41         /**
42          * コンストラクタ。
43          */
44         public FrameComparator(){
45             super();
46             return;
47         }
48
49         /**
50          * {@inheritDoc}
51          * @param o1 {@inheritDoc}
52          * @param o2 {@inheritDoc}
53          * @return {@inheritDoc}
54          */
55         @Override
56         @SuppressWarnings("PMD.CompareObjectsWithEquals")
57         public int compare(FrameNumbered o1, FrameNumbered o2){
58             if(o1 == o2) return 0;
59             if(o1 == null) return -1;
60             if(o2 == null) return +1;
61
62             int num1 = o1.getFrameNumber();
63             int num2 = o2.getFrameNumber();
64
65             return num1 - num2;
66         }
67
68     }
69
70 }