72 lines
2.1 KiB
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());
|
|
}
|
|
}
|