@Override public void updatePropertyDependentIris(OntologyProperty property, Collection<String> dependentPropertyIris, User user, String workspaceId) { if (!isPublic(workspaceId) || property.getSandboxStatus() == SandboxStatus.PRIVATE) { throw new UnsupportedOperationException("Sandboxed updating of dependent iris is not currently supported for properties"); } InMemoryOntologyProperty inMemoryOntologyProperty = (InMemoryOntologyProperty) property; inMemoryOntologyProperty.setDependentPropertyIris(dependentPropertyIris); }
.filter(property -> property != null && property.getSandboxStatus() != SandboxStatus.PUBLIC) .map(property -> { try {
@Override public void updatePropertyDependentIris(OntologyProperty property, Collection<String> newDependentPropertyIris, User user, String workspaceId) { VertexiumOntologyProperty vertexiumProperty = (VertexiumOntologyProperty) property; if (!isPublic(workspaceId) || property.getSandboxStatus() == SandboxStatus.PRIVATE) { throw new UnsupportedOperationException("Sandboxed updating of dependent iris is not currently supported for properties"); } saveDependentProperties(vertexiumProperty.getVertex().getId(), newDependentPropertyIris, user, workspaceId); graph.flush(); vertexiumProperty.setDependentProperties(newDependentPropertyIris); }
public SandboxStatus getSandboxStatus() { for (Concept concept : getConcepts()) { SandboxStatus sandboxStatus = concept.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } for (Relationship relationship : getRelationships()) { SandboxStatus sandboxStatus = relationship.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } for (OntologyProperty property : getProperties()) { SandboxStatus sandboxStatus = property.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } return SandboxStatus.PUBLIC; } }
if (results == 0) { List<OntologyProperty> removeProperties = relationship.getProperties().stream().filter(ontologyProperty -> ontologyProperty.getSandboxStatus().equals(SandboxStatus.PRIVATE) && ontologyProperty.getConceptIris().size() == 0 && ontologyProperty.getRelationshipIris().size() == 1 &&
if (results == 0) { List<OntologyProperty> removeProperties = concept.getProperties().stream().filter(ontologyProperty -> ontologyProperty.getSandboxStatus().equals(SandboxStatus.PRIVATE) && ontologyProperty.getRelationshipIris().size() == 0 && ontologyProperty.getConceptIris().size() == 1 &&
@Override public void updatePropertyDomainIris(OntologyProperty property, Set<String> domainIris, User user, String workspaceId) { if (!isPublic(workspaceId) && property.getSandboxStatus() != SandboxStatus.PRIVATE) { throw new UnsupportedOperationException("Sandboxed updating of domain iris is not currently supported for published properties");
@Override public void internalPublishProperty(OntologyProperty property, User user, String workspaceId) { assert (property instanceof VertexiumOntologyProperty); if (property.getSandboxStatus() != SandboxStatus.PUBLIC) { Vertex vertex = ((VertexiumOntologyProperty) property).getVertex(); VisibilityJson visibilityJson = VisalloProperties.VISIBILITY_JSON.getPropertyValue(vertex); if (visibilityJson != null && visibilityJson.getWorkspaces().contains(workspaceId)) { visibilityJson = VisibilityJson.removeFromAllWorkspace(visibilityJson); VisalloVisibility visalloVisibility = visibilityTranslator.toVisibility(visibilityJson); try (GraphUpdateContext ctx = graphRepository.beginGraphUpdate(Priority.NORMAL, user, getAuthorizations(workspaceId))) { ctx.update(vertex, new Date(), visibilityJson, null, vertexUpdateCtx -> { ExistingElementMutation<Vertex> mutation = (ExistingElementMutation<Vertex>) vertexUpdateCtx.getMutation(); mutation.alterElementVisibility(visalloVisibility.getVisibility()); }); removeEdge(ctx, workspaceId, vertex.getId()); } } } } }
@Override public void updatePropertyDomainIris(OntologyProperty property, Set<String> domainIris, User user, String workspaceId) { VertexiumOntologyProperty vertexiumProperty = (VertexiumOntologyProperty) property; if (!isPublic(workspaceId) && property.getSandboxStatus() != SandboxStatus.PRIVATE) { throw new UnsupportedOperationException("Sandboxed updating of domain iris is not currently supported for published properties"); } Iterable<EdgeVertexPair> existingConcepts = vertexiumProperty.getVertex().getEdgeVertexPairs(Direction.BOTH, LabelName.HAS_PROPERTY.toString(), getAuthorizations(workspaceId)); for (EdgeVertexPair existingConcept : existingConcepts) { String conceptIri = OntologyProperties.ONTOLOGY_TITLE.getPropertyValue(existingConcept.getVertex()); if (!domainIris.remove(conceptIri)) { getGraph().softDeleteEdge(existingConcept.getEdge(), getAuthorizations(workspaceId)); } } for (String domainIri : domainIris) { Vertex domainVertex; Concept concept = getConceptByIRI(domainIri, workspaceId); if (concept != null) { domainVertex = ((VertexiumConcept) concept).getVertex(); } else { Relationship relationship = getRelationshipByIRI(domainIri, workspaceId); if (relationship != null) { domainVertex = ((VertexiumRelationship) relationship).getVertex(); } else { throw new VisalloException("Could not find domain with IRI " + domainIri); } } findOrAddEdge(domainVertex, ((VertexiumOntologyProperty) property).getVertex(), LabelName.HAS_PROPERTY.toString(), user, workspaceId); } }
result.setDeleteable(getDeleteable()); result.setUpdateable(getUpdateable()); result.setSandboxStatus(getSandboxStatus()); result.setSortPriority(getSortPriority()); if (getPossibleValues() != null) {
public void deleteProperty(String propertyIri, User user, String workspaceId) { checkDeletePrivileges(user, workspaceId); OntologyProperty property = getPropertyByIRI(propertyIri, workspaceId); if (property != null) { if (property.getSandboxStatus().equals(SandboxStatus.PRIVATE)) { Graph graph = getGraph(); Authorizations authorizations = graph.createAuthorizations(workspaceId); GraphQuery query = graph.query(authorizations); query.has(propertyIri); query.limit(0); long results = query.search().getTotalHits(); if (results == 0) { internalDeleteProperty(property, workspaceId); } else { throw new VisalloException("Unable to delete property that have elements using it"); } } else { throw new VisalloException("Unable to delete published properties"); } } else throw new VisalloResourceNotFoundException("Property not found"); }
private void doTestPublishPropertyAdd(String propertyName, String expectedError, SandboxStatus expectedEdgeStatus) { User systemUser = getUserRepository().getSystemUser(); Authorizations systemAuthorizations = getAuthorizationRepository().getGraphAuthorizations(systemUser); Vertex vertex = getGraphRepository().addVertex("v1", JUNIT_CONCEPT_TYPE, "", null, null, null, systemUser, systemAuthorizations); getWorkspaceRepository().updateEntityOnWorkspace(workspace, vertex.getId(), user); String propertyKey = "junit"; VisibilityAndElementMutation<Vertex> setPropertyMutation = getGraphRepository().setProperty(vertex, propertyName, propertyKey, "new value", new Metadata(), "", "", workspace.getWorkspaceId(), null, null, user, workspaceAuthorizations); setPropertyMutation.elementMutation.save(workspaceAuthorizations); ClientApiPropertyPublishItem publishItem = new ClientApiPropertyPublishItem(); publishItem.setVertexId(vertex.getId()); publishItem.setName(propertyName); publishItem.setKey(propertyKey); publishItem.setAction(ClientApiPublishItem.Action.ADD_OR_UPDATE); ClientApiWorkspacePublishResponse response = getWorkspaceRepository().publish(new ClientApiPublishItem[]{publishItem}, user, workspace.getWorkspaceId(), workspaceAuthorizations); Property property = getGraph().getVertex(vertex.getId(), workspaceAuthorizations).getProperty(propertyKey, propertyName); if (expectedError != null) { assertPublishFailure(response, workspace, property, expectedError); } else { assertPublishSuccess(response, workspace, property); } if (expectedEdgeStatus != null) { OntologyProperty ontologyProperty = getOntologyRepository().getPropertyByIRI(propertyName, workspace.getWorkspaceId()); assertEquals(expectedEdgeStatus, ontologyProperty.getSandboxStatus()); } }