public static UriInfoImpl constructDeepReadForRoot(EdmEntitySet edmEntitySet, String serviceName, List<KeyPredicate> keyPredicates) throws ODataException { UriInfoImpl uriInfoForRead = new UriInfoImpl(); uriInfoForRead.setStartEntitySet(edmEntitySet); uriInfoForRead.setTargetEntitySet(edmEntitySet); Map<String,List<String>> compositionTree = CSNUtil.getCompositionTree(serviceName, edmEntitySet.getName()); List<ArrayList<NavigationPropertySegment>> expandOption = new ArrayList<>(); constructTreeExpand(edmEntitySet, serviceName, compositionTree, new ArrayList<>(), expandOption); uriInfoForRead.setKeyPredicates(keyPredicates); uriInfoForRead.setTargetType(edmEntitySet.getEntityType()); uriInfoForRead.setExpand(expandOption); return uriInfoForRead; }
private UriInfoImpl getDeleteUriInfo(UriInfoImpl uriInfoForRead, String navigationName, Map<String, Object> navigatedData, boolean isDraft) throws EdmException { UriInfoImpl uriInfoForDelete = new UriInfoImpl(); EdmEntitySet entitySet = this.getTargetEntitySetFromNavigation(uriInfoForRead, navigationName); if(entitySet != null) { List<KeyPredicate> keyPredicates = this.getKeys(entitySet, navigatedData, isDraft); uriInfoForDelete.setStartEntitySet(entitySet); uriInfoForDelete.setTargetEntitySet(entitySet); uriInfoForDelete.setKeyPredicates(keyPredicates); } return uriInfoForDelete; }
private static UriInfoDraftHelperV2 transFormerForDelete(Map<String, Object> ent, EdmEntitySet entSet) throws ODataException { UriInfoDraftHelperV2 uriT=new UriInfoDraftHelperV2(); //Create the UriInfoForCreate //Extract Keys from Entity UriInfoImpl uriInfoForDelete = new UriInfoImpl(); uriInfoForDelete.setStartEntitySet(entSet); uriInfoForDelete.setTargetEntitySet(entSet); uriInfoForDelete.setKeyPredicates(DraftUtilsV2.extractKeyPredicateRefsEntity(ent, entSet.getEntityType())); uriT.setUriInfo(uriInfoForDelete); uriT.setUriFunction(UriFunction.DELETE); return uriT; }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
uriInfoForRead.setKeyPredicates(this.getKeysFromFunctionImportParams(uriInfo, false));
private IDataProviderResponse handleActionForDraftActivateFromNew(UriInfo uriInfo, String serviceName, ODataContext context, Map<String, Object> draftEntity, String requestContentType, ODataEntityProviderPropertiesBuilder providerPropertiesBuilder) throws ODataException { //From the Expanded draftEntity Create multiple UriInfo and deserializers and orchestrate as necessary EdmEntitySet entitySet = EDMHelper.getEdmEntitySet(uriInfo, null); Map<UUID, UriInfoDraftHelperV2> createMap = UriInfoTransformerBuilder.createDeepUriInfo(draftEntity, entitySet, DraftFlow.DRAFT_ACTIVATE_FROMNEW); String msg = "Total Creates :: " +createMap.size(); logger.debug(msg); //Look back how to handle connection close for draft activation from new isBatchRequest = true; for(Entry<UUID, UriInfoDraftHelperV2> entry : createMap.entrySet()) { UriInfoDraftHelperV2 uriTras=entry.getValue(); //Clear Deserializer of Navigation Links uriTras.getUriInfo().getStartEntitySet().getEntityType().getNavigationPropertyNames().clear(); uriTras.getUriInfo().getTargetEntitySet().getEntityType().getNavigationPropertyNames().clear(); this.createEntityNonDraftFlow(uriTras.getUriInfo(), uriTras.getContent(), requestContentType, providerPropertiesBuilder, context); } UriInfoImpl uriInfoForRead = UriInfoTransformerBuilder.constructDeepReadForDraftRoot(entitySet, serviceName); uriInfoForRead.setKeyPredicates(this.getKeysFromFunctionImportParams(uriInfo, false)); //Remove all traces of draft properties. this.removeAllDraftTraces(uriInfoForRead); Map<String, Object> activeEntity = dataProvider.readDataFromMainTable(uriInfoForRead, context, DraftUtilsV2.extractKeyPredicateFilterExpressions(uriInfoForRead, false)); //Change to deep read from main table BaseDataProviderResponse entity = new BaseDataProviderResponse(); entity.setResultEntity(activeEntity); isBatchRequest = false; return entity; }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
private IDataProviderResponse handleActionForDraftPrepare(GetFunctionImportUriInfo uriInfo, ODataContext context) throws ODataException { startTransaction(); dataProvider.setIsDraftFlow(true); controlTransaction=true; List<PathSegment> precedingSegments = context.getPathInfo().getPrecedingSegments(); String serviceName = precedingSegments.get(precedingSegments.size() - 1).getPath(); EdmEntitySet entitySet = EDMHelper.getEdmEntitySet((UriInfo)uriInfo, HeaderUtil.getlocale(context)); final UriInfoImpl uriInfoForRead = UriInfoTransformerBuilder.constructDeepReadForDraftRoot(entitySet, serviceName); uriInfoForRead.setKeyPredicates(this.getKeysFromFunctionImportParams(uriInfo, true)); IDataProviderResponse response = draftProvider.readDataFromDraftsTable((UriInfo)uriInfoForRead, context, DraftUtilsV2.extractKeyPredicateFilterExpressions(uriInfoForRead, false), dataProvider.getDSParams()); commitTransaction(); controlTransaction=false; if (!isBatchRequest() && !controlTransaction){ cleanupTransaction(); } return response; }
((UriInfoImpl) createView).setKeyPredicates(predicates); ((UriInfoImpl) createView).setRawEntity(false);
uriInfoForRead.setKeyPredicates(this.getKeysFromFunctionImportParams(uriInfo, false));
uriInfoForRead.setKeyPredicates(this.getKeysFromFunctionImportParams(uriInfo, false)); List<String> filters = DraftUtilsV2.extractKeyPredicateFilterExpressions((UriInfo)uriInfoForRead, false);
uriInfoForParentRead.setStartEntitySet(uriInfo.getStartEntitySet()); uriInfoForParentRead.setTargetEntitySet(uriInfo.getStartEntitySet()); uriInfoForParentRead.setKeyPredicates(uriInfo.getKeyPredicates()); IDataProviderResponse parentDraftResponse = draftProvider.readDataFromDraftsTable( uriInfoForParentRead, context, DraftUtilsV2.extractKeyPredicateFilterExpressions(uriInfoForParentRead, true), dataProvider.getDSParams());
private static UriInfoDraftHelperV2 transFormerForUpdate(Map<String, Object> ent, EdmEntitySet entSet, DraftFlow flow) throws ODataException { UriInfoDraftHelperV2 uriT=new UriInfoDraftHelperV2(); //Create the uriInfoForUpdate //Extract Keys from Entity UriInfoImpl uriInfoForUpdate = new UriInfoImpl(); uriInfoForUpdate.setStartEntitySet(entSet); uriInfoForUpdate.setTargetEntitySet(entSet); uriInfoForUpdate.setKeyPredicates(DraftUtilsV2.extractKeyPredicateRefsEntity(ent, entSet.getEntityType())); //Create the Deserializer //Remove any links and navigation links . We only want to create payload for a single level if(flow.equals(DraftFlow.DRAFT_ACTIVATE_FROMEXISTING)) { washDraftEntity(ent); } //Clean up navigation properties as Olingo V2 update doesn't allow them. ODataEntryImpl data = new ODataEntryImpl(washNavigationEntity(ent), null, null, null, false); uriT.setUriInfo(uriInfoForUpdate); uriT.setContent(data); uriT.setUriFunction(UriFunction.UPDATE); return uriT; }