package org.fanzone.util;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* Title: Touch<br>
* Description: Base Handler Utilities<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 2, 2011 2:40:20 PM <br>
* @author wangmeng
*/
public class SenchaUtil {
/**
* Appending object via string.
* @param object
* @return java.lang.String
*/
public static String objectToJson(Object object) {
StringBuilder json = new StringBuilder();
if (object == null) {
json.append("\"\"");
}else if (object instanceof String ) {
json.append("\"").append((String)object).append("\"");
}else if (object instanceof Long){
json.append("\"").append((Long)object).append("\"");
}else if (object instanceof Integer){
json.append("\"").append((Integer)object).append("\"");
}else if (object instanceof Double){
json.append("\"").append((Double)object).append("\"");
}else if (object instanceof Float){
json.append("\"").append((Float)object).append("\"");
}else if (object instanceof Short){
json.append("\"").append((Short)object).append("\"");
}else if (object instanceof Character){
json.append("\"").append((Character)object).append("\"");
}else if (object instanceof Character){
json.append("\"").append((Character)object).append("\"");
}else {
json.append(beanToJson(object));
}
return json.toString();
}
/**
* Formating attributes.
* @param bean
* @return String
*/
public static String beanToJson(Object bean) {
StringBuilder json = new StringBuilder();
json.append("{");
PropertyDescriptor[] props = null;
try {
props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
} catch (IntrospectionException e) {
}
if (props != null) {
for (int i = 0; i < props.length; i++) {
try {
String name = objectToJson(props[i].getName());
String value = objectToJson(props[i].getReadMethod().invoke(bean));
json.append(name);
json.append(":");
json.append(value);
json.append(",");
} catch (Exception e) {
}
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* Make List to JSON formated.
* @param list
* @return java.lang.String
*/
public static String listToJson(List<?> list) {
StringBuilder json = new StringBuilder();
json.append("{"+'"'+list.get(0).getClass().getSimpleName()+'"'+":[");
if((list != null) && (list.size() > 0)) {
for(Object obj : list){
json.append(objectToJson(obj));
json.append(",");
}
json.setCharAt(json.length()-1, ']');
}else {
json.append("]");
}
json.append("}");
return json.toString();
}
/**
* Make Set to JSON formated.
* @param list
* @return java.lang.String
*/
public static String setToJson(Set<?> set){
StringBuilder json = new StringBuilder();
Iterator<?> itr = set.iterator();
if(itr.hasNext()){
json.append("{"+'"'+itr.next().getClass().getSimpleName()+'"'+":[");
}
if(set != null && set.size() > 0){
for(Object obj : set){
json.append(objectToJson(obj));
json.append(",");
}
json.setCharAt(json.length()-1, ']');
}else{
json.append("]");
}
json.append("}");
return json.toString();
}
/**
* To build model in dynamic.
* @param className
* @return model string
*/
public static StringBuilder buildModel(String className){
StringBuilder builder = new StringBuilder();
Class<?> c;
PropertyDescriptor[] props = null;
try {
c = Class.forName(className);
builder.append("Ext.regModel('"+c.getSimpleName()+"', {");
builder.append("fields: [");
props = Introspector.getBeanInfo(c, Object.class).getPropertyDescriptors();
if (props != null) {
for (int i = 0; i < props.length; i++) {
String name = props[i].getName();
String type = props[i].getReadMethod().toString();
type = type.substring(type.indexOf(" ")+1, type.lastIndexOf(" "));
type = type.substring(type.lastIndexOf(".")+1,type.length());
builder.append("{name: '"+name+"', type: '"+type.toLowerCase()+"'},");
}
builder.replace(builder.length()-1, builder.length(), "");
}
builder.append("]");
builder.append("});");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return builder;
}
/**
* To fetch all the entities under the specified package.
* @param pack
* @return entity list
*/
public static List<String> entities(String pack){
List<String> entities = new ArrayList<String>();
String classes = System.getProperty("java.class.path");
String dir = classes.substring(0,classes.indexOf(";"));
String path = dir + '\\' + pack.replace('.', '\\');
File file = new File(path);
if(file.exists()){
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
entities.add(pack+'.'+f.getName().substring(0,f.getName().indexOf(".")));
}
}
}
return entities;
}
/**
* Build models with the specified package.
* @param pack
* @return all models string.
*/
public static StringBuilder buildModels(String pack){
StringBuilder builder = new StringBuilder();
for(String entity : entities(pack)){
builder.append(buildModel(entity));
builder.append("\r\n");
}
return builder;
}
/**
* Test Main
* @param args
*/
public static void main(String[] args) {
System.out.println(buildModels("org.mars.entity"));
}
}
分享到:
相关推荐
extjs动态生成model、store、panel;sql拼接等多种技术难点
这是最近写的一个根据数据模型动态创建类也就是MVC中使用的Model的例子,可以在运行时动态生成数据库表对应的MODEL,同时保存为DLL,加载和使用。正在用EF的朋友可以研究下,因为只不过当MODEL数据用,所以我只实现...
这个是我在工作的时候需要使用的工具,大大减轻了工作量,拿出来共享一下。此为C#开发,所以需要安装.Net版本为2.0或者以上。希望对你有帮助。
配置好数据库,和表名以及生成目录,可以自动生成Model文件,可以自己修改或者,配置好以后运行codegen_test.go
1、基于T4的代码生成工具,根据数据库元数据信息生成代码,支持多数据库,支持批量代码生成; 2、支持根据PowerDesigner物理模型文件来生成代码; 3、内置了一个简单的文本编辑器,支持代码高亮显示; 4、数据库...
找了很久的东西,mybatis+freemake自定义生成代码器,原来的代码生成器只能生成mapper,service,model感觉没多大用,自定义模板真的节约的好多时间
QTreeView是用来显示树型结构的数据,比如目录组织,公司组织架构等,数据量小可以用Qt自带的Model实现,如果数据量大,则需要用自定义的Model实现,下面介绍自定义实现的方法。
Code Generation Tool(C#)是专门针对SQL SERVER 2005以上数据库实现自动生成DAL层的MODEL的C#代码。在分层开发中,将数据库表实现类操作是常用的方法,但是枯燥和繁琐的代码编写占用了我们大量的时间,于是通过使用...
QTreeView树形视图使用自定义模型model,不是改造QT例子。
1.input 输入框 v-model 绑定的字段名需要根据后台返回的数据动态生成,此时就不可以用 v-model绑定,而是用传统的方法 value 动态绑定,并且用子组件绑定向父组件传递值和事件。 代码如下: //子组件 <input ...
CodeGen,一个很好的自动生成DAL. Model层代码的工具源码 大家可以下载下来,根据自己的项目需要进行修改..好东东下载吧
vue自定义组件实现v-model双向绑定数据的实例代码 项目中会遇到自定义公共组件供项目调用,正常情况可以使用 props定义参数接收父组件传的参数,然后通过子组件的$emits()方法回传数据给父组件。 类似如下: 父...
iOS 效率工具:自动生成 Model 文件(数据模型) / iOS efficiency tool : create data model files automatically —— Latest version : 1.0.1
文件中包括两种5个文件: 1、Oledb 包括使用access...4、Model 包含一个一次生成所有Model中实体类的模板。 CodeSmith模板可以由用户自定义。其语法与C#语法类似。 ****************请支持原创****************
C#代码模板生成器; Model层;DAL层;BLL层代码自动生成; 连接数据库,查询表字段,创建数据模型; 查询表字段,构造数据逻辑; 查询表字段,构造数据库交互的代码。
NULL 博文链接:https://tcspecial.iteye.com/blog/1880711
自动生成MODEL,和部分数据存储数据结构
MVC model层代码生成器 C# MVC model层代码生成器 C# MVC model层代码生成器 C#
iOS json生成model工具,mac电脑上dmg格式,安装即可使用,自动生成model
根据db生成model