All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.rainfall.store.dataset.ChildDataset Maven / Gradle / Ivy

The newest version!
package io.rainfall.store.dataset;

import lombok.NonNull;

import java.util.List;

public abstract class ChildDataset<
    V,
    CR extends ChildRecord,
    CS extends ChildRepository,
    PR extends Record,
    PS extends RecordRepository
    > extends Dataset {

  @NonNull
  private final PS parentRepository;

  ChildDataset(@NonNull CS repository, @NonNull PS parentRepository) {
    super(repository);
    this.parentRepository = parentRepository;
  }

  public CR save(long parentId, V value) {
    PR parent = parentRepository.findById(parentId)
        .orElseThrow(() -> new IllegalArgumentException("Parent ID not found: " + parentId));
    CR created = create(parent, value);
    CR saved = saveRecord(created);
    addChild(parent, saved);
    parentRepository.save(parent);
    return saved;
  }

  abstract CR create(PR parent, V value);

  abstract void addChild(PR parent, CR child);

  public List findByParentId(long parentId) {
    return repository().findByParentId(parentId);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy