diff --git a/app/build.gradle b/app/build.gradle index 69827a7..b82f14a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,7 +45,36 @@ android { task processorTask(type: Copy) { from '../processor/build/libs/processor.jar' into 'libs/' } + +//region 如果需要注释,注释掉可以合并起来的这一段全部 +task fileCheckTask() { + //delete('/app/src/main/assets/migrations') + //此方法执行以后会删除所有的version.sql文件,不能主动添加sql语句 + //如果已经定义、实现的注解不能满足更新要求,请自己添加sql语句,并且将下面删除文件的语句注释 + //注意 注释以后不要打开(写这个task是为了试验) + doLast { + File file = new File(rootDir.getAbsolutePath() + "\\app\\src\\main\\assets\\migrations") + File[] files = file.listFiles() + for (int i = 0; i < files.length; i++) { + File file1 = files[i] + println("delete : "+file1.getAbsolutePath()) + file1.delete() + } + } +} + +afterEvaluate { + tasks.matching { + it.name.startsWith('process') && (it.name.endsWith('ReleaseJavaRes') || it.name.endsWith + ('DebugJavaRes')) + }.each { tk -> + tk.dependsOn(fileCheckTask) + } +} +//endregion + processorTask.dependsOn(':processor:build') + preBuild.dependsOn(processorTask) greendao { schemaVersion 1//数据库版本升级 @@ -66,4 +95,4 @@ dependencies { compile 'me.leolin:ShortcutBadger:1.1.19@aar' annotationProcessor 'com.google.dagger:dagger-compiler:2.12' compile files('libs/processor.jar') -} +} \ No newline at end of file diff --git a/app/libs/processor.jar b/app/libs/processor.jar index 486ef7a..279fe2c 100644 Binary files a/app/libs/processor.jar and b/app/libs/processor.jar differ diff --git a/app/src/main/assets/migrations/1.sql b/app/src/main/assets/migrations/1.sql deleted file mode 100644 index 6ac2fbd..0000000 --- a/app/src/main/assets/migrations/1.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER table message add COLUMN test TEXT -UPDATE message SET test = 'sql默认' WHERE test= NULL diff --git a/app/src/main/assets/migrations/3.sql b/app/src/main/assets/migrations/3.sql new file mode 100644 index 0000000..24d224b --- /dev/null +++ b/app/src/main/assets/migrations/3.sql @@ -0,0 +1,3 @@ +ALTER table test ADD COLUMN age INTEGER +ALTER table test ADD COLUMN area INTEGER +ALTER table test ADD COLUMN name TEXT diff --git a/app/src/main/java/com/shunzhi/parent/annotation/VersionTest.java b/app/src/main/java/com/shunzhi/parent/annotation/VersionTest.java index 7c38bb6..8dd616c 100644 --- a/app/src/main/java/com/shunzhi/parent/annotation/VersionTest.java +++ b/app/src/main/java/com/shunzhi/parent/annotation/VersionTest.java @@ -2,6 +2,11 @@ package com.shunzhi.parent.annotation; import org.shunzhi.processorlibs.AddColumn; +/* +Error:groovy.lang.MissingMethodException: No signature of method: +java.io.File.plus() is applicable for argument types: (java.lang.String) values: [\app\src\main\assets\migrations] + */ + public class VersionTest { @AddColumn(version = 3, tableName = "test", type = "String") private String name; diff --git a/processor/src/main/java/org/shunzhi/processorlibs/Update.java b/processor/src/main/java/org/shunzhi/processorlibs/Update.java new file mode 100644 index 0000000..398bd0d --- /dev/null +++ b/processor/src/main/java/org/shunzhi/processorlibs/Update.java @@ -0,0 +1,39 @@ +package org.shunzhi.processorlibs; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 可能会使用到,只定义了注解,逻辑处理需要在VersionProcessor类中实现
+ * 需要使用的时候自己实现 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.SOURCE) +public @interface Update { + String columnName(); + + String tableName(); + + int version(); + + /** + * 请设置类型 + * {@link Update#valueType()} + */ + String strValue() default ""; + + /** + * 请设置类型 + * {@link Update#valueType()} + */ + int intValue() default -1; + + /** + * 类型需要与值对应,不对应可能会导致更新数据库失败 + */ + String valueType(); + + boolean boolValue() default false; +} diff --git a/processor/src/main/java/org/shunzhi/processorlibs/VersionProcessor.java b/processor/src/main/java/org/shunzhi/processorlibs/VersionProcessor.java index 506ebb0..9ca6b7d 100644 --- a/processor/src/main/java/org/shunzhi/processorlibs/VersionProcessor.java +++ b/processor/src/main/java/org/shunzhi/processorlibs/VersionProcessor.java @@ -8,8 +8,11 @@ import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintStream; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import javax.annotation.processing.AbstractProcessor; @@ -31,24 +34,31 @@ public class VersionProcessor extends AbstractProcessor { public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) { // File file = new File("test"); // if (!file.exists())file.mkdir(); -// File countFile = new File("测试数据.txt"); -// try { -// BufferedWriter writer = new BufferedWriter(new FileWriter(countFile)); -// writer.write(System.currentTimeMillis() + ""); -// writer.newLine(); -// writer.flush();writer.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ", Locale.CHINA); + File countFile = new File("buildData.txt"); + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(countFile)); + writer.write(format.format(new Date())); + writer.newLine(); + writer.flush(); + //writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } BufferedWriter testBw = null; HashMap