001 /*--------------------------------------------------------------------------+ 002 $Id: IdComparator.java 26283 2010-02-18 11:18:57Z juergens $ 003 | | 004 | Copyright 2005-2010 Technische Universitaet Muenchen | 005 | | 006 | Licensed under the Apache License, Version 2.0 (the "License"); | 007 | you may not use this file except in compliance with the License. | 008 | You may obtain a copy of the License at | 009 | | 010 | http://www.apache.org/licenses/LICENSE-2.0 | 011 | | 012 | Unless required by applicable law or agreed to in writing, software | 013 | distributed under the License is distributed on an "AS IS" BASIS, | 014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 015 | See the License for the specific language governing permissions and | 016 | limitations under the License. | 017 +--------------------------------------------------------------------------*/ 018 package edu.tum.cs.commons.collections; 019 020 /** 021 * Comparator that compares objects based on the identifiers provided by a 022 * {@link IIdProvider}. 023 * 024 * @author deissenb 025 * @author $Author: juergens $ 026 * @version $Rev: 26283 $ 027 * @levd.rating GREEN Hash: 3F2D6549B37B7E5FF4BC2F5E98EC0A29 028 */ 029 public class IdComparator<I extends Comparable<I>, T> extends 030 IdentifierBasedComparatorBase<I, T> { 031 032 /** ID provider used for comparing. */ 033 private final IIdProvider<I, T> idProvider; 034 035 /** Create new comparator. */ 036 public IdComparator(IIdProvider<I, T> idProvider) { 037 this.idProvider = idProvider; 038 } 039 040 /** 041 * Obtain identifier from identifier provider. 042 * 043 * @throws NullPointerException 044 * if the id provider returns <code>null</code>. 045 */ 046 @Override 047 protected I obtainIdentifier(T t) { 048 I id = idProvider.obtainId(t); 049 if (id == null) { 050 throw new NullPointerException("Id for " + t + " is null."); 051 } 052 return id; 053 } 054 }