/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.structure.menuitem; import java.io.Serializable; import java.util.Comparator; public class MenuItemComparatorByHierarchy implements Comparator<MenuItemEntity>, Serializable { private static final long serialVersionUID = -6540903107046469057L; public int compare( final MenuItemEntity a, final MenuItemEntity b ) { if (a == b) { return 0; } // return -1 if a is before than b // return 0 if a has equal order to b // return +1 if a is after b final int levelOfA = a.getLevel(); final int levelOfB = b.getLevel(); if ( levelOfA < levelOfB ) { return -1; } else if ( levelOfA > levelOfB ) { return +1; } // at this point a and be are at the same level in the menu hierarchy final int orderOfA = a.getOrder(); final int orderOfB = b.getOrder(); if ( orderOfA < orderOfB ) { return -1; } else if ( orderOfA > orderOfB ) { return +1; } // NOTE: This has to be done to prevent trouble with equals when menuItems have same order but different keys return ( a.getKey().toInt() < b.getKey().toInt() ? -1 : ( a.getKey().toInt() == b.getKey().toInt() ? 0 : 1 ) ); } }