java代码生成器,根据entity实体进行分析生成

package com.example.administrator.demo;

import com.example.administrator.demo.common.utils.LogUtil;
import com.example.administrator.demo.main.bean.MainEntity;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2021/6/4.
 */

public class TestMain {

    public static void main(String[] args) {


        getPageName();

    }
    /**
     * 获取Entity对象下文件
     * */
    public static void getPageName() {
        Object entity = new MainEntity();
        String simpleName = entity.getClass().getSimpleName();
        simpleName = simpleName.replace("Entity", "");
        String packageName = entity.getClass().getPackage().getName();
        String packageName1 = packageName.replace(".", "\\");
        String entityPackage = "D:" + File.separator + "filepath" + File.separator + packageName1;
        String entityPackageAdapter = entityPackage + File.separator + "adapter" + File.separator;
        String entityPackageModel = entityPackage + File.separator + "model" + File.separator;
        String entityPackagePresenter = entityPackage + File.separator + "presenter" + File.separator;
        String entityPackageView = entityPackage + File.separator + "view" + File.separator;
        String entityPackageBean = entityPackage + File.separator + "bean" + File.separator;
        String res = entityPackage + File.separator + "res" + File.separator;
        /**生成文件夹*/
        List<String> list = new ArrayList<>();
        list.add(entityPackageAdapter);
        list.add(entityPackageModel);
        list.add(entityPackagePresenter);
        list.add(entityPackageView);
        list.add(entityPackageBean);
        list.add(res);
        for (int i = 0; i < list.size(); i++) {
            File testFile = new File(list.get(i));
            System.out.println(list.get(i));
            if (!testFile.exists()) {
                testFile.mkdirs();
            }
        }
        /**生成文件*/
        list.clear();
        list.add(entityPackageAdapter + simpleName + "Adapter.java");
        list.add(entityPackageModel + simpleName + "Model.java");
        list.add(entityPackageModel + "I" + simpleName + "Model.java");
        list.add(entityPackagePresenter + simpleName + "Presenter.java");
        list.add(entityPackagePresenter + "I" + simpleName + "Presenter.java");
        list.add(entityPackageView + simpleName + "Activity.java");
        list.add(entityPackageView + "I" + simpleName + "View.java");
        list.add(res + "activity_" + simpleName.toLowerCase() + ".xml");
        for (int i = 0; i < list.size(); i++) {
            try {
                File testFile = new File(list.get(i));
                System.out.println(list.get(i));
                if (testFile.exists()) {
                    testFile.delete();
                }
                if (!testFile.exists()) {
                    testFile.createNewFile();
                }
                BufferedWriter bw = new BufferedWriter(new FileWriter(testFile));
                if (i != list.size() - 1) {
                    bw.write("package " + packageName + ";\r\n");
                } else {
                    bw.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
                    bw.write("<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n");
                    bw.write(" xmlns:tools=\"http://schemas.android.com/tools\"\r\n" +
                            "    android:layout_width=\"match_parent\"\r\n" +
                            "    android:layout_height=\"match_parent\"\r\n" +
                            "    android:orientation=\"vertical\"\r\n" +
                            "    >\r\n" +
                            "</LinearLayout>");

                }
                String[] split = list.get(i).split("\\\\");
                String className = split[split.length - 1].replace(".java", "");

                switch (i) {
                    case 0:
                        bw.write("public class " + className + "{\r\n\r\n}");
                        break;
                    case 1:
                        bw.write("public class " + className + " extends BaseModel implements " + "I" + simpleName + "Model" + "{\r\n\r\n}");
                        break;
                    case 2:
                        bw.write("public interface " + className + "{\r\n\r\n}");
                        break;
                    case 3:
                        bw.write("public class " + className + " extends BasePresenter<IMainView> implements " + "I" + simpleName + "Presenter" + "{\r\n" +
                                "    MainModel model;\r\n" +
                                "    public MainPresenter(){\r\n" +
                                "        model = new MainModel();\r\n" +
                                "    }"

                                +"\r\n}");
                        break;
                    case 4:
                        bw.write("public interface " + className + "{\r\n\r\n}");
                        break;
                    case 5:
                        bw.write("public class " + className +" extends BaseMvpActivity<"+simpleName+"Presenter"+"> implements "+ "I" + simpleName + "View" + "{\r\n" +
                                "  @Override\r\n" +
                                "  protected void onCreate(Bundle savedInstanceState) {\r\n" +
                                "       super.onCreate(savedInstanceState);\r\n" +
                                "       setContentView(R.layout."+ "activity_" + simpleName.toLowerCase()+");\r\n"+
                                "  \r\n}"+
                                "\r\n}");
                        break;
                    case 6:
                        bw.write("public interface " + className +" extends IBaseView"+"{\r\n\r\n}");
                        break;

                }
                bw.close();
            } catch (Exception e) {

            }

        }

    }

    /**
     * 将Object对象里面的属性和值转化成Map对象
     *
     * @param obj
     * @return
     * @throws IllegalAccessException
     */
    public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<String, Object>();
        Class<?> clazz = obj.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            field.setAccessible(true);
            String type = field.getType().toString();
            String fieldName = field.getName();
            Object value = field.get(obj);
            map.put(fieldName, type);
        }
        return map;
    }
}


项目地址https://gitee.com/chen_xiao_hong/android-template.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天来临

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值