test_class.file: dddlib-utils/src/test/java/org/dayatang/utils/CollectionUtilsTest.java
test_class.identifier: CollectionUtilsTest
test_case.body: @Test
  	public void testSubstract() {
  		Collection<Item> items = new ArrayList<Item>();
  		items.add(new Item(1, "A"));
  		items.add(new Item(2, "B"));
  		items.add(new Item(1, "C"));
  		assertEquals(Arrays.asList(1, 2, 1), CollectionUtils.substract(items, "id"));
  		assertEquals(Arrays.asList("A", "B", "C"), CollectionUtils.substract(items, "name"));
  	}
test_case.class_method_signature: CollectionUtilsTest.testSubstract()
test_case.full_signature: @Test public void testSubstract()
test_case.identifier: testSubstract
test_case.invocations: add add add assertEquals asList substract assertEquals asList substract
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSubstract()
focal_class.file: dddlib-utils/src/main/java/org/dayatang/utils/CollectionUtils.java
focal_class.identifier: CollectionUtils
focal_class.class_method_signature: CollectionUtils.CollectionUtils()
focal_class.full_signature: private  CollectionUtils()
focal_class.identifier: CollectionUtils
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  CollectionUtils()
focal_class.class_method_signature: CollectionUtils.substract(Collection<?> items, String property)
focal_class.full_signature: public static Collection<?> substract(Collection<?> items, String property)
focal_class.identifier: substract
focal_class.modifiers: public static
focal_class.parameters: (Collection<?> items, String property)
focal_class.return: Collection<?>
focal_class.signature: Collection<?> substract(Collection<?> items, String property)
focal_class.class_method_signature: CollectionUtils.join(Collection<?> items, String property, String separator)
focal_class.full_signature: public static String join(Collection<?> items, String property, String separator)
focal_class.identifier: join
focal_class.modifiers: public static
focal_class.parameters: (Collection<?> items, String property, String separator)
focal_class.return: String
focal_class.signature: String join(Collection<?> items, String property, String separator)
focal_method.body: public static Collection<?> substract(Collection<?> items, String property) {
          if (items == null) {
              return null;
          }
          if (StringUtils.isEmpty(property)) {
              throw new IllegalArgumentException("property name must not empty!");
          }
          Collection<Object> results = new ArrayList<Object>();
          for (Object item : items) {
              Map<String, Object> propValues = new BeanUtils(item).getPropValues();
              if (!propValues.containsKey(property)) {
                  throw new IllegalArgumentException("Property " + property + " not exists!");
              }
              results.add(propValues.get(property));
          }
          return results;
      }
focal_method.class_method_signature: CollectionUtils.substract(Collection<?> items, String property)
focal_method.full_signature: public static Collection<?> substract(Collection<?> items, String property)
focal_method.identifier: substract
focal_method.invocations: isEmpty getPropValues containsKey add get
focal_method.modifiers: public static
focal_method.parameters: (Collection<?> items, String property)
focal_method.return: Collection<?>
focal_method.signature: Collection<?> substract(Collection<?> items, String property)