@Override public RecordBuilder id(String userId, Map<String, String> variantProperties) { record.setId(idGenerator.newRecordId(userId, variantProperties)); return this; }
public RecordId convertAvroRecordId(ByteBuffer recordId, LRepository repository) { byte[] bytes = new byte[recordId.remaining()]; recordId.get(bytes); return repository.getIdGenerator().fromBytes(bytes); }
public Set<RecordId> convertAvroRecordIds(List<String> avroRecordIds, LRepository repository) { Set<RecordId> recordIds = new HashSet<RecordId>(); for (String avroRecordId : avroRecordIds) { recordIds.add(repository.getIdGenerator().fromString(avroRecordId)); } return recordIds; } }
Set<DependencyEntry> deserializeDependenciesForward(byte[] serialized) throws IOException { final DataInputImpl dataInput = new DataInputImpl(serialized); final int nDependencies = dataInput.readInt(); final Set<DependencyEntry> result = new HashSet<DependencyEntry>(nDependencies); while (result.size() < nDependencies) { final int tableLength = dataInput.readInt(); final String table = Bytes.toString(dataInput.readBytes(tableLength)); final int masterBytesLength = dataInput.readInt(); final byte[] masterBytes = dataInput.readBytes(masterBytesLength); final DerefMapVariantPropertiesPattern variantPropertiesPattern = deserializeVariantPropertiesPattern(dataInput); result.add(new DependencyEntry(new AbsoluteRecordIdImpl(table, idGenerator.newRecordId(idGenerator.fromBytes(masterBytes), variantPropertiesPattern.getConcreteProperties())), variantPropertiesPattern.getPatternProperties())); } return result; }
SchemaId deserializeSchemaId(byte[] serialized) { return idGenerator.getSchemaId(serialized); } }
public Set<Pair<FieldedLink, SchemaId>> getAllForwardLinks(AbsoluteRecordId record) throws LinkIndexException, InterruptedException { long before = System.currentTimeMillis(); try { Query query = new Query(); query.addEqualsCondition("source", record.toBytes()); Set<Pair<FieldedLink, SchemaId>> result = new HashSet<Pair<FieldedLink, SchemaId>>(); QueryResult qr = forwardIndex.performQuery(query); byte[] id; while ((id = qr.next()) != null) { SchemaId sourceField = getIdGenerator().getSchemaId(qr.getData(SOURCE_FIELD_KEY)); SchemaId vtag = getIdGenerator().getSchemaId(qr.getData(VTAG_KEY)); result.add( new Pair<FieldedLink, SchemaId>(new FieldedLink(getIdGenerator().absoluteFromBytes(id), sourceField), vtag)); } Closer.close( qr); // Not closed in finally block: avoid HBase contact when there could be connection problems. return result; } catch (IOException e) { throw new LinkIndexException("Error getting forward links for record '" + record + "'", e); } finally { metrics.report(Action.GET_ALL_FW_LINKS, System.currentTimeMillis() - before); } }
private AbsoluteRecordId getAbsoluteId(RecordId recordId) throws LinkIndexException, InterruptedException { return getIdGenerator().newAbsoluteRecordId(Table.RECORD.name, recordId); }
public Set<SchemaId> deserializeFields(byte[] serialized, int offset, int length) { final HashSet<SchemaId> result = new HashSet<SchemaId>(); for (int i = offset; i < offset + length; i += SCHEMA_ID_BYTE_LENGTH) { byte[] bytes = new byte[SCHEMA_ID_BYTE_LENGTH]; System.arraycopy(serialized, i, bytes, 0, SCHEMA_ID_BYTE_LENGTH); result.add(idGenerator.getSchemaId(bytes)); } return result; }
public Set<FieldedLink> getFieldedForwardLinks(AbsoluteRecordId record, SchemaId vtag) throws LinkIndexException, InterruptedException { long before = System.currentTimeMillis(); try { Query query = new Query(); query.addEqualsCondition("source", record.toBytes()); if (vtag != null) { query.addEqualsCondition("vtag", vtag.getBytes()); } Set<FieldedLink> result = new HashSet<FieldedLink>(); QueryResult qr = forwardIndex.performQuery(query); byte[] id; while ((id = qr.next()) != null) { SchemaId sourceField = getIdGenerator().getSchemaId(qr.getData(SOURCE_FIELD_KEY)); result.add(new FieldedLink(getIdGenerator().absoluteFromBytes(id), sourceField)); } Closer.close( qr); // Not closed in finally block: avoid HBase contact when there could be connection problems. return result; } catch (IOException e) { throw new LinkIndexException("Error getting forward links for record '" + record + "', vtag '" + vtag + "'", e); } finally { metrics.report(Action.GET_FW_LINKS, System.currentTimeMillis() - before); } }
public void addLink(RecordId target, SchemaId fieldTypeId) { addLink(idGenerator.newAbsoluteRecordId(Table.RECORD.name, target), fieldTypeId); }
@Override public RecordBuilder assignNewUuid() { record.setId(idGenerator.newRecordId()); return this; }
public RecordId getRecordId() { if (recordId == null) { recordId = idGenerator.fromBytes(getRow()); } return recordId; }
@Override public RecordVariantFilter fromJson(JsonNode node, Namespaces namespaces, LRepository repository, RecordFilterJsonConverter<RecordFilter> converter) throws JsonFormatException, RepositoryException, InterruptedException { String recordId = JsonUtil.getString(node, "recordId", null); if (recordId == null) { throw new IllegalStateException("expected non null recordId in json input"); } final ObjectNode variantPropertiesNode = JsonUtil.getObject(node, "variantProperties", null); if (variantPropertiesNode == null) { throw new IllegalStateException("expected non null variantProperties in json input"); } final HashMap<String, String> variantProperties = new HashMap<String, String>(); final Iterator<Map.Entry<String, JsonNode>> fields = variantPropertiesNode.getFields(); while (fields.hasNext()) { final Map.Entry<String, JsonNode> next = fields.next(); variantProperties.put(next.getKey(), next.getValue().getTextValue()); } return new RecordVariantFilter(repository.getIdGenerator().fromString(recordId), variantProperties); } }
public static final IdRecord readIdRecord(DataInput input, LRepository repository) throws RepositoryException, InterruptedException { Record record = read(input, repository); IdGenerator idGenerator = repository.getIdGenerator(); int size = input.readVInt(); Map<SchemaId, QName> idToQNameMapping = new HashMap<SchemaId, QName>(); for (int i = 0; i < size; i++) { byte[] schemaIdBytes = readBytes(input); QName name = readQName(input); SchemaId schemaId = idGenerator.getSchemaId(schemaIdBytes); idToQNameMapping.put(schemaId, name); } Map<Scope, SchemaId> recordTypeIds = new EnumMap(Scope.class); for (Scope scope : Scope.values()) { byte[] schemaIdBytes = readNullOrBytes(input); if (schemaIdBytes != null) { SchemaId schemaId = idGenerator.getSchemaId(schemaIdBytes); recordTypeIds.put(scope, schemaId); } } return new IdRecordImpl(record, idToQNameMapping, recordTypeIds); }
public Set<FieldedLink> getFieldedReferrers(RecordId record, SchemaId vtag) throws LinkIndexException, InterruptedException { long before = System.currentTimeMillis(); try { Query query = new Query(); query.addEqualsCondition("target", record.toBytes()); if (vtag != null) { query.addEqualsCondition("vtag", vtag.getBytes()); } Set<FieldedLink> result = new HashSet<FieldedLink>(); QueryResult qr = backwardIndex.performQuery(query); byte[] id; while ((id = qr.next()) != null) { SchemaId sourceField = getIdGenerator().getSchemaId(qr.getData(SOURCE_FIELD_KEY)); result.add(new FieldedLink(getIdGenerator().absoluteFromBytes(id), sourceField)); } Closer.close( qr); // Not closed in finally block: avoid HBase contact when there could be connection problems. return result; } catch (IOException e) { throw new LinkIndexException("Error getting referrers for record '" + record + "', vtag '" + vtag + "'", e); } finally { metrics.report(Action.GET_FIELDED_REFERRERS, System.currentTimeMillis() - before); } }
public AbsoluteRecordId getAbsoluteRecordId() { if (absRecordId == null) { absRecordId = idGenerator.newAbsoluteRecordId(getLilyTableName(), getRecordId()); } return absRecordId; }
/** * Create a new user-specified record id. * * @param userProvidedId user-specified id * @return user-specified record id */ public RecordId newRecordId(String userProvidedId) { return bulkIngester.getIdGenerator().newRecordId(userProvidedId); }
public static AbsoluteRecordId fromBytes(byte[] bytes, IdGenerator idGenerator) { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); DataInput dataInput = new DataInputStream(byteArrayInputStream); byte[] tableBytes; byte[] recordIdBytes; try { tableBytes = new byte[dataInput.readInt()]; dataInput.readFully(tableBytes, 0, tableBytes.length); recordIdBytes = new byte[dataInput.readInt()]; dataInput.readFully(recordIdBytes, 0, recordIdBytes.length); } catch (IOException ioe) { throw new RuntimeException("Error while deserializing AbsoluteRecordId", ioe); } return new AbsoluteRecordIdImpl(new String(tableBytes), idGenerator.fromBytes(recordIdBytes)); }
@Override public RecordIdPrefixFilter fromJson(JsonNode node, Namespaces namespaces, LRepository repository, RecordFilterJsonConverter<RecordFilter> converter) throws JsonFormatException, RepositoryException, InterruptedException { RecordIdPrefixFilter filter = new RecordIdPrefixFilter(); String recordId = JsonUtil.getString(node, "recordId", null); if (recordId != null) { filter.setRecordId(repository.getIdGenerator().fromString(recordId)); } return filter; } }
public FieldChange(JsonParser jp, IdGenerator idGenerator) throws IOException { JsonToken current = jp.getCurrentToken(); if (current != JsonToken.START_OBJECT) { throw new RuntimeException("Not a JSON object."); } while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldName = jp.getCurrentName(); current = jp.nextToken(); // move from field name to field value if (fieldName.equals("id")) { this.id = idGenerator.getSchemaId(jp.getBinaryValue()); } else if (fieldName.equals("old")) { oldValue = jp.getBinaryValue(); } else if (fieldName.equals("new")) { newValue = jp.getBinaryValue(); } } }