All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.duracloud.mill.ltp.MorselComparator Maven / Gradle / Ivy

There is a newer version: 5.1.0
Show newest version
/*
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 *     http://duracloud.org/license/
 */
package org.duracloud.mill.ltp;

import java.util.Comparator;

/**
 * The prioritization strategy for the MorselQueue. The intention
 * is to ensure that spaces that have been started get worked before spaces that
 * haven't. Also, ideally morsels from different accounts are evenly dispersed
 * throughout the queue. So, given those motivations, here's an initial stab at
 * the logic.
 * 
 * 1. Morsels with non-null markers should go first. 
 * 2. Otherwise, order by space followed by domain.
 * 
 * @author Daniel Bernstein 
 *         Date: Nov 7, 2013
 */
public class MorselComparator implements Comparator {

    /* (non-Javadoc)
     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
     */
    @Override
    public int compare(Morsel o1, Morsel o2) {
        if(o1.getMarker() != null && o2.getMarker() == null){
            return 1;
        }
        
        if(o2.getMarker() != null && o1.getMarker() == null){
            return -1;
        }
        
        int spaceCompare = o1.getSpaceId().compareTo(o2.getSpaceId());
        if(spaceCompare == 0){
            return o1.getAccount().compareTo(o2.getAccount());
        }else{
            return spaceCompare;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy