用于生成mock模型对象Setter代码工具类

最近写的一个工具类, 用来生成mock的javabean对象, 比如将一条模拟数据直接生成javabean的setter代码
public class MockBuilder extends ToStringBuilder {
private String objectName;
/** 是否包含日期时间字段 */
private boolean includeDateField = false;

public MockBuilder(Object object, String objectName) {
super(object, ToStringStyle.MULTI_LINE_STYLE, null);
this.setObjectName(objectName);
}

public MockBuilder(Object object, String objectName,
boolean includeDateField) {
this(object, objectName);
this.includeDateField = includeDateField;
}

public static String toString(Object object, String objectName) {
return toString(object, objectName, false);
}

public static String toString(Object object, String objectName,
boolean includeDate) {
return new MockBuilder(object, objectName, includeDate).toString();
}

public static void sysPrint(Object object, String objectName) {
sysPrint(object, objectName, false);
}

/**
* @param object
* @param objectName
* @param includeDate 是否包含日期时间字段
*/
public static void sysPrint(Object object, String objectName,
boolean includeDate) {
System.out.println(toString(object, objectName, includeDate));
}

@SuppressWarnings("unchecked")
public String toString() {
if (this.getObject() == null) {
return "<null>";
}
getStringBuffer().delete(0, getStringBuffer().length());
Class clazz = this.getObject().getClass();
this.appendWriteMethods(clazz);
return this.getStringBuffer().toString();
}

public void setObjectName(String objectName) {
this.objectName = objectName;
}

public String getObjectName() {
return objectName;
}

@SuppressWarnings("unchecked")
protected void appendWriteMethods(Class clazz) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
PropertyDescriptor[] descriptors = beanInfo
.getPropertyDescriptors();
for (PropertyDescriptor descriptor : descriptors) {
Method writeMethod = descriptor.getWriteMethod();
if (writeMethod == null)
continue;

Method readMethod = descriptor.getReadMethod();
if (readMethod == null) {
continue;
}

String setterName = writeMethod.getName();

Object value = readMethod.invoke(getObject(), new Object[] {});

if (value == null) {
continue;
}

if (value instanceof Number) {
if (((Number) value).doubleValue() == 0) {
continue;
}
}

if (value instanceof Date) {
if (includeDateField) {
value = "new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").parse(\""
+ new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
.format(value) + "\")";
} else {
continue;
}
} else if (value instanceof String) {
if (value.equals("")) {
continue;
}
value = "\"" + value + "\"";
}

if (value instanceof List) {
continue;
}

this.getStringBuffer().append(objectName).append(".").append(
setterName).append("(").append(value).append(");\n");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args) {
SpuDO spu = new SpuDO();
spu.setName("The Body Shop橙花茉莉香水");
System.out.println(toString(spu, "spuMock"));
;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值