package cn.org.rapid_framework.util;
import java.io.FileNotFoundException;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.beanutils.converters.BigDecimalConverter;
import org.apache.commons.beanutils.converters.BigIntegerConverter;
import org.apache.commons.beanutils.converters.BooleanConverter;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.converters.DateTimeConverter;
import org.apache.commons.beanutils.converters.DoubleConverter;
import org.apache.commons.beanutils.converters.FloatConverter;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.commons.beanutils.converters.LongConverter;
import org.apache.commons.beanutils.converters.ShortConverter;
import org.apache.commons.beanutils.converters.SqlDateConverter;
import org.apache.commons.beanutils.converters.SqlTimeConverter;
import org.apache.commons.beanutils.converters.SqlTimestampConverter;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.views.util.ResourceUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.ResourceUtils;
import cn.org.rapid_framework.beanutils.BeanUtils;
import cn.org.rapid_framework.beanutils.converter.StringConverter;
public class MiscTest extends TestCase {
public void test_getFile() throws FileNotFoundException {
assertNotNull(ResourceUtils.getFile("classpath:cn/org"));
assertNotNull(new ClassPathResource("cn/org"));
assertNotNull(new ClassPathResource("/cn/org"));
}
public void test_removeString() {
assertEquals("abc123456",StringUtils.remove("abc-123-456", "-"));
// assertEquals("abc123456",StringUtils.remove(UUID.randomUUID().toString(), "-"));
assertEquals("abc.file","classpath:abc.file".substring("classpath:".length()));
Map map = new HashMap();
map.put("array", new String[]{"123","abc"});
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v4");
System.out.println(map);
System.out.println(toString(map));
}
public void test_convert_utils() {
ConvertUtilsBean convert = new ConvertUtilsBean();
registerConverters(convert, new String[]{"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm:ss.SSS"});
System.out.println(convert.convert("2010-01-01", java.util.Date.class));
System.out.println(convert.convert("2010-01-01 10:10:10", java.util.Date.class));
System.out.println(convert.convert("2010-01-01 10:10:10.102", java.sql.Timestamp.class));
}
public static void registerConverters(ConvertUtilsBean convertUtils,String[] datePatterns) {
convertUtils.register(new StringConverter(), String.class);
//date
convertUtils.register(setPatterns(new DateConverter(null),datePatterns),java.util.Date.class);
convertUtils.register(setPatterns(new SqlDateConverter(null),datePatterns),java.sql.Date.class);
convertUtils.register(setPatterns(new SqlTimeConverter(null),datePatterns),Time.class);
convertUtils.register(setPatterns(new SqlTimestampConverter(null),datePatterns),Timestamp.class);
//number
convertUtils.register(new BooleanConverter(null), Boolean.class);
convertUtils.register(new ShortConverter(null), Short.class);
convertUtils.register(new IntegerConverter(null), Integer.class);
convertUtils.register(new LongConverter(null), Long.class);
convertUtils.register(new FloatConverter(null), Float.class);
convertUtils.register(new DoubleConverter(null), Double.class);
convertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
convertUtils.register(new BigIntegerConverter(null), BigInteger.class);
}
public static <T extends DateTimeConverter> T setPatterns(T converter ,String... patterns) {
converter.setPatterns(patterns);
return converter;
}
public static String toString(Map<?,?> map) {
StringBuffer sb = new StringBuffer();
int count = 0;
for(Map.Entry<?,?> entry : map.entrySet()) {
Object value = entry.getValue();
if(value != null && value.getClass().isArray()) {
sb.append(entry.getKey()+"="+Arrays.toString((Object[])value));
}else {
sb.append(entry.getKey()+"="+value);
}
if(count++ != map.size() - 1) {
sb.append(',');
}
}
return sb.toString();
}
public void test() {
Reference<String> ref = new PhantomReference<String>("", null);
}
public void testBeanProperty() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Map map = org.apache.commons.beanutils.BeanUtils.describe(new ProBean());
assertTrue(map.toString(),map.containsKey("PUserName"));
assertTrue(map.toString(),map.containsKey("username"));
assertTrue(map.toString(),map.containsKey("puserName"));
System.out.println(map);
}
public static class ProBean {
private String puserName;
private String username;
public String getPuserName() {
return puserName;
}
public void setPuserName(String puserName) {
this.puserName = puserName;
}
public String getPUserName() {
return puserName;
}
public void setPUserName(String puserName) {
this.puserName = puserName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
}