public SQLTemplate getQuery() { // concatenate buffers... StringBuilder main = bufferChain.get(0); for (int i = 1; i < bufferChain.size(); i++) { main.append(bufferChain.get(i)); } String sql = main.length() > 0 ? main.toString() : null; SQLTemplate query = new SQLTemplate(compiledExpression .getRootDescriptor() .getObjectClass(), sql); query.setParams(boundParameters); return query; }
public boolean visitProperties(PropertyVisitor visitor) { checkDescriptorInitialized(); return descriptor.visitProperties(visitor); }
public Object createObject() { checkDescriptorInitialized(); return descriptor.createObject(); }
DataRowPostProcessor(ClassDescriptor classDescriptor, Map<String, Collection<ColumnOverride>> columnOverrides) { if (classDescriptor != null && classDescriptor.hasSubclasses()) { this.inheritanceTree = classDescriptor.getEntityInheritanceTree(); this.columnOverrides = columnOverrides; } else { if (columnOverrides.size() != 1) { throw new IllegalArgumentException("No inheritance - there must be only one override set"); } defaultOverrides = columnOverrides.values().iterator().next(); } }
seen.put(id, target); descriptor = descriptor.getSubclassDescriptor(peerInParentContext.getClass()); descriptor.visitProperties(new PropertyVisitor() {
ObjectResolver(DataContext context, ClassDescriptor descriptor, boolean refresh) { // sanity check if (descriptor == null || descriptor.getEntity() == null) { // possible cause: query that is not expected to have result set somehow got it.. throw new CayenneRuntimeException("No ClassDescriptor. Maybe DataRows should be fetched instead of objects."); } DbEntity dbEntity = descriptor.getEntity().getDbEntity(); if (dbEntity == null) { throw new CayenneRuntimeException("ObjEntity '%s' has no DbEntity.", descriptor.getEntity().getName()); } this.primaryKey = dbEntity.getPrimaryKeys(); if (primaryKey.size() == 0) { throw new CayenneRuntimeException("Won't be able to create ObjectId for '%s'. Reason: DbEntity " + "'%s' has no Primary Key defined.", descriptor.getEntity().getName(), dbEntity.getName()); } this.context = context; this.cache = context.getObjectStore().getDataRowCache(); this.refreshObjects = refresh; this.descriptor = descriptor; this.descriptorResolutionStrategy = descriptor.hasSubclasses() ? new InheritanceStrategy() : new NoInheritanceStrategy(); }
throw new EJBQLException("the entity variable '" + id +"' does not refer to any entity in the FROM clause"); final EntityResult entityResult = new EntityResult(descriptor.getObjectClass()); final String prefix = "ec" + position + "_"; final int[] index = { descriptor.visitAllProperties(visitor); for (String pkName : descriptor.getEntity().getPrimaryKeyNames()) { if (visited.add(pkName)) { entityResult.addDbField(pkName, prefix + index[0]++); for (ObjAttribute column : descriptor.getDiscriminatorColumns()) {
/** * @since 1.2 */ public ObjEntity getObjEntity() { return classDescriptor != null ? classDescriptor.getEntity() : null; }
descriptor = descriptor.getSubclassDescriptor(source.getClass()); .getEntityName()); final Persistent target = (Persistent) targetDescriptor.createObject(); target.setObjectId(id); seen.put(id, target); descriptor.visitProperties(new PropertyVisitor() {
descriptor.visitAllProperties(visitor); for (String pkName : descriptor.getEntity().getPrimaryKeyNames()) { if (visited.add(pkName)) { result for (ObjAttribute column : descriptor.getDiscriminatorColumns()) {
ClassDescriptor classDescriptor = getEntityResolver().getClassDescriptor( object.getObjectId().getEntityName()); PropertyDescriptor propertyDescriptor = classDescriptor.getProperty(property); classDescriptor.visitProperties(new PropertyVisitor() { @Override public boolean visitAttribute(final AttributeProperty property) {
object = (Persistent) descriptor.createObject(); } catch (Exception ex) { throw new CayenneRuntimeException("Error instantiating object.", ex); descriptor.injectValueHolders(object);
public InheritanceAwareEntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata, DataRowPostProcessor postProcessor) { super(descriptor, segmentMetadata, postProcessor); this.entityInheritanceTree = segmentMetadata.getClassDescriptor().getEntityInheritanceTree(); }
Iterator<CayenneMapEntry> it = classDescriptor.getEntity().resolvePathComponents( prefetchPath); , prefetchPath, classDescriptor.getEntity().getName()); .getEntityInheritanceTree() .qualifierForEntityAndSubclasses(); prefetchQuery.setStatementFetchSize(query.getStatementFetchSize()); prefetchQuery.setQualifier(classDescriptor.getEntity().translateToRelatedEntity( queryQualifier, prefetchPath));
private void addPrefetchedColumnsIfAny(final String visitedIdentifier) { PrefetchTreeNode prefetchTree = context.getCompiledExpression().getPrefetchTree(); if (prefetchTree != null) { for (PrefetchTreeNode prefetch : prefetchTree.adjacentJointNodes()) { ClassDescriptor descriptor = context.getEntityDescriptor(prefetch.getEjbqlPathEntityId()); if (visitedIdentifier.equals(prefetch.getEjbqlPathEntityId())) { DbEntity table = descriptor.getRootDbEntities().iterator().next(); ObjEntity objectEntity = descriptor.getEntity(); prefetch.setEntityName(objectEntity.getName()); Expression prefetchExp = ExpressionFactory.exp(prefetch.getPath()); Expression dbPrefetch = objectEntity.translateToDbPath(prefetchExp); DbRelationship r = null; for (PathComponent<DbAttribute, DbRelationship> component : table.resolvePath(dbPrefetch, context .getMetadata().getPathSplitAliases())) { r = component.getRelationship(); } if (r == null) { throw new CayenneRuntimeException("Invalid joint prefetch '%s' for entity: %s" , prefetch, objectEntity.getName()); } for (DbAttribute attribute : r.getTargetEntity().getAttributes()) { appendColumn(prefetch.getEjbqlPathEntityId() + "." + prefetch.getPath(), attribute, "", prefetch.getPath() + "." + attribute.getName(), null); } } } } }
object = (T) descriptor.createObject(); object.setObjectContext(context); object.setObjectId(id); && object.getPersistenceState() != PersistenceState.DELETED) { descriptor.shallowMerge(peerInParentContext, object);
object.getObjectId().getEntityName()); for (final ObjRelationship relationship : descriptor.getEntity().getRelationships()) { ArcProperty property = (ArcProperty) descriptor.getProperty(relationship.getName()); final Collection<Persistent> relatedObjects = toCollection(property.readProperty(object));
ObjEntity oe = descriptor.getEntity(); descriptor.visitAllProperties(visitor); prefetchClassDescriptor.visitAllProperties(prefetchVisitor);
public PropertyDescriptor getDeclaredProperty(String propertyName) { checkDescriptorInitialized(); return descriptor.getDeclaredProperty(propertyName); }
public Collection<ObjAttribute> getDiscriminatorColumns() { checkDescriptorInitialized(); return descriptor.getDiscriminatorColumns(); }