@Override public int compare( final MigrationPlugin o1, final MigrationPlugin o2 ) { //first one is less if(o1.getPhase().ordinal() < o2.getPhase().ordinal()){ return -1; } //second one is first if(o2.getPhase().ordinal() < o1.getPhase().ordinal()){ return 1; } //if our phase for return o1.getName().compareTo( o2.getName() ); } }