1 /* Copyright (c) 2008 Sascha Kohlmann 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU Affero General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Affero General Public License for more details. 12 * 13 * You should have received a copy of the GNU Affero General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 package net.sf.eos.search; 17 18 import java.util.List; 19 20 import net.sf.eos.EosException; 21 import net.sf.eos.config.Configurable; 22 23 /** 24 * A query is always constructed by the {@link EosLookup} instance and supports 25 * simple lookups in an entity oriented search index. 26 * 27 * <p>The query is very simple. At this time an entity oriented search system 28 * doesn't need sophisticated queries. 29 * 30 * @author Sascha Kohlmann 31 */ 32 public interface EosQuery extends Configurable { 33 34 /** 35 * Adds a phrase to lookup with the boolean {@literal and} operation. 36 * @param phrase the phrase to lookup 37 * @return this instance 38 * @throws EosException if an error occurs 39 */ 40 EosQuery and(final String phrase) throws EosException; 41 42 /** 43 * Adds a phrase to lookup with the boolean {@literal or} operation. 44 * @param phrase the phrase to lookup 45 * @return this instance 46 * @throws EosException if an error occurs 47 */ 48 EosQuery or(final String phrase) throws EosException; 49 50 /** 51 * Adds a phrase not to lookup with the boolean {@literal and} operation. 52 * @param phrase the phrase to lookup 53 * @return this instance 54 * @throws EosException if an error occurs 55 */ 56 EosQuery andNot(final String phrase) throws EosException; 57 58 /** 59 * Adds a meta entry for a special field to lookup with the boolean 60 * {@literal and} operation. 61 * @param fieldName the meta field name to lookup 62 * @param value the meta value to lookup 63 * @return this instance 64 * @throws EosException if an error occurs 65 */ 66 EosQuery andMeta(final String fieldName, final String value) throws EosException; 67 68 /** 69 * Adds a meta entry for a special field to not lookup with the boolean 70 * {@literal and} operation. 71 * @param fieldName the meta field name to lookup 72 * @param value the meta value to lookup 73 * @return this instance 74 * @throws EosException if an error occurs 75 */ 76 EosQuery andNotMeta(final String fieldName, final String value) throws EosException; 77 78 /** 79 * Adds a meta entry for a special field to lookup with the boolean 80 * {@literal or} operation. 81 * @param fieldName the meta field name to lookup 82 * @param value the meta value to lookup 83 * @return this instance 84 * @throws EosException if an error occurs 85 */ 86 EosQuery orMeta(final String fieldName, final String value) throws EosException; 87 88 /** 89 * Adds a meta entry for a special field to lookup with the boolean 90 * {@literal and} operation. The two value parameters spans a range between 91 * the lower bound value and the upper bound value. 92 * @param fieldName the meta field name to lookup 93 * @param lowerBoundValue the meta lower bound value to lookup 94 * @param upperBoundValue the meta upper bound value to lookup 95 * @return this instance 96 * @throws EosException if an error occurs 97 */ 98 EosQuery andMetaRange(final String fieldName, 99 final String lowerBoundValue, 100 final String upperBoundValue) throws EosException; 101 102 /** 103 * Adds a meta entry for a special field to lookup with the boolean 104 * {@literal or} operation. The two value parameters spans a range between 105 * the lower bound value and the upper bound value. 106 * @param fieldName the meta field name to lookup 107 * @param lowerBoundValue the meta lower bound value to lookup 108 * @param upperBoundValue the meta upper bound value to lookup 109 * @return this instance 110 * @throws EosException if an error occurs 111 */ 112 EosQuery orMetaRange(final String fieldName, 113 final String lowerBoundValue, 114 final String upperBoundValue) throws EosException; 115 116 /** 117 * Creates the executable query. 118 * @return the executable query 119 * @throws EosException if an error occurs 120 */ 121 List<LookupEntry> execute() throws EosException; 122 }