package com.bagri.core.model; import com.bagri.core.query.QueryBuilder; /** * Represents cached compiled query * * @author Denis Sukhoroslov * */ public class Query implements Cloneable { private String query; private boolean readOnly; private QueryBuilder xdmQuery; /** * default constructor */ public Query() { // } /** * * @param query the query itself * @param readOnly is query read-only or not * @param xdmQuery the compiled query */ public Query(String query, boolean readOnly, QueryBuilder xdmQuery) { this.query = query; this.readOnly = readOnly; this.xdmQuery = xdmQuery; } /** * {@inheritDoc} */ @Override public Query clone() { return new Query(query, readOnly, xdmQuery.clone()); } /** * * @return the plain text query */ public String getQuery() { return query; } /** * * @return is query read-only or not */ public boolean isReadOnly() { return readOnly; } /** * * @return the compiled query */ public QueryBuilder getXdmQuery() { return xdmQuery; } /** * {@inheritDoc} */ @Override public int hashCode() { return query.hashCode(); } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Query other = (Query) obj; return query.equals(other.query); } /** * {@inheritDoc} */ @Override public String toString() { return "Query [query=" + query + ", readOnly=" + readOnly + ", xdmQuery=" + xdmQuery + "]"; } }