package org.intermine.app.core;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.os.Parcel;
import android.os.Parcelable;
import org.intermine.app.util.Strs;
/**
* @author Daria Komkova <Daria_Komkova @ hotmail.com>
*/
public class Gene implements Parcelable, Comparable<Gene> {
private static final String UNDEFINED = "undefined";
private static final String CACHE_KEY_TEMPLATE = "%s-%d";
private long mId;
private String mPrimaryDBId;
private String mSymbol;
private String mDescription;
private String mLocationStart;
private String mLocationEnd;
private String mLocationStrand;
private String mLocatedOn;
private String mName;
private String mOrganismName;
private String mOrganismShortName;
private String mSecondaryIdentifier;
private String mOntologyTerm;
private String mMine;
private double mRelevance;
public Gene() {
}
public Gene(Parcel in) {
mId = in.readLong();
String[] data = new String[13];
in.readStringArray(data);
mPrimaryDBId = data[0];
mSymbol = data[1];
mDescription = data[2];
mLocationStart = data[3];
mLocationEnd = data[4];
mLocationStrand = data[5];
mLocatedOn = data[6];
mName = data[7];
mSecondaryIdentifier = data[8];
mOrganismName = data[9];
mOrganismShortName = data[10];
mOntologyTerm = data[11];
mMine = data[12];
}
public long getId() {
return mId;
}
public void setId(long id) {
mId = id;
}
public String getPrimaryDBId() {
return mPrimaryDBId;
}
public void setPrimaryDBId(String primaryDBId) {
mPrimaryDBId = primaryDBId;
}
public String getOrganismName() {
return mOrganismName;
}
public void setOrganismName(String organismName) {
mOrganismName = organismName;
}
public String getOrganismShortName() {
return mOrganismShortName;
}
public void setOrganismShortName(String organismShortName) {
mOrganismShortName = organismShortName;
}
public String getSecondaryIdentifier() {
return mSecondaryIdentifier;
}
public void setSecondaryIdentifier(String secondaryIdentifier) {
mSecondaryIdentifier = secondaryIdentifier;
}
public String getMine() {
return mMine;
}
public void setMine(String mine) {
mMine = mine;
}
public String getSymbol() {
return mSymbol;
}
public void setSymbol(String symbol) {
mSymbol = symbol;
}
public String getDescription() {
return mDescription;
}
public void setDescription(String description) {
mDescription = description;
}
public String getLocationStart() {
return mLocationStart;
}
public void setLocationStart(String locationStart) {
mLocationStart = locationStart;
}
public String getLocationEnd() {
return mLocationEnd;
}
public void setLocationEnd(String locationEnd) {
mLocationEnd = locationEnd;
}
public String getLocationStrand() {
return mLocationStrand;
}
public void setLocationStrand(String locationStrand) {
mLocationStrand = locationStrand;
}
public String getLocatedOn() {
return mLocatedOn;
}
public void setLocatedOn(String locatedOn) {
mLocatedOn = locatedOn;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public String getOntologyTerm() {
return mOntologyTerm;
}
public void setOntologyTerm(String ontologyTerm) {
mOntologyTerm = ontologyTerm;
}
public double getRelevance() {
return mRelevance;
}
public void setRelevance(double relevance) {
mRelevance = relevance;
}
@Override
public String toString() {
return "Gene{" +
"mId=" + mId +
", mPrimaryDBId='" + mPrimaryDBId + '\'' +
", mSymbol='" + mSymbol + '\'' +
", mDescription='" + mDescription + '\'' +
", mLocationStart='" + mLocationStart + '\'' +
", mLocationEnd='" + mLocationEnd + '\'' +
", mLocationStrand='" + mLocationStrand + '\'' +
", mLocatedOn='" + mLocatedOn + '\'' +
", mName='" + mName + '\'' +
", mOrganismName='" + mOrganismName + '\'' +
", mOrganismShortName='" + mOrganismShortName + '\'' +
", mSecondaryIdentifier='" + mSecondaryIdentifier + '\'' +
", mOntologyTerm='" + mOntologyTerm + '\'' +
", mMine='" + mMine + '\'' +
", mRelevance=" + mRelevance +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public int compareTo(Gene another) {
if (null == another) {
return 1;
}
if (getRelevance() > another.getRelevance())
return -1;
if (getRelevance() < another.getRelevance())
return 1;
long thisBits = Double.doubleToLongBits(getRelevance());
long anotherBits = Double.doubleToLongBits(getRelevance());
return (thisBits == anotherBits ? 0 : (thisBits < anotherBits ? 1 : -1));
}
public String generateCacheKey() {
String mine = Strs.isNullOrEmpty(mMine) ? UNDEFINED : mMine;
return String.format(CACHE_KEY_TEMPLATE, mine, mId);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(mId);
dest.writeStringArray(new String[]{mPrimaryDBId, mSymbol, mDescription, mLocationStart, mLocationEnd,
mLocationStrand, mLocatedOn, mName, mSecondaryIdentifier, mOrganismName,
mOrganismShortName, mOntologyTerm, mMine});
}
public static final Parcelable.Creator<Gene> CREATOR = new Parcelable.Creator<Gene>() {
@Override
public Gene createFromParcel(Parcel source) {
return new Gene(source);
}
@Override
public Gene[] newArray(int size) {
return new Gene[size];
}
};
}