Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/com/activeandroid/DatabaseHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ private void executeCreate(SQLiteDatabase db) {
db.beginTransaction();
try {
for (TableInfo tableInfo : Cache.getTableInfos()) {
if(tableInfo.isView()) continue;
db.execSQL(SQLiteUtils.createTableDefinition(tableInfo));
}
db.setTransactionSuccessful();
Expand Down
6 changes: 3 additions & 3 deletions src/com/activeandroid/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,19 @@ public Model() {
// PUBLIC METHODS
//////////////////////////////////////////////////////////////////////////////////////

public final Long getId() {
public Long getId() {
return mId;
}

public final void delete() {
public void delete() {
Cache.openDatabase().delete(mTableInfo.getTableName(), idName+"=?", new String[] { getId().toString() });
Cache.removeEntity(this);

Cache.getContext().getContentResolver()
.notifyChange(ContentProvider.createUri(mTableInfo.getType(), mId), null);
}

public final Long save() {
public Long save() {
final SQLiteDatabase db = Cache.openDatabase();

ContentValues values = new ContentValues();
Expand Down
9 changes: 8 additions & 1 deletion src/com/activeandroid/TableInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public final class TableInfo {
private Class<? extends Model> mType;
private String mTableName;
private String mIdName = Table.DEFAULT_ID_NAME;
private boolean mView;

private Map<Field, String> mColumnNames = new LinkedHashMap<Field, String>();

Expand All @@ -54,9 +55,11 @@ public TableInfo(Class<? extends Model> type) {
if (tableAnnotation != null) {
mTableName = tableAnnotation.name();
mIdName = tableAnnotation.id();
mView = tableAnnotation.view();
}
else {
mTableName = type.getSimpleName();
mView = View.class.isAssignableFrom(type);
}

// Manually add the id column since it is not declared like the other columns.
Expand Down Expand Up @@ -95,7 +98,11 @@ public String getIdName() {
return mIdName;
}

public Collection<Field> getFields() {
public boolean isView() {
return mView;
}

public Collection<Field> getFields() {
return mColumnNames.keySet();
}

Expand Down
30 changes: 30 additions & 0 deletions src/com/activeandroid/View.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.activeandroid;

import com.activeandroid.util.SQLiteUtils;

import java.util.List;

public abstract class View extends Model {
public abstract String getQuery();

@Override
public void delete() {
throw new RuntimeException("Cannot delete view row");
}

@Override
public Long save() {
throw new RuntimeException("Cannot save view row");
}

@SuppressWarnings("UnusedDeclaration")
public static <E extends View> List<E> getRows(Class<E> viewClass, String... params) {
String query;
try {
query = viewClass.newInstance().getQuery();
return SQLiteUtils.rawQuery(viewClass, query, params);
} catch (Exception e) {
throw new RuntimeException("Cannot create view row.", e);
}
}
}
1 change: 1 addition & 0 deletions src/com/activeandroid/annotation/Table.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@
public static final String DEFAULT_ID_NAME = "Id";
public String name();
public String id() default DEFAULT_ID_NAME;
boolean view() default false;
}