OSDN Git Service

TogaGemからのパッケージ移管。
[mikutoga/Pmd2XML.git] / src / main / java / jp / sourceforge / mikutoga / pmd / model / SerialNumbered.java
diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/SerialNumbered.java b/src/main/java/jp/sourceforge/mikutoga/pmd/model/SerialNumbered.java
new file mode 100644 (file)
index 0000000..fdecaf5
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * serial-numbered interface
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd.model;
+
+import java.util.Comparator;
+
+/**
+ * 通し番号を持つオブジェクトの抽象化インタフェース。
+ */
+public interface SerialNumbered {
+
+    /** 昇順での比較子。 */
+    Comparator<SerialNumbered> COMPARATOR = new SerialComparator();
+
+    /**
+     * 通し番号を設定する。
+     * @param num 通し番号
+     */
+    void setSerialNumber(int num);
+
+    /**
+     * 通し番号を返す。
+     * @return 通し番号
+     */
+    int getSerialNumber();
+
+    /**
+     * 通し番号による比較子Comparator。
+     * 通し番号の昇順を定義づける。
+     */
+    class SerialComparator
+            implements Comparator<SerialNumbered> {
+
+        /**
+         * コンストラクタ。
+         */
+        public SerialComparator(){
+            super();
+            return;
+        }
+
+        /**
+         * {@inheritDoc}
+         * @param o1 {@inheritDoc}
+         * @param o2 {@inheritDoc}
+         * @return {@inheritDoc}
+         */
+        @Override
+        public int compare(SerialNumbered o1, SerialNumbered o2){
+            if(o1 == o2) return 0;
+            if(o1 == null) return -1;
+            if(o2 == null) return +1;
+
+            int ser1 = o1.getSerialNumber();
+            int ser2 = o2.getSerialNumber();
+
+            return ser1 - ser2;
+        }
+
+    }
+
+}