Search in sources :

Example 21 with EntityRecord

use of io.spine.server.entity.EntityRecord in project core-java by SpineEventEngine.

the class RecordStorageShould method delete_record.

// converter nullability issues
@SuppressWarnings("ConstantConditions")
@Test
public void delete_record() {
    final RecordStorage<I> storage = getStorage();
    final I id = newId();
    final EntityRecord record = newStorageRecord(id);
    // Write the record.
    storage.write(id, record);
    // Delete the record.
    assertTrue(storage.delete(id));
    // There's no record with such ID.
    assertFalse(storage.read(id).isPresent());
}
Also used : EntityRecord(io.spine.server.entity.EntityRecord) Test(org.junit.Test)

Example 22 with EntityRecord

use of io.spine.server.entity.EntityRecord in project core-java by SpineEventEngine.

the class RecordStorageShould method write_and_read_record_by_Message_id.

@SuppressWarnings("ConstantConditions")
// Converter nullability issues and Optional getting
@Test
public void write_and_read_record_by_Message_id() {
    final RecordStorage<I> storage = getStorage();
    final I id = newId();
    final EntityRecord expected = newStorageRecord(id);
    storage.write(id, expected);
    final EntityRecord actual = storage.read(id).get();
    assertEquals(expected, actual);
    close(storage);
}
Also used : EntityRecord(io.spine.server.entity.EntityRecord) Test(org.junit.Test)

Example 23 with EntityRecord

use of io.spine.server.entity.EntityRecord in project core-java by SpineEventEngine.

the class EventStorage method iterator.

Iterator<Event> iterator(EventStreamQuery query) {
    final EventRecordStorage storage = recordStorage();
    final Map<EventId, EntityRecord> records = storage.readAll(query);
    final Collection<EventEntity> entities = transform(records.entrySet(), storageRecordToEntity());
    // TODO:2017-05-19:dmytro.dashenkov: Remove after the Entity Column approach is implemented.
    final Collection<EventEntity> filtered = filter(entities, createEntityFilter(query));
    final List<EventEntity> entityList = newArrayList(filtered);
    Collections.sort(entityList, EventEntity.comparator());
    final Iterator<Event> result = Iterators.transform(entityList.iterator(), getEventFunc());
    return result;
}
Also used : EntityRecord(io.spine.server.entity.EntityRecord) EventRecordStorage(io.spine.server.storage.EventRecordStorage) EventId(io.spine.base.EventId) Event(io.spine.base.Event)

Example 24 with EntityRecord

use of io.spine.server.entity.EntityRecord in project core-java by SpineEventEngine.

the class RecordStorage method writeLifecycleFlags.

@Override
public void writeLifecycleFlags(I id, LifecycleFlags flags) {
    final Optional<EntityRecord> optional = read(id);
    if (optional.isPresent()) {
        final EntityRecord record = optional.get();
        final EntityRecord updated = record.toBuilder().setLifecycleFlags(flags).build();
        write(id, updated);
    } else {
        // The AggregateStateId is a special case, which is not handled by the Identifier class.
        final String idStr = id instanceof AggregateStateId ? id.toString() : idToString(id);
        throw newIllegalStateException("Unable to load record for entity with ID: %s", idStr);
    }
}
Also used : EntityRecord(io.spine.server.entity.EntityRecord) Identifiers.idToString(io.spine.base.Identifiers.idToString) AggregateStateId(io.spine.server.stand.AggregateStateId)

Example 25 with EntityRecord

use of io.spine.server.entity.EntityRecord in project core-java by SpineEventEngine.

the class RecordStorage method read.

/**
     * Reads a single item from the storage and applies a {@link FieldMask} to it.
     *
     * @param id        ID of the item to read.
     * @param fieldMask fields to read.
     * @return the item with the given ID and with the {@code FieldMask} applied.
     * @see #read(Object)
     */
public Optional<EntityRecord> read(I id, FieldMask fieldMask) {
    final Optional<EntityRecord> rawResult = read(id);
    if (!rawResult.isPresent()) {
        return Optional.absent();
    }
    final EntityRecord.Builder builder = EntityRecord.newBuilder(rawResult.get());
    final Any state = builder.getState();
    final TypeUrl type = TypeUrl.parse(state.getTypeUrl());
    final Message stateAsMessage = AnyPacker.unpack(state);
    final Message maskedState = FieldMasks.applyMask(fieldMask, stateAsMessage, type);
    final Any packedState = AnyPacker.pack(maskedState);
    builder.setState(packedState);
    return Optional.of(builder.build());
}
Also used : EntityRecord(io.spine.server.entity.EntityRecord) Message(com.google.protobuf.Message) TypeUrl(io.spine.type.TypeUrl) Any(com.google.protobuf.Any)

Aggregations

EntityRecord (io.spine.server.entity.EntityRecord)41 Test (org.junit.Test)24 Any (com.google.protobuf.Any)19 EntityRecordWithColumns (io.spine.server.entity.storage.EntityRecordWithColumns)9 Message (com.google.protobuf.Message)8 TypeUrl (io.spine.type.TypeUrl)8 StandStorage (io.spine.server.stand.StandStorage)7 FieldMask (com.google.protobuf.FieldMask)6 Identifiers.idToAny (io.spine.base.Identifiers.idToAny)4 Project (io.spine.test.storage.Project)4 LinkedList (java.util.LinkedList)4 Version (io.spine.base.Version)3 EntityFilters (io.spine.client.EntityFilters)3 Project (io.spine.test.projection.Project)3 ImmutableList (com.google.common.collect.ImmutableList)2 Descriptors (com.google.protobuf.Descriptors)2 EntityIdFilter (io.spine.client.EntityIdFilter)2 LifecycleFlags (io.spine.server.entity.LifecycleFlags)2 TenantAwareTest (io.spine.server.tenant.TenantAwareTest)2 Customer (io.spine.test.commandservice.customer.Customer)2