diff options
author | rescobar | 2010-09-17 02:16:28 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2010-09-17 02:16:28 +0000 |
commit | c443fd722b994f018e0ff763b198616dea1bb1c0 (patch) | |
tree | dbf2aac35876ca57979b65572f4513697b668d54 /plugins/org.eclipse.osee.framework.manager.servlet | |
parent | 6325b1293702f722cd272761741fbebbc1a8cbb7 (diff) | |
download | org.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.tar.gz org.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.tar.xz org.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.zip |
bug[ats_UNJKK]: Implement server-side change to use search request/response messages
Diffstat (limited to 'plugins/org.eclipse.osee.framework.manager.servlet')
2 files changed, 60 insertions, 83 deletions
diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java index b6f6a12810b..6d9edadd097 100644 --- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java +++ b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java @@ -11,27 +11,20 @@ package org.eclipse.osee.framework.manager.servlet; import java.io.IOException; -import java.io.StringWriter; +import java.io.InputStream; import java.util.logging.Level; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.eclipse.osee.framework.core.model.cache.AttributeTypeCache; -import org.eclipse.osee.framework.core.model.type.AttributeType; -import org.eclipse.osee.framework.core.operation.IOperation; -import org.eclipse.osee.framework.core.operation.Operations; +import org.eclipse.osee.framework.core.enums.CoreTranslatorId; +import org.eclipse.osee.framework.core.message.SearchRequest; +import org.eclipse.osee.framework.core.message.SearchResponse; import org.eclipse.osee.framework.core.server.ISessionManager; import org.eclipse.osee.framework.core.server.SecureOseeHttpServlet; -import org.eclipse.osee.framework.database.core.JoinUtility; -import org.eclipse.osee.framework.database.core.JoinUtility.ArtifactJoinQuery; +import org.eclipse.osee.framework.core.translation.IDataTranslationService; import org.eclipse.osee.framework.jdk.core.util.Lib; -import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.manager.servlet.data.HttpSearchInfo; import org.eclipse.osee.framework.manager.servlet.internal.Activator; import org.eclipse.osee.framework.search.engine.ISearchEngine; -import org.eclipse.osee.framework.search.engine.SearchOptions.SearchOptionsEnum; -import org.eclipse.osee.framework.search.engine.SearchResult; -import org.eclipse.osee.framework.search.engine.SearchResultToXmlOperation; /** * @author Roberto E. Escobar @@ -41,95 +34,80 @@ public class SearchEngineServlet extends SecureOseeHttpServlet { private static final long serialVersionUID = 3722992788943330970L; private final ISearchEngine searchEngine; - private final AttributeTypeCache attributeTypeCache; + private final IDataTranslationService translationService; - public SearchEngineServlet(ISessionManager sessionManager, ISearchEngine searchEngine, AttributeTypeCache attributeTypeCache) { + public SearchEngineServlet(ISessionManager sessionManager, ISearchEngine searchEngine, IDataTranslationService translationService) { super(sessionManager); this.searchEngine = searchEngine; - this.attributeTypeCache = attributeTypeCache; + this.translationService = translationService; } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { - HttpSearchInfo searchInfo = HttpSearchInfo.loadFromPost(request); + SearchRequest searchRequest = + translationService.convert(request.getInputStream(), CoreTranslatorId.SEARCH_REQUEST); - String clientVersion = ModCompatible.getClientVersion(getSessionManager(), request.getParameter("sessionId")); - boolean isCompatible = ModCompatible.is_0_9_2_Compatible(clientVersion); - - executeSearch(isCompatible, searchInfo, response); - } catch (Exception ex) { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.setContentType("text/plain"); - OseeLog.log(Activator.class, Level.SEVERE, - String.format("Failed to respond to a search engine servlet request [%s]", request.getRequestURL()), ex); - response.getWriter().write(Lib.exceptionToString(ex)); - } - } - - private void executeSearch(boolean isCompatible, HttpSearchInfo searchInfo, HttpServletResponse response) throws IOException { - try { - String[] attributeTypeGuids = searchInfo.getAttributeTypeGuids(); - AttributeType[] attributeTypes = new AttributeType[attributeTypeGuids.length]; - - int index = 0; - for (String attributeTypeValue : attributeTypeGuids) { - if (!isCompatible) { - attributeTypes[index++] = attributeTypeCache.getBySoleName(attributeTypeValue); - } else { - attributeTypes[index++] = attributeTypeCache.getByGuid(attributeTypeValue); - } - } - - SearchResult results = - searchEngine.search(searchInfo.getQuery(), searchInfo.getId(), searchInfo.getOptions(), attributeTypes); - StringWriter writer = new StringWriter(); - IOperation operation = new SearchResultToXmlOperation(results, writer); - Operations.executeWork(operation); + SearchResponse searchResponse = new SearchResponse(); + searchEngine.search(searchRequest, searchResponse); response.setStatus(HttpServletResponse.SC_ACCEPTED); - response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); - response.getWriter().write(writer.toString()); + response.setCharacterEncoding("UTF-8"); - if (results.isEmpty() && Strings.isValid(results.getErrorMessage())) { + InputStream inputStream = translationService.convertToStream(searchResponse, CoreTranslatorId.SEARCH_RESPONSE); + Lib.inputStreamToOutputStream(inputStream, response.getOutputStream()); - sendEmptyAsXml(response, results); - } else if (!results.isEmpty()) { - long start = System.currentTimeMillis(); - if (!searchInfo.getOptions().getBoolean(SearchOptionsEnum.as_xml.asStringOption())) { - sendAsDbJoin(response, results); - } else { - response.setCharacterEncoding("UTF-8"); - response.setContentType("text/xml"); - sendAsXml(response, results); - } - System.out.println(String.format("Search for [%s] - [%d results sent in %d ms]", searchInfo.getQuery(), - results.size(), System.currentTimeMillis() - start)); - } else { - response.setCharacterEncoding("UTF-8"); - response.setContentType("text/plain"); - } } catch (Exception ex) { + OseeLog.log(Activator.class, Level.SEVERE, + String.format("Failed to respond to a search engine servlet request [%s]", request.getRequestURL()), ex); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.setContentType("text/plain"); - OseeLog.log(Activator.class, Level.SEVERE, - String.format("Failed to respond to a search engine servlet request [%s]", searchInfo.toString()), ex); response.getWriter().write(Lib.exceptionToString(ex)); + response.getWriter().flush(); + response.getWriter().close(); } } - private void sendAsDbJoin(HttpServletResponse response, SearchResult results) throws Exception { - response.setCharacterEncoding("UTF-8"); - response.setContentType("text/plain"); + // StringWriter writer = new StringWriter(); + // IOperation operation = new SearchResultToXmlOperation(results, writer); + // Operations.executeWork(operation); + // + // response.setStatus(HttpServletResponse.SC_ACCEPTED); + // response.setCharacterEncoding("UTF-8"); + // response.setContentType("text/xml"); + // response.getWriter().write(writer.toString()); + // + // if (results.isEmpty() && Strings.isValid(results.getErrorMessage())) { + // + // sendEmptyAsXml(response, results); + // } else if (!results.isEmpty()) { + // long start = System.currentTimeMillis(); + // if (!searchInfo.getOptions().getBoolean(SearchOptionsEnum.as_xml.asStringOption())) { + // sendAsDbJoin(response, results); + // } else { + // response.setCharacterEncoding("UTF-8"); + // response.setContentType("text/xml"); + // sendAsXml(response, results); + // } + // System.out.println(String.format("Search for [%s] - [%d results sent in %d ms]", searchInfo.getQuery(), + // results.size(), System.currentTimeMillis() - start)); + // } else { + // response.setCharacterEncoding("UTF-8"); + // response.setContentType("text/plain"); + // } + // private void sendAsDbJoin(HttpServletResponse response, SearchResult results) throws Exception { + // response.setCharacterEncoding("UTF-8"); + // response.setContentType("text/plain"); + // + // ArtifactJoinQuery joinQuery = JoinUtility.createArtifactJoinQuery(); + // for (Integer branchId : results.getBranchIds()) { + // for (Integer artId : results.getArtifactIds(branchId)) { + // joinQuery.add(artId, branchId); + // } + // } + // joinQuery.store(); + // response.getWriter().write(String.format("%d,%d", joinQuery.getQueryId(), joinQuery.size())); + // } - ArtifactJoinQuery joinQuery = JoinUtility.createArtifactJoinQuery(); - for (Integer branchId : results.getBranchIds()) { - for (Integer artId : results.getArtifactIds(branchId)) { - joinQuery.add(artId, branchId); - } - } - joinQuery.store(); - response.getWriter().write(String.format("%d,%d", joinQuery.getQueryId(), joinQuery.size())); - } } diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java index d7a1555b245..e71c13d56f2 100644 --- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java +++ b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java @@ -118,8 +118,7 @@ public class ServletRegistrationHandler extends AbstractTrackingHandler { OseeServerContext.BRANCH_EXCHANGE_CONTEXT); register(new BranchManagerServlet(sessionManager, branchService, translationService), OseeServerContext.BRANCH_CONTEXT); - register(new SearchEngineServlet(sessionManager, search, caching.getAttributeTypeCache()), - OseeServerContext.SEARCH_CONTEXT); + register(new SearchEngineServlet(sessionManager, search, translationService), OseeServerContext.SEARCH_CONTEXT); register(new SearchEngineTaggerServlet(sessionManager, tagger), OseeServerContext.SEARCH_TAGGING_CONTEXT); register(new ServerLookupServlet(serverLookup, appServerManager), OseeServerContext.LOOKUP_CONTEXT); register(new SessionManagementServlet(sessionManager, authenticationManager), OseeServerContext.SESSION_CONTEXT); |