public class UserDbMetaData extends DbMetaData {
private String mUin = null;
public UserDbMetaData(String uin){
mUin = uin;
}
@Override
public int getDatabaseVersion() {
return 12;
}
@Override
public String getDatabaseName() {
return "user_"+mUin+".db";
}
@Override
public String getMigrationPath() {
return "migration/user";
}
/**
* When this flag return true, opening database under this dbMetaData will be
* closed if new one is register. As example:
*
* registerDb(1) -- database user_1.db is opened
* registerDb(2) -- database user_1.db is closed and user_2.db is opened
*/
@Override
public boolean isResettable() {
return true;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 5) {
// do somthing
}
if (newVersion >= 7) {
// do somthing
}
}
/**
* You need to override equals method to tell ActiveAndroid how to
* identify DbMetaData to avoid open-close database too often
*/
@Override
public boolean equals(Object anotherObj) {
UserDbMetaData anotherUserDbMetaData = (UserDbMetaData) anotherObj;
return (mUin.equals(anotherUserDbMetaData.mUin));
}
/**
* Call me when you are ready to open a database
*/
public static void registerDb(String uin) {
UserDbMetaData dbMetaData = new UserDbMetaData(uin);
ActiveAndroid.registerDbMetaData(Configuration.getInstance().getAppContext(), dbMetaData);
}
}
@DatabaseMetaData(metadataClass = UserDbMetaData.class)
public class Album extends Model implements Serializable { ... }