Skip to content

Commit

Permalink
Merge pull request #459 from nurolopher/master
Browse files Browse the repository at this point in the history
Comments on migrations files
  • Loading branch information
sibelius committed Dec 5, 2015
2 parents 0004c12 + 79bd040 commit 71444db
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 4 deletions.
11 changes: 9 additions & 2 deletions library/src/main/java/com/orm/SchemaGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.orm.dsl.MultiUnique;
import com.orm.dsl.NotNull;
import com.orm.dsl.Unique;
import com.orm.util.MigrationFileParser;
import com.orm.util.NamingHelper;
import com.orm.util.NumberComparator;
import com.orm.util.QueryBuilder;
Expand Down Expand Up @@ -98,11 +99,17 @@ private void executeScript(SQLiteDatabase db, String file) {
try {
InputStream is = this.context.getAssets().open("sugar_upgrades/" + file);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
Log.i("Sugar script", line);
db.execSQL(line);
sb.append(line);
}
MigrationFileParser migrationFileParser = new MigrationFileParser(sb.toString());
for(String statement: migrationFileParser.getStatements()){
Log.i("Sugar script", statement);
db.execSQL(statement);
}

} catch (IOException e) {
Log.e(SUGAR, e.getMessage());
}
Expand Down
2 changes: 0 additions & 2 deletions library/src/main/java/com/orm/SugarContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@ public class SugarContext {

private static SugarContext instance = null;
private SugarDb sugarDb;
private Context context;
private Map<Object, Long> entitiesMap;

private SugarContext(Context context) {
this.context = context;
this.sugarDb = new SugarDb(context);
this.entitiesMap = Collections.synchronizedMap(new WeakHashMap<Object, Long>());
}
Expand Down
21 changes: 21 additions & 0 deletions library/src/main/java/com/orm/util/MigrationFileParser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.orm.util;

/**
* Created by Nursultan Turdaliev on 12/4/15.
*/
public class MigrationFileParser {

private String content;

/**
* @param content
*/
public MigrationFileParser(String content){
this.content = content.replaceAll("(\\/\\*([\\s\\S]*?)\\*\\/)|(--(.)*)|(\n)","");
}

public String[] getStatements(){
return this.content.split(";");
}

}
48 changes: 48 additions & 0 deletions library/src/test/java/com/orm/util/MigrationFileParserTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.orm.util;

import com.orm.util.MigrationFileParser;

import org.junit.Test;
import org.junit.Before;

import java.lang.String;

import static junit.framework.Assert.assertEquals;

public class MigrationFileParserTest{
MigrationFileParser emptyFile;

@Test
public void testSingleLineStatement()
{
MigrationFileParser singleLineComment = new MigrationFileParser("insert into table--comment");

String statements[] = singleLineComment.getStatements();
assertEquals("Testing single line statement size",1,statements.length);
assertEquals("Testing single line statement content","insert into table",statements[0]);

singleLineComment = new MigrationFileParser("insert into table--comment\n");

singleLineComment.getStatements();
assertEquals("Testing single line statement size",1,statements.length);
assertEquals("Testing single line statement content","insert into table",statements[0]);
}
@Test
public void testMultiLineComment(){
MigrationFileParser multiLineComment = new MigrationFileParser("insert into table /**comment \n new line 2 \n new line 3 */hello");

String statements[] = multiLineComment.getStatements();
assertEquals("Testing multiline statement size",1,statements.length);
assertEquals("Testing multiline comment","insert into table hello",statements[0]);
}

@Test
public void testMixedComment(){
MigrationFileParser mixedComment = new MigrationFileParser("insert into/*multiline\n **comment*/--comment");

String statements[] = mixedComment.getStatements();

assertEquals("Testing mixed comment statement size",1,statements.length);
assertEquals("Testing mixed comment statments", "insert into", statements[0]);
}
}

0 comments on commit 71444db

Please sign in to comment.