All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pelle.mango.client.base.vo.query.Entity Maven / Gradle / Ivy

The newest version!
package io.pelle.mango.client.base.vo.query;

import io.pelle.mango.client.base.vo.IAttributeDescriptor;
import io.pelle.mango.client.base.vo.query.Join.JOIN_TYPE;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.common.base.Objects;

@SuppressWarnings("serial")
public class Entity implements IEntity, Serializable {

	/** Entity class */
	private String className;

	private String alias;

	/** Joins for this entity */
	private Map joins = new HashMap();

	private IAliasProvider aliasProvider;

	public Entity() {
	}
	
	/**
	 * Constructor for Entity
	 * 
	 * /**
	 * 
	 * @param aliasProvider
	 * @param entityClass
	 */
	public Entity(IAliasProvider aliasProvider, String className) {
		this.className = className;
		this.alias = aliasProvider.getAliasFor(className);
		this.aliasProvider = aliasProvider;

	}

	/** {@inheritDoc} */
	@Override
	public boolean equals(Object obj) {
		
		if (obj instanceof Entity) {
			return ((Entity) obj).className.equals(className);
		}

		if (obj instanceof String) {
			return ((String) obj).equals(className);
		}

		return false;
	}

	/** {@inheritDoc} */
	@Override
	public String getAlias() {
		return alias;
	}

	public String getClassName() {
		return className;
	}

	public Join join(IAttributeDescriptor attributeDescriptor) {
		return join(attributeDescriptor.getAttributeName());
	}

	public Join join(String field) {
		if (joins.containsKey(field)) {
			return joins.get(field);
		} else {
			Join join = new Join(aliasProvider, JOIN_TYPE.LEFT, field);
			joins.put(field, join);

			return join;
		}
	}

	public List getJoins() {
		return new ArrayList(joins.values());
	}

	@Override
	public String toString() {
		return Objects.toStringHelper(this).add("entity", className).toString();
	}

	/** {@inheritDoc} */
	@Override
	public int hashCode() {
		return className.hashCode();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy