您的位置:首页 > 编程语言 > Java开发

Java自动生成Mvp框架目录结构

2017-02-23 14:33 357 查看
在朋友的帮助下,写了一个自动生成Mvp框架目录结构的工具类,分享出来。(。・`ω´・)

package com.example;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/*import cn.lebaodai.common.util.FormData.FieldData;
import cn.lebaodai.lbd.dao.impl.ActivityDao;
import cn.lebaodai.lbd.vo.Activity;*/

/**
* Created by Aloha <br>
* -explain Mvp目录结构自动生成
* @Date 2017/2/13 9:48
*/
public class AutoGenerationMvp {

static String className = "Sample";

static String modelName = className+"Model";
static String viewName = "I"+className+"View";
static String viewActivityName = className+"Activity";
static String viewFragmentName = className+"Fragment";
static String presenterName = className+"Presenter";

static String modelPackage = "model/sample";
static String viewPackage = "ui/activity/sampleactivity/view";
static String presenterPackage = "ui/activity/sampleactivity/presenter";

static String iMoudel = createIMoudel();
static String moudel = createMoudel();
static String iView = createIView();
static String view = createActivityView();
static String iPresenter = createIPresenter();
static String presenter = createPresenter();

/**
* @param args
*/
public static void main(String[] args){

saveFile("I"+modelName, iMoudel,modelPackage);
saveFile(modelName, moudel,modelPackage);
saveFile(viewName, iView,viewPackage);
saveFile(viewActivityName, view,viewPackage);
saveFile("I"+presenterName, iPresenter,presenterPackage);
saveFile(presenterName, presenter,presenterPackage);
}

public static  String createIMoudel(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+modelPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="import aloha.shiningstarbase.base.IBaseModel"+";\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public interface I"+modelName+" extends IBaseModel"+" {\r";
text+="\r";
text+="    void sampleFuntion();\r";
text+="\r";
text+="}\r";
return text;
}

public static  String createMoudel(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+modelPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public class "+modelName+" implements I"+modelName+" {\r";
text+="\r";
text+="    @Override\r";
text+="    public void sampleFuntion() {\r";
text+="\r";
text+="    } \r";
text+="\r";
text+="}\r";
return text;
}

public static  String createIView(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+viewPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="import aloha.shiningstarbase.base.IBaseView;\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public interface "+viewName+" extends IBaseView"+" {\r";
text+="\r";
text+="    void showDataSampleFuntion();\r";
text+="\r";
text+="}\r";
return text;
}

public static  String createActivityView(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+viewPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="import aloha.shiningstarbase.base.BaseActivity;\r";
text+="import aloha.shiningstar.lockerstudy.R;\r";
text+="import aloha.shiningstar.lockerstudy.ui.activity.sampleactivity.presenter."+presenterName+";\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public class "+viewActivityName+" extends BaseActivity <"+ viewName +","+presenterName+"> " +
"implements "+viewName+" {\r";
text+="\r";
text+="    @Override\r";
text+="    protected void init() {\r";
text+="\r";
text+="    }\r";
text+="\r";
text+="    @Override\r";
text+="    protected "+presenterName+" CreatePresenter(){\r";
text+="        return new "+presenterName+"();\r";
text+="    }\r";
text+="\r";
text+="    @Override\r";
text+="    protected int getLayoutID() {\r";
text+="         return R.layout.activity_main;\r";
text+="    }\r";
text+="\r";
text+="    @Override\r";
text+="    public void showDataSampleFuntion() {\r";
text+="\r";
text+="    }\r";
text+="\r";
text+="}\r";
return text;
}

public static  String createIPresenter(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+presenterPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public interface I"+presenterName+" {\r";
text+="\r";
text+="    //定义presenter 接口回调\r";
text+="    void getDataSampleFuntion(String request);\r";
text+="\r";
text+="}\r";
return text;
}

public static  String createPresenter(){
String text="";
text+="package aloha.shiningstar.lockerstudy."+presenterPackage.replaceAll("/",".")+";\r";
text+="\r";
text+="import aloha.shiningstarbase.base.BasePresenter;\r";
text+="import aloha.shiningstar.lockerstudy.ui.activity.sampleactivity.view."+viewName+";\r";
text+="\r";
text+="/**\r";
text+=" * Created by Aloha <br>\r";
text+=" * -explain\r";
text+=" * @version 1.0\r";
text+=" */\r";
text+="public class "+presenterName+" extends BasePresenter<"+viewName+"> implements "+"I"+presenterName+ " {\r";
text+="\r";
text+="    public "+presenterName+"() {\r";
text+="        //获取model\r";
text+="\r";
text+="    }\r";
text+="\r";
text+="  /**\r";
text+="    * 实现presenter接口方法\r";
text+="    */\r";
text+="    @Override\r";
text+="    public void getDataSampleFuntion(String request){\r";
text+="\r";
text+="    }\r";
text+="\r";
text+="  /**\r";
text+="    * Created by Aloha <br>\r";
text+="    * -explain Model层请求数据,BasePresent层统一做网络请求,回调到子类presenter监听\r";
text+="    * @Date 2017/01/01 12:00\r";
text+="    */\r";
text+="    @Override\r";
text+="    protected void onResponseAsyncDeal(int status, String message, String result, String requestID) {\r";
text+="\r";
text+="    }\r";
text+="\r";
text+="}\r";
return text;
}

public static void saveFile(String classname, String text,String pageName) {
System.out.print("text:"+text);
System.out.print("创建java类:" + classname);
String filepath = Thread.currentThread().getContextClassLoader()
.getResource(".").getPath();

System.out.print("filepath:"+filepath);

String[] fileP = filepath.split("target");
System.out.print(fileP[0]);

/*File file = new File(fileP[0] + "C:/Android/QwQ/LockerStudy/app/src/main/java/aloha/shiningstar/lockerstudy/"+pageName+"/"
+ firstUpper(classname) + ".java");*/
/* File file = new
File("F\:\lebaodai\myelicpseWs\trunk\src\main\java\cn\lebaodai\lbd\vo\Msg_push.java");*/
//你的工程目录
File file = new File("C:/Android/QwQ/LockerStudy/app/src/main/java/aloha/shiningstar/lockerstudy/"+pageName+"/"
+ firstUpper(classname) + ".java");
if (file.exists()) {
file.delete();
}

//创建文件夹,2层
if (!file.getParentFile().getParentFile().exists())
file.getParentFile().getParentFile().mkdir();
if (!file.getParentFile().exists())
file.getParentFile().mkdir();

try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter out;
BufferedWriter writer;
try {
out =  new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getPath()),"GBK")));
/*writer = new BufferedWriter(
new FileWriter(new File(file.getPath())),"asd");*/
out.write(text);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public static String firstUpper(String text){
String a1 = text.substring(0,1);
String a2=text.substring(1);
return a1.toUpperCase()+a2;
}
}


使用方法如下:

1、New 一个 Java Moudle



2、我的build.gradle 如下



3、将上面的代码copy 到新建的moudle 下,因为是java main方法,所以在AS 下运行的话,需要添加java 运行环境。

4、修改你想生成的类名,文件目录结构



5、修改你的工程目录结构



6、最后完成了,直接run 就得了。你也可以根据自己的需求,再做修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvp android