@Override public List<Object> getResultSetMapping() { return mdDelegate.getResultSetMapping(); }
/** * This method repeats logic of DataDomainQueryAction.interceptObjectConversion() method. * The difference is that iterator(or batchIterator) doesn't support "mixed" results. */ private boolean isObjectArrayResult(QueryMetadata md) { List<Object> resultMapping = md.getResultSetMapping(); if(resultMapping == null) { return false; } if (md.isSingleResultSetMapping()) { return !(resultMapping.get(0) instanceof EntityResultSegment); } else { return true; } }
private List toClientObjects(List serverObjects) { if (!serverObjects.isEmpty()) { List<Object> rsMapping = serverMetadata.getResultSetMapping(); if (rsMapping == null) { return singleObjectConversion(serverObjects); } else { if (rsMapping.size() == 1) { if (rsMapping.get(0) instanceof EntityResultSegment) { return singleObjectConversion(serverObjects); } else { // we can return a single scalar result unchanged (hmm... a scalar // Object[] can also be returned unchanged)... return serverObjects; } } else { return processMixedResult(serverObjects, rsMapping); } } } return new ArrayList<>(3); }
public EJBQLTranslationContext(EntityResolver entityResolver, EJBQLQuery query, EJBQLCompiledExpression compiledExpression, EJBQLTranslatorFactory translatorFactory, QuotingStrategy quotingStrategy) { this.entityResolver = entityResolver; this.compiledExpression = compiledExpression; this.resultSetMetadata = query.getMetaData(entityResolver).getResultSetMapping(); this.namedParameters = query.getNamedParameters(); this.positionalParameters = query.getPositionalParameters(); this.translatorFactory = translatorFactory; this.usingAliases = true; this.caseInsensitive = false; this.queryMetadata = query.getMetaData(entityResolver); this.quotingStrategy = quotingStrategy; // buffer stack will hold named buffers during translation in the order they were // requested this.bufferStack = new ArrayList<>(); // buffer chain will hold named and unnamed buffers in the order they should be // concatenated this.bufferChain = new ArrayList<>(); stackTop = new StringBuilder(); bufferChain.add(stackTop); bufferStack.add(stackTop); }
List<Object> rsMapping = metadata.getResultSetMapping(); int width = rsMapping.size();
@Override IncrementalListHelper createHelper(QueryMetadata metadata) { // first compile some meta data about results indexToEntity = new HashMap<>(); scalarResult = true; for(Object next : metadata.getResultSetMapping()) { if(next instanceof EntityResultSegment) { EntityResultSegment resultSegment = (EntityResultSegment)next; ObjEntity entity = resultSegment.getClassDescriptor().getEntity(); // store entity's PK position in result indexToEntity.put(resultSegment.getColumnOffset(), entity); scalarResult = false; } } // if there is no entities in this results, // than all data is already there and we don't need to resolve any objects if(indexToEntity.isEmpty()) { return new ScalarArrayListHelper(); } else { return new MixedArrayListHelper(); } }
@Override void convert(List<DataRow> mainRows) { PrefetchTreeNode prefetchTree = metadata.getPrefetchTree(); List<Object> rsMapping = metadata.getResultSetMapping(); EntityResultSegment resultSegment = null; if(rsMapping != null && !rsMapping.isEmpty()) { resultSegment = (EntityResultSegment)rsMapping.get(0); } ClassDescriptor descriptor = resultSegment == null ? metadata.getClassDescriptor() : resultSegment.getClassDescriptor(); PrefetchProcessorNode node = toResultsTree(descriptor, prefetchTree, mainRows); List<Persistent> objects = node.getObjects(); updateResponse(mainRows, objects != null ? objects : new ArrayList<>(1)); // apply POST_LOAD callback LifecycleCallbackRegistry callbackRegistry = context.getEntityResolver().getCallbackRegistry(); if (!callbackRegistry.isEmpty(LifecycleEvent.POST_LOAD)) { performPostLoadCallbacks(node, callbackRegistry); } } }
boolean haveObjects = metadata.getResultSetMapping() == null; if(!haveObjects) { for (Object next : metadata.getResultSetMapping()) { if(next instanceof EntityResultSegment) { haveObjects = true;
@Override protected boolean interceptPaginatedQuery() { if (metadata.getPageSize() > 0) { Integer maxIdQualifierSize = actingDataContext.getParentDataDomain().getMaxIdQualifierSize(); List<?> paginatedList; List<Object> rsMapping = metadata.getResultSetMapping(); boolean mixedResults = false; if(rsMapping != null) { if(rsMapping.size() > 1) { mixedResults = true; } else if(rsMapping.size() == 1) { mixedResults = !(rsMapping.get(0) instanceof EntityResultSegment) || !metadata.isSingleResultSetMapping(); } } if(mixedResults) { paginatedList = new MixedResultIncrementalFaultList<>(actingDataContext, query, maxIdQualifierSize); } else { DbEntity dbEntity = metadata.getDbEntity(); if (dbEntity != null && dbEntity.getPrimaryKeys().size() == 1) { paginatedList = new SimpleIdIncrementalFaultList<>(actingDataContext, query, maxIdQualifierSize); } else { paginatedList = new IncrementalFaultList<>(actingDataContext, query, maxIdQualifierSize); } } response = new ListResponse(paginatedList); return DONE; } return !DONE; }
@SuppressWarnings("unchecked") private void interceptObjectConversion() { if (context != null && !metadata.isFetchingDataRows()) { List mainRows = response.firstList(); // List<DataRow> or List<Object[]> if (mainRows != null && !mainRows.isEmpty()) { ObjectConversionStrategy<?> converter; List<Object> rsMapping = metadata.getResultSetMapping(); if (rsMapping == null) { converter = new SingleObjectConversionStrategy(); } else { if (metadata.isSingleResultSetMapping()) { if (rsMapping.get(0) instanceof EntityResultSegment) { converter = new SingleObjectConversionStrategy(); } else { converter = new SingleScalarConversionStrategy(); } } else { converter = new MixedConversionStrategy(); } } converter.convert(mainRows); } } }
adapter.getExtendedTypes(), attributeOverrides); List<Object> rsMapping = queryMetadata.getResultSetMapping(); if (rsMapping == null) { return createFullRowReader(descriptor, queryMetadata, postProcessorFactory);
/** * Copies values of another QueryMetadata object to this object. */ void copyFromInfo(QueryMetadata info) { this.lastEntityResolver = null; this.lastRoot = null; this.classDescriptor = null; this.dbEntity = null; this.dataMap = null; this.fetchingDataRows = info.isFetchingDataRows(); this.fetchLimit = info.getFetchLimit(); this.pageSize = info.getPageSize(); this.cacheStrategy = info.getCacheStrategy(); this.cacheKey = info.getCacheKey(); this.cacheGroup = info.getCacheGroup(); this.resultSetMapping = info.getResultSetMapping(); setPrefetchTree(info.getPrefetchTree()); }
String sourceExpression = context.getCompiledExpression().getSource(); List<Object> resultSetMapping = context.getMetadata().getResultSetMapping(); for (Object mapping : resultSetMapping) { if (mapping instanceof EntityResultSegment) {