public static double variance(Collection<?> inputList, String propertyPath) { double mean = mean(inputList, propertyPath); double temp = 0; double a; if (propertyPath.contains(".") || propertyPath.contains("[")) { String[] properties = StringScanner.splitByDelimiters(propertyPath, ".[]"); for (Object o : inputList) { a = BeanUtils.getPropertyInt(o, properties); temp += (mean - a) * (mean - a); } } else { Map<String, FieldAccess> fields = BeanUtils.getFieldsFromObject(inputList.iterator().next()); FieldAccess fieldAccess = fields.get(propertyPath); for (Object o : inputList) { a = fieldAccess.getInt(o); temp += (mean - a) * (mean - a); } } return Math.round(temp / inputList.size()); }
/** * Calculate a sum of a property from a list. * * @param inputList * @param propertyPath to item we want to sum * @return sum */ public static long sum(Collection<?> inputList, String propertyPath) { if (inputList.size() == 0) { return 0; } long sum = 0l; if (propertyPath.contains(".") || propertyPath.contains("[")) { String[] properties = StringScanner.splitByDelimiters(propertyPath, ".[]"); for (Object o : inputList) { sum += BeanUtils.getPropertyInt(o, properties); } } else { Map<String, FieldAccess> fields = BeanUtils.getFieldsFromObject(inputList.iterator().next()); FieldAccess fieldAccess = fields.get(propertyPath); for (Object o : inputList) { sum += fieldAccess.getInt(o); } } return sum; }
@Override public Object getValue(Object obj) { if (name.equals("this")) { return thisObject; } else { return BeanUtils.atIndex(thisObject, name); } }
public char fieldChar() { if (!path) { FieldAccess field1 = this.field(); return field1.getChar(objectUnderTest); } else { return BeanUtils.idxChar(objectUnderTest, name.toString()); } }
public long fieldLong() { if (!path) { FieldAccess field1 = this.field(); return field1.getLong(objectUnderTest); } else { return BeanUtils.idxLong(objectUnderTest, name.toString()); } }
public int fieldInt() { if (!path) { FieldAccess field1 = this.field(); return field1.getInt(objectUnderTest); } else { return BeanUtils.idxInt(objectUnderTest, name.toString()); } }
public byte fieldByte() { if (!path) { FieldAccess field1 = this.field(); return field1.getByte(objectUnderTest); } else { return BeanUtils.idxByte(objectUnderTest, name.toString()); } }
/** * Gets the field value. * * @return the value of the field */ public Object fieldValue() { if (!path) { FieldAccess field1 = this.field(); return field1.getValue(objectUnderTest); } else { return BeanUtils.atIndex(objectUnderTest, name.toString()); } }
@SuppressWarnings("unchecked") public static <T> T toPrimitiveArrayIfPossible(Class<T> clz, Object value) { if (clz == Typ.intArray) { return (T) iarray(value); } else if (clz == Typ.byteArray) { return (T) barray(value); } else if (clz == Typ.charArray) { return (T) carray(value); } else if (clz == Typ.shortArray) { return (T) sarray(value); } else if (clz == Typ.longArray) { return (T) larray(value); } else if (clz == Typ.floatArray) { return (T) farray(value); } else if (clz == Typ.doubleArray) { return (T) darray(value); } else if (value.getClass() == clz) { return (T) value; } else { int index = 0; Object newInstance = Array.newInstance(clz.getComponentType(), Boon.len(value)); Iterator<Object> iterator = iterator(Typ.object, value); while (iterator.hasNext()) { Object item = iterator.next(); if (clz.getComponentType().isAssignableFrom(item.getClass())) { BeanUtils.idx(newInstance, index, item); } else { item = coerce(clz.getComponentType(), item); BeanUtils.idx(newInstance, index, item); } index++; } return (T) newInstance; } }
public static Object toArrayGuessType(Collection<?> value) { Class<?> componentType = Reflection.getComponentType(value); Object array = Array.newInstance(componentType, value.size()); @SuppressWarnings("unchecked") Iterator<Object> iterator = (Iterator<Object>) value.iterator(); int index = 0; while (iterator.hasNext()) { BeanUtils.idx(array, index, iterator.next()); index++; } return array; }
/** * Gets the field value. * * @return the value of the field */ public FieldAccess field() { FieldAccess field; if (path) { field = BeanUtils.idxField(objectUnderTest, name.toString()); if (field == null) { return fakeField(); } return field; } if (name instanceof Enum) { name = Str.camelCaseLower(name.toString()); } field = fields().get(name); return field; }
private Map<String, FieldAccess> fields() { return BeanUtils.getFieldsFromObject(objectUnderTest); }
/** * Is this a property path? * * @param prop property * @return true or false */ private static boolean isPropPath(String prop) { return BeanUtils.isPropPath(prop); }
private Map<String, FieldAccess> fields() { if (objectUnderTest instanceof Map) { return BeanUtils.getFieldsFromObject(objectUnderTest); } if (fields == null) { fields = BeanUtils.getFieldsFromObject(objectUnderTest); } return fields; // if (objectUnderTest instanceof Map) { // final Map<String, Object> map = (Map<String, Object>) objectUnderTest; // return new Map<String, FieldAccess>() { // // @Override // public int size() { // return map.size(); // } // // @Override // public boolean isEmpty() { // return map.isEmpty(); // } // // @Override // public boolean containsKey(Object key) { // return map.containsKey(key); // } // // @Override // public boolean containsValue(Object value) { // return map.containsValue(value); // } // // @Override // public FieldAccess get(Object okey) { // // final String key = okey.toString(); // // return new FieldAccess() { // @Override // public boolean injectable() { // return false; // } // // @Override // public boolean requiresInjection() { // return false; // } // // @Override // public boolean isNamed() { // return false; // } // // @Override // public boolean hasAlias() { // return false; // } // // @Override // public String alias() { // return key; // } // // @Override // public String named() { // return key; // } // // @Override // public String name() { // return key; // } // // @Override // public Object getValue(Object obj) { // // Map<String, Object> map = (Map<String, Object>) obj; // // return map.get(key); // } // // @Override // public void setValue(Object obj, Object value) { // // Map<String, Object> map = (Map<String, Object>) obj; // // map.put(key, value); // // } // // @Override // public void setFromValue(Object obj, Value value) { // Map<String, Object> map = (Map<String, Object>) obj; // // map.put(key, value.toValue()); // // } // // @Override // public boolean getBoolean(Object obj) { // return false; // } // // @Override // public void setBoolean(Object obj, boolean value) { // // } // // @Override // public int getInt(Object obj) { // return 0; // } // // @Override // public void setInt(Object obj, int value) { // // } // // @Override // public short getShort(Object obj) { // return 0; // } // // @Override // public void setShort(Object obj, short value) { // // } // // @Override // public char getChar(Object obj) { // return 0; // } // // @Override // public void setChar(Object obj, char value) { // // } // // @Override // public long getLong(Object obj) { // return 0; // } // // @Override // public void setLong(Object obj, long value) { // // } // // @Override // public double getDouble(Object obj) { // return 0; // } // // @Override // public void setDouble(Object obj, double value) { // // } // // @Override // public float getFloat(Object obj) { // return 0; // } // // @Override // public void setFloat(Object obj, float value) { // // } // // @Override // public byte getByte(Object obj) { // return 0; // } // // @Override // public void setByte(Object obj, byte value) { // // } // // @Override // public Object getObject(Object obj) { // Map<String, Object> map = (Map<String, Object>) obj; // // return map.get(key); // // } // // @Override // public void setObject(Object obj, Object value) { // Map<String, Object> map = (Map<String, Object>) obj; // // map.put(key, value); // // // } // // // @Override // public Class<?> type() { // // Object value = map.get(key); // if (value==null) { // return Object.class; // } else { // return value.getClass(); // } // // } // // @Override // public TypeType typeEnum() { // // Object value = map.get(key); // if (value==null) { // return TypeType.OBJECT; // } else { // return TypeType.getInstanceType(value); // } // } // // @Override // public boolean isPrimitive() { // return false; // } // // @Override // public boolean isFinal() { // return false; // } // // @Override // public boolean isStatic() { // return false; // } // // @Override // public boolean isVolatile() { // return false; // } // // @Override // public boolean isQualified() { // return false; // } // // @Override // public boolean isReadOnly() { // return false; // } // // @Override // public boolean isWriteOnly() { // return false; // } // // // @Override // public Class<?> declaringParent() { // return Object.class; // } // // @Override // public Object parent() { // return map; // } // // @Override // public Field getField() { // return null; // } // // @Override // public boolean include() { // return false; // } // // @Override // public boolean ignore() { // return false; // } // // @Override // public ParameterizedType getParameterizedType() { // return null; // } // // @Override // public Class<?> getComponentClass() { // return null; // } // // @Override // public boolean hasAnnotation(String annotationName) { // return false; // } // // @Override // public Map<String, Object> getAnnotationData(String annotationName) { // return null; // } // // @Override // public boolean isViewActive(String activeView) { // return false; // } // // @Override // public void setStaticValue(Object newValue) { // // } // // @Override // public TypeType componentType() { // return null; // } // }; // } // // @Override // public FieldAccess put(String key, FieldAccess value) { // return null; // } // // @Override // public FieldAccess remove(Object key) { // return null; // } // // @Override // public void putAll(Map<? extends String, ? extends FieldAccess> m) { // // } // // @Override // public void clear() { // // } // // @Override // public Set<String> keySet() { // return map.keySet(); // } // // @Override // public Collection<FieldAccess> values() { // return null; // } // // @Override // public Set<Entry<String, FieldAccess>> entrySet() { // return null; // } // }; // } else { // // return BeanUtils.getFieldsFromObject(objectUnderTest); // } }