protected void handleSave(EOEditingContext ec, String typeKey, NSArray objects) { if (objects == null) return; for (Enumeration e = objects.objectEnumerator(); e.hasMoreElements();) { EOEnterpriseObject eo = (EOEnterpriseObject) e.nextElement(); Configuration config = configuration.objectForKey(eo.entityName()); if (config != null) { if (config.isAudited) { handleSave(ec, typeKey, eo); } else { for (Enumeration e1 = config.notificationKeys.objectEnumerator(); e1.hasMoreElements();) { String key = (String) e1.nextElement(); EOEnterpriseObject target = (EOEnterpriseObject) eo.valueForKey(key); EOEntity entity = ERXEOAccessUtilities.entityForEo(eo); String inverse = entity.relationshipNamed(key).anyInverseRelationship().name(); if (typeKey.equals(EOEditingContext.UpdatedKey)) { handleUpdate(ec, target, inverse, eo); } else if (typeKey.equals(EOEditingContext.InsertedKey)) { handleAdd(ec, target, inverse, eo); } else if (typeKey.equals(EOEditingContext.DeletedKey)) { target = (EOEnterpriseObject) ec.committedSnapshotForObject(eo).valueForKey(key); handleRemove(ec, target, inverse, eo); } } } } } }
/** * Validates the given sort key (is it a display key, an attribute, or a valid attribute path). * * @param displayPropertyKeys the current display properties * @param sortKey the sort key to validate * @return true if the sort key is valid, false if not */ protected boolean isValidSortKey(NSArray<String> displayPropertyKeys, String sortKey) { boolean validSortOrdering = false; try { if (displayPropertyKeys.containsObject(sortKey) || entity().anyAttributeNamed(sortKey) != null || ERXEOAccessUtilities.attributePathForKeyPath(entity(), sortKey).count() > 0) { validSortOrdering = true; } } catch (IllegalArgumentException e) { // MS: ERXEOAccessUtilities.attributePathForKeyPath throws IllegalArgumentException for a bogus key path validSortOrdering = false; } if (!validSortOrdering) { log.warn("Sort key '" + sortKey + "' is not in display keys, attributes or non-flattened key paths for the entity '" + entity().name() + "'."); validSortOrdering = false; } return validSortOrdering; }
/** * @param entityName entity to be indexed * @param keys attributes (keys or keypaths) to be indexed */ protected ConfigurationEntry configureEntity(String entityName, NSArray keys) { // Get ConfigurationEntry for the entity if it already exists ConfigurationEntry config = configuration.objectForKey(entityName); // If not already existing, create it if (config == null) { config = new ConfigurationEntry(); configuration.setObjectForKey(config, entityName); } EOEntity source = ERXEOAccessUtilities.entityNamed(null, entityName); for (Enumeration e = keys.objectEnumerator(); e.hasMoreElements();) { String keyPath = (String) e.nextElement(); configureKeyPath(config, keyPath, source); } return config; }
fetchAttributes.addObject(tagNameAttribute); EOAttribute countAttribute = ERXEOAccessUtilities.createAggregateAttribute(editingContext, "COUNT", ERTag.NAME_KEY, _tagEntity.name(), Number.class, "i", "tagCount", "t2"); fetchAttributes.addObject(countAttribute); NSArray<NSDictionary> rawRows = ERXEOAccessUtilities.rawRowsForSQLExpression(editingContext, _entity.model(), sqlExpression, fetchAttributes); for (NSDictionary rawRow : rawRows) { if (!NSKeyValueCoding.NullValue.equals(rawRow.objectForKey("tagName"))) {
NSArray<NSDictionary> rawRows = ERXEOAccessUtilities.rawRowsForSQLExpression(editingContext, _entity.model(), sqlExpression, sqlHelper.attributesToFetchForEntity(fetchSpec, _entity)); NSArray<T> objs; objs = ERXEOControlUtilities.faultsForRawRowsFromEntity(editingContext, rawRows, _entity.name());
NSArray<NSDictionary> rawRows = ERXEOAccessUtilities.rawRowsForSQLExpression(editingContext, _entity.model(), sqlExpression, pkAttrs); EOAttribute pkAttr = pkAttrs.objectAtIndex(0); for (NSDictionary rawRow : rawRows) { tagsFetchAttributes.addObject(tagNameAttribute); EOAttribute countAttribute = ERXEOAccessUtilities.createAggregateAttribute(editingContext, "COUNT", ERTag.NAME_KEY, _tagEntity.name(), Number.class, "i", "tagCount", "t2"); tagsFetchAttributes.addObject(countAttribute); NSArray<NSDictionary> tagsRawRows = ERXEOAccessUtilities.rawRowsForSQLExpression(editingContext, _entity.model(), tagsSqlExpression, tagsFetchAttributes); for (NSDictionary rawRow : tagsRawRows) { String name = (String) rawRow.objectForKey("tagName");
EODetailDataSource dds = (EODetailDataSource)ds; EOEnterpriseObject masterObj = (EOEnterpriseObject)dds.masterObject(); EOEntity masterEntity = ERXEOAccessUtilities.entityForEo(masterObj); EORelationship relationship = masterEntity.relationshipNamed(dds.detailKey()); EORelationship reverseRelationship = relationship.inverseRelationship();
EOEntity source = ERXEOAccessUtilities.entityForEo(eo);