001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.interfaces;
034:
035: import com.flexive.shared.exceptions.FxApplicationException;
036: import com.flexive.shared.search.FxResultSet;
037: import com.flexive.shared.search.FxSQLSearchParams;
038: import com.flexive.shared.search.ResultLocation;
039: import com.flexive.shared.search.ResultViewType;
040: import com.flexive.shared.search.query.QueryRootNode;
041:
042: import javax.ejb.Remote;
043: import java.util.Collection;
044:
045: @Remote
046: public interface SearchEngine {
047:
048: /**
049: * Executes a query.
050: *
051: * @param query the query to execute
052: * @param startIndex return data starting at the given row, 0 based
053: * @param fetchRows the maximum rows to fetch, or null to fetch all found entries
054: * @param params all additional search options
055: * @return the result set
056: * @throws FxApplicationException if the search failed
057: */
058: public FxResultSet search(String query, final int startIndex,
059: final Integer fetchRows, FxSQLSearchParams params)
060: throws FxApplicationException;
061:
062: /**
063: * Executes a query.
064: *
065: * @param query the query to execute
066: * @param startIndex return data starting at the given row, 0 based
067: * @param fetchRows the maximum rows to fetch, or null to fetch all found entries
068: * @param params all additional search options
069: * @param location the result location
070: * @param viewType the result view type
071: * @return the result set
072: * @throws FxApplicationException if the search failed
073: */
074: public FxResultSet search(String query, final int startIndex,
075: final Integer fetchRows, FxSQLSearchParams params,
076: ResultLocation location, ResultViewType viewType)
077: throws FxApplicationException;
078:
079: /**
080: * Returns the last time that any content that affects queries was changed.
081: *
082: * @param live if true only the last changes of live contents are checked
083: * @return the last time that any content that affects queries was changed
084: */
085: public long getLastContentChange(boolean live);
086:
087: /**
088: * Store the given query for the current user.
089: *
090: * @param query the query to be stored
091: * @throws FxApplicationException TODO
092: */
093: void save(QueryRootNode query) throws FxApplicationException;
094:
095: /**
096: * Sets the user-defined default query for the query's type and location.
097: *
098: * @param query the query to be stored
099: * @throws FxApplicationException if the default query could not be set.
100: * @see com.flexive.shared.search.query.QueryRootNode#getType()
101: * @see com.flexive.shared.search.query.QueryRootNode#getLocation()
102: */
103: void saveDefault(QueryRootNode query) throws FxApplicationException;
104:
105: /**
106: * Sets the system-wide default query for the query's type and location.
107: * Only the global supervisor may set the default query.
108: *
109: * @param query the default query to be set
110: * @throws FxApplicationException if the default query could not be set, or
111: * the caller lacks supervisor privileges
112: * @see com.flexive.shared.search.query.QueryRootNode#getType()
113: * @see com.flexive.shared.search.query.QueryRootNode#getLocation()
114: */
115: void saveSystemDefault(QueryRootNode query)
116: throws FxApplicationException;
117:
118: /**
119: * Load the query of the given name, for the current user.
120: *
121: * @param location the query location
122: * @param name query to be loaded @return the loaded query tree
123: * @throws FxApplicationException TODO
124: * @throws com.flexive.shared.exceptions.FxNotFoundException if the query does not exist
125: * @return the query root node
126: */
127: QueryRootNode load(ResultLocation location, String name)
128: throws FxApplicationException;
129:
130: /**
131: * Load the default query for the given type/location. If none is set, an empty query is returned.
132: *
133: * @param location the query location, usually matched to the location of its result
134: * @return the default query for the given type/location
135: * @throws FxApplicationException if the default query could not be loaded
136: */
137: QueryRootNode loadDefault(ResultLocation location)
138: throws FxApplicationException;
139:
140: /**
141: * Returns the names of the stored queries for the calling user/location. The query names
142: * are also the keys for retrieving the actual search query via
143: * {@link #load(com.flexive.shared.search.ResultLocation, String)}.
144: *
145: * @param location the query location, usually matched to the location of its result
146: * @return all stored queries for the given location of the current user
147: * @throws FxApplicationException if the query names could not be retrieved
148: */
149: Collection<String> loadNames(ResultLocation location)
150: throws FxApplicationException;
151:
152: /**
153: * Remove the query of the given name and type from the database.
154: *
155: * @param location the query location
156: * @param name the query to be removed @throws FxApplicationException TODO
157: * @throws com.flexive.shared.exceptions.FxApplicationException if the query could not be deleted
158: */
159: void remove(ResultLocation location, String name)
160: throws FxApplicationException;
161: }
|