@Override public UpdateType getUpdateType(final RepositoryRecord record) { switch (record.getType()) { case CONTENTMISSING: case DELETE: return UpdateType.DELETE; case CREATE: return UpdateType.CREATE; case UPDATE: return UpdateType.UPDATE; case SWAP_OUT: return UpdateType.SWAP_OUT; case SWAP_IN: return UpdateType.SWAP_IN; } return null; }
@Override public UpdateType getUpdateType(final RepositoryRecord record) { switch (record.getType()) { case CONTENTMISSING: case DELETE: return UpdateType.DELETE; case CREATE: return UpdateType.CREATE; case UPDATE: return UpdateType.UPDATE; case SWAP_OUT: return UpdateType.SWAP_OUT; case SWAP_IN: return UpdateType.SWAP_IN; } return null; }
@Override public void serializeRecord(final RepositoryRecord record, final DataOutputStream out) throws IOException { final RecordSchema schema; switch (record.getType()) { case CREATE: case UPDATE: schema = RepositoryRecordSchema.CREATE_OR_UPDATE_SCHEMA_V2; break; case CONTENTMISSING: case DELETE: schema = RepositoryRecordSchema.DELETE_SCHEMA_V2; break; case SWAP_IN: schema = RepositoryRecordSchema.SWAP_IN_SCHEMA_V2; break; case SWAP_OUT: schema = RepositoryRecordSchema.SWAP_OUT_SCHEMA_V2; break; default: throw new IllegalArgumentException("Received Repository Record with unknown Update Type: " + record.getType()); // won't happen. } serializeRecord(record, out, schema, RepositoryRecordSchema.REPOSITORY_RECORD_SCHEMA_V2); }
private void updateRepository(final Collection<RepositoryRecord> records, final boolean sync) throws IOException { for (final RepositoryRecord record : records) { if (record.getType() != RepositoryRecordType.DELETE && record.getType() != RepositoryRecordType.CONTENTMISSING && record.getType() != RepositoryRecordType.CLEANUP_TRANSIENT_CLAIMS && record.getDestination() == null) { throw new IllegalArgumentException("Record " + record + " has no destination and Type is " + record.getType()); .collect(Collectors.partitioningBy(record -> record.getType() == RepositoryRecordType.CLEANUP_TRANSIENT_CLAIMS)); if (record.getType() == RepositoryRecordType.DELETE) { claimsToAdd.add(record.getOriginalClaim().getResourceClaim()); } else if (record.getType() == RepositoryRecordType.UPDATE) {
@Override public void updateRepository(final Collection<RepositoryRecord> records) throws IOException { for (final RepositoryRecord record : records) { if (record.getType() == RepositoryRecordType.DELETE) { // For any DELETE record that we have, if current claim's claimant count <= 0, mark it as destructable if (record.getCurrentClaim() != null && getClaimantCount(record.getCurrentClaim()) <= 0) { markDestructable(record.getCurrentClaim()); } // If the original claim is different than the current claim and the original claim has a claimant count <= 0, mark it as destructable. if (record.getOriginalClaim() != null && !record.getOriginalClaim().equals(record.getCurrentClaim()) && getClaimantCount(record.getOriginalClaim()) <= 0) { markDestructable(record.getOriginalClaim()); } } else if (record.getType() == RepositoryRecordType.UPDATE) { // if we have an update, and the original is no longer needed, mark original as destructable if (record.getOriginalClaim() != null && record.getCurrentClaim() != record.getOriginalClaim() && getClaimantCount(record.getOriginalClaim()) <= 0) { markDestructable(record.getOriginalClaim()); } } } }
switch (fieldName) { case RepositoryRecordSchema.ACTION_TYPE: return record.getType().name(); case RepositoryRecordSchema.RECORD_ID: return record.getCurrent().getId();
@Override public UpdateType getUpdateType(final RepositoryRecord record) { switch (record.getType()) { case CONTENTMISSING: case DELETE: return UpdateType.DELETE; case CREATE: return UpdateType.CREATE; case UPDATE: return UpdateType.UPDATE; case SWAP_OUT: return UpdateType.SWAP_OUT; case SWAP_IN: return UpdateType.SWAP_IN; } return null; }
@Override public UpdateType getUpdateType(final RepositoryRecord record) { switch (record.getType()) { case CONTENTMISSING: case DELETE: return UpdateType.DELETE; case CREATE: return UpdateType.CREATE; case UPDATE: return UpdateType.UPDATE; case SWAP_OUT: return UpdateType.SWAP_OUT; case SWAP_IN: return UpdateType.SWAP_IN; } return null; }
@Override public void serializeRecord(final RepositoryRecord record, final DataOutputStream out) throws IOException { final RecordSchema schema; switch (record.getType()) { case CREATE: case UPDATE: schema = RepositoryRecordSchema.CREATE_OR_UPDATE_SCHEMA_V2; break; case CONTENTMISSING: case DELETE: schema = RepositoryRecordSchema.DELETE_SCHEMA_V2; break; case SWAP_IN: schema = RepositoryRecordSchema.SWAP_IN_SCHEMA_V2; break; case SWAP_OUT: schema = RepositoryRecordSchema.SWAP_OUT_SCHEMA_V2; break; default: throw new IllegalArgumentException("Received Repository Record with unknown Update Type: " + record.getType()); // won't happen. } serializeRecord(record, out, schema, RepositoryRecordSchema.REPOSITORY_RECORD_SCHEMA_V2); }
switch (fieldName) { case RepositoryRecordSchema.ACTION_TYPE: return record.getType().name(); case RepositoryRecordSchema.RECORD_ID: return record.getCurrent().getId();