package eu.dnetlib.espas.gui.shared;

import com.google.gwt.user.client.rpc.IsSerializable;

import java.io.Serializable;

@SuppressWarnings("serial")
public class RefineOption implements IsSerializable, Serializable, Comparable<RefineOption> {

	private String categoryName;
	private String optionId;
	private String optionValue;
	private String optionShortName;
	private String optionDescription;
	private int optionCount;
	private int noOfObservationsWithUnknownMeasurements;
	private int noOfObservationsWithKnownMeasurements;
	private int noOfMeasurements;
	
	public RefineOption() {
	}

	public String getCategoryName() {
		return categoryName;
	}

	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}
	
	public String getOptionId() {
		return optionId;
	}

	public void setOptionId(String optionId) {
		this.optionId = optionId;
	}

	public String getOptionValue() {
		return optionValue;
	}

	public void setOptionValue(String optionValue) {
		this.optionValue = optionValue;
	}
	
	public String getOptionShortName() {
		return optionShortName;
	}

	public void setOptionShortName(String optionShortName) {
		this.optionShortName = optionShortName;
	}

	public String getOptionDescription() {
		return optionDescription;
	}

	public void setOptionDescription(String optionDescription) {
		this.optionDescription = optionDescription;
	}

	public int getOptionCount() {
		return optionCount;
	}

	public void setOptionCount(int optionCount) {
		this.optionCount = optionCount;
	}
	
	public int getNoOfObservationsWithUnknownMeasurements() {
		return noOfObservationsWithUnknownMeasurements;
	}

	public void setNoOfObservationsWithUnknownMeasurements(
			int noOfObservationsWithUnknownMeasurements) {
		this.noOfObservationsWithUnknownMeasurements = noOfObservationsWithUnknownMeasurements;
	}

	public int getNoOfObservationsWithKnownMeasurements() {
		return noOfObservationsWithKnownMeasurements;
	}

	public void setNoOfObservationsWithKnownMeasurements(
			int noOfObservationsWithKnownMeasurements) {
		this.noOfObservationsWithKnownMeasurements = noOfObservationsWithKnownMeasurements;
	}

	public int getNoOfMeasurements() {
		return noOfMeasurements;
	}

	public void setNoOfMeasurements(int noOfMeasurements) {
		this.noOfMeasurements = noOfMeasurements;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		RefineOption other = (RefineOption) obj;
		if (optionId == null) {
			if (other.optionId != null)
				return false;
		} else if (!optionId.equals(other.optionId))
			return false;
		return true;
	}

	@Override
	public int compareTo(RefineOption o) {

		if(optionValue.compareToIgnoreCase(o.getOptionValue())>0)
			return 1;
		
		else if(optionValue.compareToIgnoreCase(o.getOptionValue())<0)
			return -1;
		
		return 0;
	}
}