001/*
002 * #%L
003 * Netarchivesuite - harvester
004 * %%
005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library,
006 *             the National Library of France and the Austrian National Library.
007 * %%
008 * This program is free software: you can redistribute it and/or modify
009 * it under the terms of the GNU Lesser General Public License as
010 * published by the Free Software Foundation, either version 2.1 of the
011 * License, or (at your option) any later version.
012 * 
013 * This program is distributed in the hope that it will be useful,
014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
016 * GNU General Lesser Public License for more details.
017 * 
018 * You should have received a copy of the GNU General Lesser Public
019 * License along with this program.  If not, see
020 * <http://www.gnu.org/licenses/lgpl-2.1.html>.
021 * #L%
022 */
023
024package dk.netarkivet.harvester.datamodel;
025
026import java.text.Collator;
027import java.util.Collections;
028import java.util.Comparator;
029import java.util.List;
030import java.util.Locale;
031
032import dk.netarkivet.common.utils.Named;
033
034/**
035 * Utilities for handling named objects. Named objects are objects in our datamodel, which have a name and a comment.
036 */
037public class NamedUtils {
038
039    /**
040     * Sorts List of Named objects according to language defined in parameter loc. The sorting is done via a compare
041     * function on named objects. The compare function uses Collator for sorting according to language in loc. The
042     * compare function is used as Comparator for the Collection Sorting on Named object Lists.
043     *
044     * @param loc contains the language sorting must adhere to
045     * @param list contains list to be sorted. Objects in the List must implement Named
046     */
047    public static <T extends Named> void sortNamedObjectList(final Locale loc, List<T> list) {
048        Collections.sort(list, new Comparator<Named>() {
049            public int compare(Named o1, Named o2) {
050                Collator myCollator = Collator.getInstance(loc);
051                return myCollator.compare(o1.getName(), o2.getName());
052            }
053        });
054    }
055
056}