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

prerna.query.querystruct.selectors.QueryConstantSelector Maven / Gradle / Ivy

The newest version!
package prerna.query.querystruct.selectors;

import java.util.List;
import java.util.Vector;

import prerna.date.SemossDate;
import prerna.reactor.qs.SubQueryExpression;
import prerna.util.Utility;

public class QueryConstantSelector extends AbstractQuerySelector {

	private static final IQuerySelector.SELECTOR_TYPE SELECTOR_TYPE = IQuerySelector.SELECTOR_TYPE.CONSTANT;

	private Object constant;
	
	public QueryConstantSelector() {
		this.constant = "";
	}
	
	public QueryConstantSelector(Object constant) {
		this.constant = constant;
	}
	
	public QueryConstantSelector(Object constant, String alias) {
		this.constant = constant;
		setAlias(alias);
	}

	@Override
	public SELECTOR_TYPE getSelectorType() {
		return SELECTOR_TYPE;
	}

	@Override
	public String getAlias() {
		if(this.alias == null || this.alias.equals("")) {
			return "CONSTANT_" + Utility.makeAlphaNumeric(constant.toString());
		}
		return this.alias;
	}
	
	@Override
	public boolean isDerived() {
		return true;
	}

	@Override
	public String getQueryStructName() {
		if(this.constant instanceof SubQueryExpression) {
			return ((SubQueryExpression) this.constant).getQueryStructName();
		}
		return this.constant.toString();
	}

	@Override
	public String getDataType() {
		if(constant instanceof Number) {
			return "NUMBER";
		} else if(constant instanceof SemossDate) {
			if( ((SemossDate) constant).dateHasTimeNotZero() ) {
				return "TIMESTAMP";
			} else {
				return "DATE";
			}
		} else {
			return "STRING";
		}
	}
	
	public void setConstant(Object constant) {
		this.constant = constant;
	}
	
	public Object getConstant() {
		return this.constant;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof QueryConstantSelector) {
			QueryConstantSelector selector = (QueryConstantSelector)obj;
			if(this.constant.equals(selector.constant) &&
					this.alias.equals(selector.alias)) {
					return true;
			}
		}
		return false;
	}
	
	@Override
	public int hashCode() {
		String allString = constant+":::"+alias;
		return allString.hashCode();
	}

	@Override
	public List getAllQueryColumns() {
		// its a constant... obviously this is empty
		List usedCols = new Vector();
		return usedCols;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy