package io.lumify.palantir.mr.mappers; import io.lumify.core.model.workspace.WorkspaceLumifyProperties; import io.lumify.core.model.workspace.WorkspaceRepository; import io.lumify.core.security.LumifyVisibility; import io.lumify.palantir.model.LongLongWritable; import io.lumify.palantir.model.PtGraphObject; import org.securegraph.EdgeBuilderByVertexId; import org.securegraph.Visibility; import java.io.IOException; public class PtGraphObjectMapper extends PalantirMapperBase<LongLongWritable, PtGraphObject> { private Visibility visibility; @Override protected void setup(Context context) throws IOException, InterruptedException { super.setup(context); visibility = new LumifyVisibility(WorkspaceRepository.VISIBILITY_STRING).getVisibility(); } @Override protected void safeMap(LongLongWritable key, PtGraphObject ptGraphObject, Context context) throws Exception { context.setStatus(key.toString()); String workspaceVertexId = PtGraphMapper.getWorkspaceVertexId(ptGraphObject.getGraphId()); String objectVertexId = PtObjectMapper.getObjectVertexId(ptGraphObject.getObjectId()); String edgeId = getWorkspaceToEntityEdgeId(workspaceVertexId, objectVertexId); EdgeBuilderByVertexId m = getGraph().prepareEdge(edgeId, workspaceVertexId, objectVertexId, WorkspaceRepository.WORKSPACE_TO_ENTITY_RELATIONSHIP_IRI, visibility); WorkspaceLumifyProperties.WORKSPACE_TO_ENTITY_VISIBLE.setProperty(m, true, visibility); m.save(getAuthorizations()); } public static String getWorkspaceToEntityEdgeId(String workspaceVertexId, String objectVertexId) { return workspaceVertexId + WorkspaceRepository.WORKSPACE_TO_ENTITY_RELATIONSHIP_IRI + objectVertexId; } }