/db-diff/src/main/java/com/googlecode/hdbc/dbdiff/utilities/CollectionOperations.java

http://hdbc.googlecode.com/ · Java · 36 lines · 31 code · 5 blank · 0 comment · 3 complexity · 6474208c349cbbda1ccfdf3012241f5f MD5 · raw file

  1. package com.googlecode.hdbc.dbdiff.utilities;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. public final class CollectionOperations {
  5. private CollectionOperations() {}
  6. @SuppressWarnings("unchecked")
  7. public static<T> Pair<Collection<T>, Collection<T>> span(
  8. final Condition<T> condition,
  9. final Collection<T> list) {
  10. Collection<T> accepted;
  11. Collection<T> rejected;
  12. try {
  13. accepted = list.getClass().newInstance();
  14. rejected = list.getClass().newInstance();
  15. } catch (InstantiationException e) {
  16. accepted = new ArrayList<T>();
  17. rejected = new ArrayList<T>();
  18. } catch (IllegalAccessException e) {
  19. accepted = new ArrayList<T>();
  20. rejected = new ArrayList<T>();
  21. }
  22. for (T element : list) {
  23. if (condition.isSatisfiedBy(element)) {
  24. accepted.add(element);
  25. } else {
  26. rejected.add(element);
  27. }
  28. }
  29. return new Pair<Collection<T>, Collection<T>>(accepted, rejected);
  30. }
  31. }