001    package org.apache.archiva.admin.repository.proxyconnector;
002    /*
003     * Licensed to the Apache Software Foundation (ASF) under one
004     * or more contributor license agreements.  See the NOTICE file
005     * distributed with this work for additional information
006     * regarding copyright ownership.  The ASF licenses this file
007     * to you under the Apache License, Version 2.0 (the
008     * "License"); you may not use this file except in compliance
009     * with the License.  You may obtain a copy of the License at
010     *
011     *   http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing,
014     * software distributed under the License is distributed on an
015     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016     * KIND, either express or implied.  See the License for the
017     * specific language governing permissions and limitations
018     * under the License.
019     */
020    
021    import org.apache.archiva.admin.model.beans.ProxyConnector;
022    
023    import java.util.Comparator;
024    
025    /**
026     * @author Olivier Lamy
027     * @since 1.4-M3
028     */
029    public class ProxyConnectorOrderComparator
030        implements Comparator<ProxyConnector>
031    {
032        private static ProxyConnectorOrderComparator INSTANCE = new ProxyConnectorOrderComparator();
033    
034        public int compare( ProxyConnector o1, ProxyConnector o2 )
035        {
036            if ( o1 == null && o2 == null )
037            {
038                return 0;
039            }
040    
041            // Ensure null goes to end of list.
042            if ( o1 == null && o2 != null )
043            {
044                return 1;
045            }
046    
047            if ( o1 != null && o2 == null )
048            {
049                return -1;
050            }
051    
052            // Ensure 0 (unordered) goes to end of list.
053            if ( o1.getOrder() == 0 && o2.getOrder() != 0 )
054            {
055                return 1;
056            }
057    
058            if ( o1.getOrder() != 0 && o2.getOrder() == 0 )
059            {
060                return -1;
061            }
062    
063            return o1.getOrder() - o2.getOrder();
064        }
065    
066        public static ProxyConnectorOrderComparator getInstance()
067        {
068            return INSTANCE;
069        }
070    }