private List<DifferingProperty> getPropertyDefinedOnResource(ResourceEditRelation relation, ResourceEditProperty property, List<Integer> relevantContextIds, Origin origin) { Query query = queries.getPropertyOverviewForResourceQuery(property.getTechnicalKey(), relation.getSlaveId(), relevantContextIds); return getDifferingProperties(property, query, origin); }
/** * * @param relation * @param property * @param relevantContexts * @return a List containing all properties which would be overridden by setting the property on the relation. */ private List<DifferingProperty> getPropertyOverviewForProvidedRelation(ResourceEditRelation relation, ResourceEditProperty property, List<ContextEntity> relevantContexts) { if (relevantContexts.isEmpty()) { return Collections.EMPTY_LIST; } List<Integer> relevantContextIds = buildRelevantContextIdsList(relevantContexts); Query query = queries.getPropertyOverviewForProvidedRelatedResourceQuery(property.getTechnicalKey(), relation.getResRelId(), relevantContextIds); List<DifferingProperty> differingProperties = getDifferingProperties(property, query, Origin.RELATION); // obtain property values defined on the (slave) resource, which would be overwritten by defining one on the relation - global context is relevant here relevantContextIds.add(contextHierarchy.getContextWithParentIds(relevantContexts.get(0)).get(0)); differingProperties.addAll(getPropertyDefinedOnResource(relation, property, relevantContextIds, Origin.INSTANCE)); return differingProperties; }
/** * * @param relation * @param property * @param relevantContexts * @return a List containing all properties which would be overridden by setting the property on the relation. */ private List<DifferingProperty> getPropertyOverviewForConsumedRelation(ResourceEditRelation relation, ResourceEditProperty property, List<ContextEntity> relevantContexts) { if (relevantContexts.isEmpty()) { return Collections.EMPTY_LIST; } List<Integer> relevantContextIds = buildRelevantContextIdsList(relevantContexts); Query query = queries.getPropertyOverviewForConsumedRelatedResourceQuery(property.getTechnicalKey(), relation.getResRelId(), relevantContextIds); List<DifferingProperty> differingProperties = getDifferingProperties(property, query, Origin.RELATION); // obtain property values defined on the (slave) resource, which would be overwritten by defining one on the relation - global context is relevant here relevantContextIds.add(contextHierarchy.getContextWithParentIds(relevantContexts.get(0)).get(0)); differingProperties.addAll(getPropertyDefinedOnResource(relation, property, relevantContextIds, Origin.INSTANCE)); return differingProperties; }
/** * * @param resourceType * @param property * @param relevantContexts * @return a List containing all properties which override the value of its parent context. */ public List<DifferingProperty> getPropertyOverviewForResourceType(ResourceTypeEntity resourceType, ResourceEditProperty property, List<ContextEntity> relevantContexts) { if (relevantContexts.isEmpty()) { return Collections.EMPTY_LIST; } List<Integer> contextIds = buildRelevantContextIdsList(relevantContexts); Query query = queries.getPropertyOverviewForResourceTypeQuery(property.getTechnicalKey(), resourceType.getId(), contextIds); return getDifferingProperties(property, query, Origin.INSTANCE); }
/** * * @param resource * @param property * @param relevantContexts * @return a List containing all properties which override the value of its parent context. */ public List<DifferingProperty> getPropertyOverviewForResource(ResourceEntity resource, ResourceEditProperty property, List<ContextEntity> relevantContexts) { if (relevantContexts.isEmpty()) { return Collections.EMPTY_LIST; } List<Integer> contextIds = buildRelevantContextIdsList(relevantContexts); Query query = queries.getPropertyOverviewForResourceQuery(property.getTechnicalKey(), resource.getId(), contextIds); return getDifferingProperties(property, query, Origin.INSTANCE); }