diff options
Diffstat (limited to 'plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java')
-rw-r--r-- | plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java deleted file mode 100644 index b60d4884344..00000000000 --- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/OseeCacheServlet.java +++ /dev/null @@ -1,292 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.framework.manager.servlet; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.eclipse.osee.framework.core.data.IArtifactType; -import org.eclipse.osee.framework.core.data.IAttributeType; -import org.eclipse.osee.framework.core.data.IOseeBranch; -import org.eclipse.osee.framework.core.data.IRelationType; -import org.eclipse.osee.framework.core.enums.CacheOperation; -import org.eclipse.osee.framework.core.enums.CoreTranslatorId; -import org.eclipse.osee.framework.core.enums.OseeCacheEnum; -import org.eclipse.osee.framework.core.enums.RelationTypeMultiplicity; -import org.eclipse.osee.framework.core.enums.StorageState; -import org.eclipse.osee.framework.core.exception.OseeExceptions; -import org.eclipse.osee.framework.core.message.ArtifactTypeCacheUpdateResponse; -import org.eclipse.osee.framework.core.message.ArtifactTypeCacheUpdateResponse.ArtifactTypeRow; -import org.eclipse.osee.framework.core.message.AttributeTypeCacheUpdateResponse; -import org.eclipse.osee.framework.core.message.CacheUpdateRequest; -import org.eclipse.osee.framework.core.message.OseeEnumTypeCacheUpdateResponse; -import org.eclipse.osee.framework.core.message.RelationTypeCacheUpdateResponse; -import org.eclipse.osee.framework.core.message.RelationTypeCacheUpdateResponse.RelationTypeRow; -import org.eclipse.osee.framework.core.model.type.AttributeType; -import org.eclipse.osee.framework.core.server.UnsecuredOseeHttpServlet; -import org.eclipse.osee.framework.core.translation.IDataTranslationService; -import org.eclipse.osee.framework.core.translation.ITranslatorId; -import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.type.Pair; -import org.eclipse.osee.framework.jdk.core.type.Triplet; -import org.eclipse.osee.framework.jdk.core.util.Lib; -import org.eclipse.osee.framework.manager.servlet.internal.ApplicationContextFactory; -import org.eclipse.osee.logger.Log; -import org.eclipse.osee.orcs.ApplicationContext; -import org.eclipse.osee.orcs.OrcsApi; -import org.eclipse.osee.orcs.OrcsTypes; -import org.eclipse.osee.orcs.data.ArtifactTypes; -import org.eclipse.osee.orcs.data.AttributeTypes; -import org.eclipse.osee.orcs.data.EnumEntry; -import org.eclipse.osee.orcs.data.EnumType; -import org.eclipse.osee.orcs.data.EnumTypes; -import org.eclipse.osee.orcs.data.RelationTypes; - -/** - * @author Roberto E. Escobar - */ -public class OseeCacheServlet extends UnsecuredOseeHttpServlet { - - private static final long serialVersionUID = 6693534844874109524L; - private final IDataTranslationService translationService; - private final OrcsApi orcsApi; - private static final StorageState DEFAULT_STORAGE_STATE = StorageState.CREATED; - - public OseeCacheServlet(Log logger, IDataTranslationService translationService, OrcsApi orcsApi) { - super(logger); - this.translationService = translationService; - this.orcsApi = orcsApi; - } - - public IDataTranslationService getTranslationService() { - return translationService; - } - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) { - OseeCacheEnum cacheId = OseeCacheEnum.valueOf(req.getParameter("cacheId")); - try { - IDataTranslationService service = getTranslationService(); - ApplicationContext context = createAppContext(req); - OrcsTypes orcsTypes = orcsApi.getOrcsTypes(context); - Pair<Object, ITranslatorId> pair = createResponse(new CacheUpdateRequest(cacheId), orcsTypes); - resp.setStatus(HttpServletResponse.SC_ACCEPTED); - resp.setContentType("text/xml"); - resp.setCharacterEncoding("UTF-8"); - InputStream inputStream = service.convertToStream(pair.getFirst(), pair.getSecond()); - OutputStream outputStream = resp.getOutputStream(); - Lib.inputStreamToOutputStream(inputStream, outputStream); - } catch (Exception ex) { - getLogger().error(ex, "Error acquiring cache [%s]", cacheId); - } - } - - @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - try { - CacheOperation operation = CacheOperation.fromString(req.getParameter("function")); - switch (operation) { - case UPDATE: - ApplicationContext context = createAppContext(req); - OrcsTypes orcsTypes = orcsApi.getOrcsTypes(context); - sendUpdates(req, resp, orcsTypes); - break; - default: - throw new UnsupportedOperationException(); - } - } catch (Exception ex) { - handleError(resp, req.toString(), ex); - } - } - - private ApplicationContext createAppContext(HttpServletRequest req) { - String sessionId = req.getParameter("sessionId"); - return ApplicationContextFactory.createContext(sessionId); - } - - private void handleError(HttpServletResponse resp, String request, Throwable th) throws IOException { - getLogger().error(th, "Osee Cache request error: [%s]", request); - resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - resp.setContentType("text/plain"); - resp.getWriter().write(Lib.exceptionToString(th)); - resp.getWriter().flush(); - resp.getWriter().close(); - } - - private void sendUpdates(HttpServletRequest req, HttpServletResponse resp, OrcsTypes orcsTypes) throws OseeCoreException { - IDataTranslationService service = getTranslationService(); - - CacheUpdateRequest updateRequest = null; - InputStream inputStream = null; - try { - inputStream = req.getInputStream(); - updateRequest = service.convert(inputStream, CoreTranslatorId.OSEE_CACHE_UPDATE_REQUEST); - } catch (IOException ex) { - OseeExceptions.wrapAndThrow(ex); - } finally { - Lib.close(inputStream); - } - - OutputStream outputStream = null; - try { - Pair<Object, ITranslatorId> pair = createResponse(updateRequest, orcsTypes); - - resp.setStatus(HttpServletResponse.SC_ACCEPTED); - resp.setContentType("text/xml"); - resp.setCharacterEncoding("UTF-8"); - - inputStream = service.convertToStream(pair.getFirst(), pair.getSecond()); - outputStream = resp.getOutputStream(); - Lib.inputStreamToOutputStream(inputStream, outputStream); - } catch (IOException ex) { - OseeExceptions.wrapAndThrow(ex); - } - } - - private Pair<Object, ITranslatorId> createResponse(CacheUpdateRequest updateRequest, OrcsTypes orcsTypes) throws OseeCoreException { - Object response = null; - ITranslatorId transalatorId = null; - switch (updateRequest.getCacheId()) { - case ARTIFACT_TYPE_CACHE: - response = createArtifactTypeCacheUpdateResponse(orcsTypes); - transalatorId = CoreTranslatorId.ARTIFACT_TYPE_CACHE_UPDATE_RESPONSE; - break; - case ATTRIBUTE_TYPE_CACHE: - response = createAttributeTypeCacheUpdateResponse(orcsTypes); - transalatorId = CoreTranslatorId.ATTRIBUTE_TYPE_CACHE_UPDATE_RESPONSE; - break; - case OSEE_ENUM_TYPE_CACHE: - response = createOseeEnumTypeCacheUpdateResponse(orcsTypes); - transalatorId = CoreTranslatorId.OSEE_ENUM_TYPE_CACHE_UPDATE_RESPONSE; - break; - case RELATION_TYPE_CACHE: - response = createRelationTypeCacheUpdateResponse(orcsTypes); - transalatorId = CoreTranslatorId.RELATION_TYPE_CACHE_UPDATE_RESPONSE; - break; - default: - throw new OseeArgumentException("Invalid cacheId [%s]", updateRequest.getCacheId()); - } - return new Pair<Object, ITranslatorId>(response, transalatorId); - } - - private ArtifactTypeCacheUpdateResponse createArtifactTypeCacheUpdateResponse(OrcsTypes orcsTypes) throws OseeCoreException { - List<ArtifactTypeRow> rows = new ArrayList<ArtifactTypeRow>(); - Map<Long, Long[]> baseToSuper = new HashMap<Long, Long[]>(); - List<Triplet<Long, Long, Long>> artAttrs = new ArrayList<Triplet<Long, Long, Long>>(); - ArtifactTypes artTypes = orcsTypes.getArtifactTypes(); - for (IArtifactType artType : artTypes.getAll()) { - long artTypeId = artType.getGuid(); - boolean isAbstract = artTypes.isAbstract(artType); - rows.add(new ArtifactTypeRow(artTypeId, artType.getGuid(), artType.getName(), isAbstract, - DEFAULT_STORAGE_STATE)); - - Collection<? extends IArtifactType> superTypes = artTypes.getSuperArtifactTypes(artType); - if (!superTypes.isEmpty()) { - Long[] intSuperTypes = new Long[superTypes.size()]; - int index = 0; - for (IArtifactType superType : superTypes) { - intSuperTypes[index++] = superType.getGuid(); - } - baseToSuper.put(artTypeId, intSuperTypes); - } - - Map<IOseeBranch, Collection<IAttributeType>> allTypes = artTypes.getAllAttributeTypes(artType); - for (Entry<IOseeBranch, Collection<IAttributeType>> entry : allTypes.entrySet()) { - IOseeBranch branch = entry.getKey(); - Collection<IAttributeType> attrTypes = entry.getValue(); - for (IAttributeType type : attrTypes) { - artAttrs.add(new Triplet<Long, Long, Long>(artType.getGuid(), branch.getUuid(), type.getGuid())); - } - - } - } - return new ArtifactTypeCacheUpdateResponse(rows, baseToSuper, artAttrs); - } - - private AttributeTypeCacheUpdateResponse createAttributeTypeCacheUpdateResponse(OrcsTypes orcsTypes) throws OseeCoreException { - List<AttributeType> rows = new ArrayList<AttributeType>(); - Map<Long, Long> attrToEnum = new HashMap<Long, Long>(); - AttributeTypes attrTypes = orcsTypes.getAttributeTypes(); - for (IAttributeType item : attrTypes.getAll()) { - String baseAttributeTypeId = attrTypes.getBaseAttributeTypeId(item); - String attributeProviderNameId = attrTypes.getAttributeProviderId(item); - String fileTypeExtension = attrTypes.getFileTypeExtension(item); - String defaultValue = attrTypes.getDefaultValue(item); - int minOccurrances = attrTypes.getMinOccurrences(item); - int maxOccurrences = attrTypes.getMaxOccurrences(item); - String description = attrTypes.getDescription(item); - String taggerId = attrTypes.getTaggerId(item); - String mediaType = attrTypes.getMediaType(item); - AttributeType type = - new AttributeType(item.getGuid(), item.getName(), baseAttributeTypeId, attributeProviderNameId, - fileTypeExtension, defaultValue, minOccurrances, maxOccurrences, description, taggerId, mediaType); - - long typeId = item.getGuid(); - type.setId(typeId); - rows.add(type); - - if (attrTypes.isEnumerated(item)) { - EnumType enumType = attrTypes.getEnumType(item); - attrToEnum.put(typeId, enumType.getGuid()); - } - - } - return new AttributeTypeCacheUpdateResponse(rows, attrToEnum); - } - - private RelationTypeCacheUpdateResponse createRelationTypeCacheUpdateResponse(OrcsTypes orcsTypes) throws OseeCoreException { - List<RelationTypeRow> rows = new ArrayList<RelationTypeRow>(); - RelationTypes relTypes = orcsTypes.getRelationTypes(); - for (IRelationType item : relTypes.getAll()) { - IArtifactType sideAType = relTypes.getArtifactTypeSideA(item); - IArtifactType sideBType = relTypes.getArtifactTypeSideB(item); - - String sideAName = relTypes.getSideAName(item); - String sideBName = relTypes.getSideBName(item); - RelationTypeMultiplicity multiplicity = relTypes.getMultiplicity(item); - String defaultOrderTypeGuid = relTypes.getDefaultOrderTypeGuid(item); - - rows.add(new RelationTypeRow(item.getGuid(), item.getName(), item.getGuid(), DEFAULT_STORAGE_STATE, sideAName, - sideBName, sideAType.getGuid(), sideBType.getGuid(), multiplicity, defaultOrderTypeGuid)); - } - return new RelationTypeCacheUpdateResponse(rows); - } - - private OseeEnumTypeCacheUpdateResponse createOseeEnumTypeCacheUpdateResponse(OrcsTypes orcsTypes) throws OseeCoreException { - List<String[]> enumTypeRows = new ArrayList<String[]>(); - List<String[]> enumEntryRows = new ArrayList<String[]>(); - EnumTypes enumTypes = orcsTypes.getEnumTypes(); - for (EnumType type : enumTypes.getAll()) { - enumTypeRows.add(new String[] { - String.valueOf(type.getGuid()), - DEFAULT_STORAGE_STATE.toString(), - String.valueOf(type.getGuid()), - type.getName()}); - for (EnumEntry entry : type.values()) { - enumEntryRows.add(new String[] { - String.valueOf(type.getGuid()), - entry.getName(), - String.valueOf(entry.ordinal()), - entry.getDescription()}); - } - } - return new OseeEnumTypeCacheUpdateResponse(enumTypeRows, enumEntryRows); - } -} |