view src/main/java/cl/maps/penta/PentaKey.java @ 88:ad505ef703ed

new implementation of translit-to-romanization rules in RomanizationLoc.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 23 Feb 2018 21:43:29 +0100
parents 6e08ff123ae6
children
line wrap: on
line source

package cl.maps.penta;


public class PentaKey <A, B, C, D, E> {
	private A aKey;
	private B bKey;
	private C cKey;
	private D dKey;
	private E ownKey;
	
	public PentaKey(A aKey, B bKey, C cKey, D dKey, E ownKey){
		this.aKey = aKey;
		this.bKey = bKey;
		this.cKey = cKey;
		this.dKey = dKey;
		this.ownKey = ownKey;
	}
	
	public boolean equalsAKey(A key){
		if(aKey != null && key != null){
			return aKey.equals(key);
		}else if(aKey == null && key == null){
			return true;
		}
		return false;
	}
	
	public boolean equalsBKey(B key){
		if(bKey != null && key != null){
			return bKey.equals(key);
		}else if(bKey == null && key == null){
			return true;
		}
		return false;
	}
	
	public boolean equalsCKey(C key){
		if(cKey != null && key != null){
			return cKey.equals(key);
		}else if(cKey == null && key == null){
			return true;
		}
		return false;
	}
	
	public boolean equalsDKey(D key){
		if(dKey != null && key != null){
			return dKey.equals(key);
		}else if(dKey == null && key == null){
			return true;
		}
		return false;
	}
	
	public boolean equalsOwnKey(E key){
		if(ownKey != null && key != null){
			return ownKey.equals(key);
		}else if(ownKey == null && key == null){
			return true;
		}
		return false;
	}
	
	public A getAKey() {
		return aKey;
	}

	public void setAKey(A aKey) {
		this.aKey = aKey;
	}

	public B getBKey() {
		return bKey;
	}

	public void setBKey(B bKey) {
		this.bKey = bKey;
	}

	public D getDKey() {
		return dKey;
	}

	public void setDKey(D dKey) {
		this.dKey = dKey;
	}
	
	public C getCKey() {
		return cKey;
	}

	public void setCKey(C cKey) {
		this.cKey = cKey;
	}

	public E getOwnKey() {
		return ownKey;
	}

	public void setOwnKey(E ownKey) {
		this.ownKey = ownKey;
	}

	@Override
	public boolean equals(Object o){
		if(o instanceof PentaKey){
			try {
				PentaKey<A, B, C, D, E> other = (PentaKey<A, B, C, D, E>)o;
				
				if(this.equalsDKey(other.getDKey()) &&
						this.equalsAKey(other.getAKey()) &&
						this.equalsBKey(other.getBKey()) &&
						this.equalsCKey(other.getCKey())){
					return true;
				}	
			} catch (Exception e) {}			
		}
		return false;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((aKey == null) ? 0 : aKey.hashCode());
		result = prime * result + ((bKey == null) ? 0 : bKey.hashCode());
		result = prime * result + ((cKey == null) ? 0 : cKey.hashCode());
		result = prime * result + ((dKey == null) ? 0 : dKey.hashCode());
		result = prime * result + ((ownKey == null) ? 0 : ownKey.hashCode());
		
		return result;
	}

	@Override
	public String toString() {
		if (aKey == null || bKey == null || cKey == null || dKey == null || ownKey == null) {
			return super.toString();
		}
		return "PentaKey [" + 
			aKey.toString() + ", " + 
			bKey.toString() + ", " +
			cKey.toString() + ", " +
			dKey.toString() + ", " +
			ownKey.toString() + "]";
	}	
}