@Override public DocumentModel createEntry(Map<String, Object> fieldMap) { checkPermission(SecurityConstants.WRITE); DocumentModel docModel = createEntryWithoutReferences(fieldMap); // Add references fields Map<String, Field> schemaFieldMap = directory.getSchemaFieldMap(); String idFieldName = schemaFieldMap.get(getIdField()).getName().getPrefixedName(); Object entry = fieldMap.get(idFieldName); String sourceId = docModel.getId(); for (Reference reference : getDirectory().getReferences()) { String referenceFieldName = schemaFieldMap.get(reference.getFieldName()).getName().getPrefixedName(); if (getDirectory().getReferences(reference.getFieldName()).size() > 1) { if (log.isWarnEnabled()) { log.warn("Directory " + directoryName + " cannot create field " + reference.getFieldName() + " for entry " + entry + ": this field is associated with more than one reference"); } continue; } List<String> targetIds = toStringList(fieldMap.get(referenceFieldName)); if (reference.getClass() == referenceClass) { reference.addLinks(sourceId, targetIds, this); } else { reference.addLinks(sourceId, targetIds); } } getDirectory().invalidateCaches(); return docModel; }
@Override public List<String> getSourceIdsForTarget(final String targetId) { return doCollect(refs -> { List<String> sourceIds = new ArrayList<>(1); for (Reference ref : refs) { sourceIds.addAll(ref.getSourceIdsForTarget(targetId)); } return sourceIds; }); }
targetIds = mongoReference.getTargetIdsForSource(doc.getId(), this); } else { targetIds = reference.getTargetIdsForSource(doc.getId()); String fieldName = reference.getFieldName(); targetIdsMap.computeIfAbsent(fieldName, key -> new ArrayList<>()).addAll(targetIds);
referencedIds = ldapReference.getTargetIdsForSource(entryId); } else { referencedIds = reference.getTargetIdsForSource(entryId);
@Override public void deleteEntry(String id) { if (!canDeleteMultiTenantEntry(id)) { throw new OperationNotAllowedException("Operation not allowed in the current tenant context", "label.directory.error.multi.tenant.operationNotAllowed", null); } checkPermission(SecurityConstants.WRITE); checkDeleteConstraints(id); for (Reference reference : getDirectory().getReferences()) { if (reference.getClass() == referenceClass) { reference.removeLinksForSource(id, this); } else { reference.removeLinksForSource(id); } } deleteEntryWithoutReferences(id); getDirectory().invalidateCaches(); }
List<String> targetIds = toStringList(docModel.getProperty(schemaName, referenceFieldName)); if (reference.getClass() == referenceClass) { reference.setTargetIdsForSource(docModel.getId(), targetIds, this); } else { reference.setTargetIdsForSource(docModel.getId(), targetIds);
Map<String, List<String>> targetIdsMap = new HashMap<>(); for (org.nuxeo.ecm.directory.Reference reference : directory.getReferences()) { List<String> targetIds = reference.getTargetIdsForSource(entry.getId()); targetIds = new ArrayList<>(targetIds); Collections.sort(targetIds); String fieldName = reference.getFieldName(); if (targetIdsMap.containsKey(fieldName)) { targetIdsMap.get(fieldName).addAll(targetIds);
Map<String, List<String>> targetIdsMap = new HashMap<>(); for (org.nuxeo.ecm.directory.Reference reference : directory.getReferences()) { List<String> targetIds = reference.getTargetIdsForSource(docModel.getId()); String fieldName = reference.getFieldName(); if (targetIdsMap.containsKey(fieldName)) { targetIdsMap.get(fieldName).addAll(targetIds);
@Override public List<String> getTargetIdsForSource(final String sourceId) { return doCollect(refs -> { List<String> targetIds = new ArrayList<>(1); for (Reference ref : refs) { targetIds.addAll(ref.getSourceIdsForTarget(sourceId)); } return targetIds; }); }
Map<String, List<String>> targetIdsMap = new HashMap<>(); for (org.nuxeo.ecm.directory.Reference reference : directory.getReferences()) { List<String> targetIds = reference.getTargetIdsForSource(docModel.getId()); String fieldName = reference.getFieldName(); targetIdsMap.computeIfAbsent(fieldName, key -> new ArrayList<>()).addAll(targetIds);
targetIds = mongoReference.getTargetIdsForSource(docModel.getId(), this); } else { targetIds = reference.getTargetIdsForSource(docModel.getId()); String fieldName = reference.getFieldName(); targetIdsMap.computeIfAbsent(fieldName, key -> new ArrayList<>()).addAll(targetIds);