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.PtObject; import io.lumify.palantir.model.PtObjectType; import io.lumify.web.clientapi.model.VisibilityJson; import org.apache.hadoop.io.LongWritable; import org.securegraph.VertexBuilder; import org.securegraph.Visibility; import java.io.IOException; import java.util.Date; public class PtObjectMapper extends PalantirMapperBase<LongWritable, PtObject> { private Visibility visibility; private VisibilityJson visibilityJson; @Override protected void setup(Context context) throws IOException, InterruptedException { super.setup(context); loadObjectTypes(context); visibility = new LumifyVisibility("").getVisibility(); visibilityJson = new VisibilityJson(); } @Override protected void safeMap(LongWritable key, PtObject ptObject, Context context) throws Exception { context.setStatus(key.toString()); if (ptObject.getDeleted() != null && ptObject.getDeleted() != 0) { return; } String conceptTypeUri = getConceptTypeUri(ptObject); VertexBuilder m = prepareVertex(getObjectVertexId(ptObject), visibility); LumifyProperties.CONCEPT_TYPE.setProperty(m, conceptTypeUri, visibility); LumifyProperties.CREATED_BY.setProperty(m, PtUserMapper.getUserVertexId(ptObject.getCreatedBy()), visibility); LumifyProperties.CREATE_DATE.setProperty(m, new Date(ptObject.getTimeCreated()), visibility); LumifyProperties.MODIFIED_BY.setProperty(m, PtUserMapper.getUserVertexId(ptObject.getLastModifiedBy()), visibility); LumifyProperties.MODIFIED_DATE.setProperty(m, new Date(ptObject.getLastModified()), visibility); LumifyProperties.VISIBILITY_JSON.setProperty(m, visibilityJson, visibility); m.save(getAuthorizations()); } private String getConceptTypeUri(PtObject ptObject) { PtObjectType ptObjectType = getObjectType(ptObject.getType()); if (ptObjectType == null) { throw new LumifyException("Could not find object type: " + ptObject.getType()); } return getConceptTypeUri(ptObjectType.getUri()); } protected String getConceptTypeUri(String uri) { return getBaseIri() + uri; } public static String getObjectVertexId(PtObject ptObject) { return getObjectVertexId(ptObject.getObjectId()); } public static String getObjectVertexId(long objectId) { return ID_PREFIX + "OBJECT_" + objectId; } }