package io.lumify.palantir.mr.mappers; import io.lumify.core.exception.LumifyException; import io.lumify.core.model.properties.LumifyProperties; import io.lumify.core.security.LumifyVisibility; import io.lumify.palantir.model.PtLinkType; import io.lumify.palantir.model.PtObjectObject; import io.lumify.web.clientapi.model.VisibilityJson; import org.apache.hadoop.io.LongWritable; import org.securegraph.EdgeBuilderByVertexId; import org.securegraph.Visibility; import java.io.IOException; import java.util.Date; public class PtObjectObjectMapper extends PalantirMapperBase<LongWritable, PtObjectObject> { private Visibility visibility; private VisibilityJson visibilityJson; @Override protected void setup(Context context) throws IOException, InterruptedException { super.setup(context); loadLinkTypes(context); visibility = new LumifyVisibility("").getVisibility(); visibilityJson = new VisibilityJson(); } @Override protected void safeMap(LongWritable key, PtObjectObject ptObjectObject, Context context) throws Exception { context.setStatus(key.toString()); if (ptObjectObject.isDeleted()) { return; } String sourceVertexId = PtObjectMapper.getObjectVertexId(ptObjectObject.getParentObjectId()); String destVertexId = PtObjectMapper.getObjectVertexId(ptObjectObject.getChildObjectId()); PtLinkType ptLinkType = getLinkType(ptObjectObject.getType()); if (ptLinkType == null) { throw new LumifyException("Could not find link type: " + ptObjectObject.getType()); } String linkTypeUri = getLinkTypeUri(ptLinkType.getUri()); String edgeId = sourceVertexId + linkTypeUri + destVertexId; EdgeBuilderByVertexId m = prepareEdge(edgeId, sourceVertexId, destVertexId, linkTypeUri, visibility); LumifyProperties.CREATED_BY.setProperty(m, PtUserMapper.getUserVertexId(ptObjectObject.getCreatedBy()), visibility); LumifyProperties.CREATE_DATE.setProperty(m, new Date(ptObjectObject.getTimeCreated()), visibility); LumifyProperties.MODIFIED_BY.setProperty(m, PtUserMapper.getUserVertexId(ptObjectObject.getLastModifiedBy()), visibility); LumifyProperties.MODIFIED_DATE.setProperty(m, new Date(ptObjectObject.getLastModified()), visibility); LumifyProperties.VISIBILITY_JSON.setProperty(m, visibilityJson, visibility); m.save(getAuthorizations()); } protected String getLinkTypeUri(String uri) { return getBaseIri() + uri; } }