order method

  1. @override
Entities<E> order([
  1. int compare(
    1. E a,
    2. E b
    )?
])
override

If compare function is not passed, compareTo method will be used. If there is no compareTo method on specific entity, the Entity.compareTo method will be used (code if not null, otherwise id).

Implementation

@override
Entities<E> order([int Function(E a, E b)? compare]) {
  if (_concept == null) {
    throw new ConceptException('Entities.order: concept is not defined.');
  }

  Entities<E> orderedEntities = newEntities();
  orderedEntities.pre = false;
  orderedEntities.post = false;
  orderedEntities.propagateToSource = false;
  List<E> sortedList = toList();
  // in place sort
  sortedList.sort(compare);
  for (var entity in sortedList) {
    orderedEntities.add(entity);
  }
  orderedEntities.pre = true;
  orderedEntities.post = true;
  orderedEntities.propagateToSource = false;
  orderedEntities.source = this;
  return orderedEntities;
}