gatk-3.8/java/src/org/broadinstitute/sting/utils/threading/ProcessingLoc.java

72 lines
2.1 KiB
Java

package org.broadinstitute.sting.utils.threading;
import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.HasGenomeLocation;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
/**
* Created by IntelliJ IDEA.
* User: depristo
* Date: 1/19/11
* Time: 8:06 AM
*
* Information about processing locations and their owners. Contains two basic data, associated
* together. The first is a genome loc, and the second is the name of the owner, as a string.
*
* chr1:1-10 Mark
* chr2:11-20 DePristo
*
* would be two ProcessingLocs that first indicate that the first 10 bp of chr1 are owned by Mark,
* and the second is owned by DePristo.
*/
public class ProcessingLoc implements HasGenomeLocation {
private final GenomeLoc loc;
private final String owner;
/**
* Create a loc that's already owned
* @param loc
* @param owner
*/
public ProcessingLoc(GenomeLoc loc, String owner) {
if ( loc == null || owner == null ) {
throw new ReviewedStingException("BUG: invalid ProcessingLoc detected: " + loc + " owner " + owner);
}
this.loc = loc;
this.owner = owner.intern(); // reduce memory consumption by interning the string
}
public GenomeLoc getLocation() {
return loc;
}
public String getOwner() {
return owner;
}
/**
* Returns true iff the owner of this processing loc is name. Can be used to determine
* the owner of this processing location.
*
* @param name
* @return
*/
public boolean isOwnedBy(String name) {
return getOwner().equals(name);
}
public String toString() { return String.format("ProcessingLoc(%s,%s)", loc, owner); }
public boolean equals(Object other) {
if (other instanceof ProcessingLoc )
return this.loc.equals(((ProcessingLoc)other).loc) && this.owner.equals(((ProcessingLoc)other).owner);
else
return false;
}
public int compareTo(ProcessingLoc other) {
return this.getLocation().compareTo(other.getLocation());
}
}