package mil.nga.giat.geowave.cli.osm.mapreduce.Ingest; import java.io.IOException; import java.util.Map; import org.apache.accumulo.core.data.Mutation; import org.apache.avro.mapred.AvroKey; import org.apache.hadoop.io.NullWritable; import mil.nga.giat.geowave.cli.osm.accumulo.osmschema.Constants; import mil.nga.giat.geowave.cli.osm.accumulo.osmschema.Schema; import mil.nga.giat.geowave.cli.osm.types.generated.Primitive; import mil.nga.giat.geowave.cli.osm.types.generated.Relation; import mil.nga.giat.geowave.cli.osm.types.generated.RelationMember; /** * */ public class OSMRelationMapper extends OSMMapperBase<Relation> { @Override public void map( AvroKey<Relation> key, NullWritable value, Context context ) throws IOException, InterruptedException { Relation relation = key.datum(); Primitive p = relation.getCommon(); Mutation m = new Mutation( getIdHash(p.getId())); // Mutation m = new Mutation(_longWriter.writeField(p.getId())); // Mutation m = new Mutation(p.getId().toString()); put( m, Schema.CF.RELATION, Schema.CQ.ID, p.getId()); int i = 0; for (RelationMember rm : relation.getMembers()) { put( m, Schema.CF.RELATION, Schema.CQ.getRelationMember( Schema.CQ.REFERENCE_ROLEID_PREFIX, i), rm.getRole()); put( m, Schema.CF.RELATION, Schema.CQ.getRelationMember( Schema.CQ.REFERENCE_MEMID_PREFIX, i), rm.getMember()); put( m, Schema.CF.RELATION, Schema.CQ.getRelationMember( Schema.CQ.REFERENCE_TYPE_PREFIX, i), rm.getMemberType().toString()); i++; } if (!Long.valueOf( 0).equals( p.getVersion())) { put( m, Schema.CF.RELATION, Schema.CQ.VERSION, p.getVersion()); } if (!Long.valueOf( 0).equals( p.getTimestamp())) { put( m, Schema.CF.RELATION, Schema.CQ.TIMESTAMP, p.getTimestamp()); } if (!Long.valueOf( 0).equals( p.getChangesetId())) { put( m, Schema.CF.RELATION, Schema.CQ.CHANGESET, p.getChangesetId()); } if (!Long.valueOf( 0).equals( p.getUserId())) { put( m, Schema.CF.RELATION, Schema.CQ.USER_ID, p.getUserId()); } put( m, Schema.CF.RELATION, Schema.CQ.USER_TEXT, p.getUserName()); put( m, Schema.CF.RELATION, Schema.CQ.OSM_VISIBILITY, p.getVisible()); for (Map.Entry<String, String> kvp : p.getTags().entrySet()) { put( m, Schema.CF.RELATION, kvp.getKey().toString().getBytes( Constants.CHARSET), kvp.getValue().toString()); } context.write( _tableName, m); } }