/* * $Id: ICTreeNodeComparator.java,v 1.2 2006/04/09 12:13:16 laddi Exp $ * Created on 8.1.2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package com.idega.core.business; import java.text.Collator; import java.util.Comparator; import java.util.Locale; import com.idega.core.data.ICTreeNode; import com.idega.util.CoreConstants; /** * A comparator to compare ICTreeNodes by their name. * * Last modified: $Date: 2006/04/09 12:13:16 $ by $Author: laddi $ * * @author <a href="mailto:laddi@idega.com">laddi</a> * @version $Revision: 1.2 $ */ public class ICTreeNodeComparator implements Comparator<ICTreeNode> { private Collator collator; private Locale locale; public ICTreeNodeComparator() { this.collator = Collator.getInstance(); } public ICTreeNodeComparator(Locale locale) { this.locale = locale; this.collator = Collator.getInstance(locale); } public int compare(ICTreeNode o1, ICTreeNode o2) { String name1 = getName(o1); String name2 = getName(o2); return collator.compare(name1, name2); } private String getName(ICTreeNode node) { if (node == null) { return CoreConstants.EMPTY; } String name = locale == null ? node.getNodeName() : node.getNodeName(locale); if (locale != null && name == null) { // Failed to retrieve localized name name = node.getNodeName(); } return name == null ? CoreConstants.EMPTY : name; } }