package org.molgenis.data.elasticsearch.util; import org.apache.commons.lang3.builder.ToStringBuilder; import org.molgenis.data.Entity; import org.molgenis.data.Query; import org.molgenis.data.meta.model.Attribute; import org.molgenis.data.support.QueryImpl; public class SearchRequest { private String documentType; private QueryImpl<Entity> query; private Attribute aggregateField1; private Attribute aggregateField2; private Attribute aggregateFieldDistinct; public SearchRequest() { } public SearchRequest(String documentType, Query<Entity> query) { this.documentType = documentType; this.query = new QueryImpl<>(query); } public SearchRequest(String documentType, Query<Entity> query, Attribute aggregateField1, Attribute aggregateField2, Attribute aggregateFieldDistinct) { this(documentType, query); this.aggregateField1 = aggregateField1; this.aggregateField2 = aggregateField2; this.aggregateFieldDistinct = aggregateFieldDistinct; } public String getDocumentType() { return documentType; } public Query<Entity> getQuery() { if (query == null) { query = new QueryImpl<>(); } return query; } public Attribute getAggregateField1() { return aggregateField1; } public Attribute getAggregateField2() { return aggregateField2; } public Attribute getAggregateFieldDistinct() { return aggregateFieldDistinct; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((documentType == null) ? 0 : documentType.hashCode()); result = prime * result + ((aggregateField1 == null) ? 0 : aggregateField1.hashCode()); result = prime * result + ((aggregateField2 == null) ? 0 : aggregateField2.hashCode()); result = prime * result + ((aggregateFieldDistinct == null) ? 0 : aggregateFieldDistinct.hashCode()); result = prime * result + ((query == null) ? 0 : query.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SearchRequest other = (SearchRequest) obj; if (documentType == null) { if (other.documentType != null) return false; } else if (!documentType.equals(other.documentType)) return false; if (aggregateField1 == null) { if (other.aggregateField1 != null) return false; } else if (!aggregateField1.equals(other.aggregateField1)) return false; if (aggregateField2 == null) { if (other.aggregateField2 != null) return false; } else if (!aggregateField2.equals(other.aggregateField2)) return false; if (aggregateFieldDistinct == null) { if (other.aggregateFieldDistinct != null) return false; } else if (!aggregateFieldDistinct.equals(other.aggregateFieldDistinct)) return false; if (query == null) { if (other.query != null) return false; } else if (!query.equals(other.query)) return false; return true; } }