Add 'repo.version' integer
This commit is contained in:
parent
eeeace080f
commit
e9abbfa743
@ -430,6 +430,7 @@ public class DB {
|
||||
public String address;
|
||||
public String name;
|
||||
public String description;
|
||||
public int version; // index version, i.e. what fdroidserver built it - 0 if not specified
|
||||
public boolean inuse;
|
||||
public int priority;
|
||||
public String pubkey; // null for an unsigned repo
|
||||
@ -438,7 +439,7 @@ public class DB {
|
||||
public String lastetag; // last etag we updated from, null forces update
|
||||
}
|
||||
|
||||
private final int DBVersion = 33;
|
||||
private final int DBVersion = 34;
|
||||
|
||||
private static void createAppApk(SQLiteDatabase db) {
|
||||
db.execSQL(CREATE_TABLE_APP);
|
||||
@ -504,6 +505,7 @@ public class DB {
|
||||
mContext.getString(R.string.default_repo_name));
|
||||
values.put("description",
|
||||
mContext.getString(R.string.default_repo_description));
|
||||
values.put("version", 0);
|
||||
String pubkey = mContext.getString(R.string.default_repo_pubkey);
|
||||
String fingerprint = DB.calcFingerprint(pubkey);
|
||||
values.put("pubkey", pubkey);
|
||||
@ -521,9 +523,11 @@ public class DB {
|
||||
mContext.getString(R.string.default_repo_name2));
|
||||
values.put("description",
|
||||
mContext.getString(R.string.default_repo_description2));
|
||||
values.put("version", 0);
|
||||
// default #2 is /archive which has the same key as /repo
|
||||
values.put("pubkey", pubkey);
|
||||
values.put("fingerprint", fingerprint);
|
||||
values.put("maxage", 0);
|
||||
values.put("inuse", 0);
|
||||
values.put("priority", 20);
|
||||
values.put("lastetag", (String) null);
|
||||
@ -611,6 +615,10 @@ public class DB {
|
||||
if (oldVersion < 30) {
|
||||
db.execSQL("alter table " + TABLE_REPO + " add column maxage integer not null default 0");
|
||||
}
|
||||
|
||||
if (oldVersion < 34) {
|
||||
db.execSQL("alter table " + TABLE_REPO + " add column version integer not null default 0");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1283,8 +1291,8 @@ public class DB {
|
||||
Cursor c = null;
|
||||
try {
|
||||
c = db.query(TABLE_REPO, new String[] { "address", "name",
|
||||
"description", "inuse", "priority", "pubkey", "fingerprint",
|
||||
"maxage", "lastetag" },
|
||||
"description", "version", "inuse", "priority", "pubkey",
|
||||
"fingerprint", "maxage", "lastetag" },
|
||||
"id = ?", new String[] { Integer.toString(id) }, null, null, null);
|
||||
if (!c.moveToFirst())
|
||||
return null;
|
||||
@ -1293,12 +1301,13 @@ public class DB {
|
||||
repo.address = c.getString(0);
|
||||
repo.name = c.getString(1);
|
||||
repo.description = c.getString(2);
|
||||
repo.inuse = (c.getInt(3) == 1);
|
||||
repo.priority = c.getInt(4);
|
||||
repo.pubkey = c.getString(5);
|
||||
repo.fingerprint = c.getString(6);
|
||||
repo.maxage = c.getInt(7);
|
||||
repo.lastetag = c.getString(8);
|
||||
repo.version = c.getInt(3);
|
||||
repo.inuse = (c.getInt(4) == 1);
|
||||
repo.priority = c.getInt(5);
|
||||
repo.pubkey = c.getString(6);
|
||||
repo.fingerprint = c.getString(7);
|
||||
repo.maxage = c.getInt(8);
|
||||
repo.lastetag = c.getString(9);
|
||||
return repo;
|
||||
} finally {
|
||||
if (c != null)
|
||||
@ -1312,8 +1321,8 @@ public class DB {
|
||||
Cursor c = null;
|
||||
try {
|
||||
c = db.query(TABLE_REPO, new String[] { "id", "address", "name",
|
||||
"description", "inuse", "priority", "pubkey", "fingerprint",
|
||||
"maxage", "lastetag" },
|
||||
"description", "version", "inuse", "priority", "pubkey",
|
||||
"fingerprint", "maxage", "lastetag" },
|
||||
null, null, null, null, "priority");
|
||||
c.moveToFirst();
|
||||
while (!c.isAfterLast()) {
|
||||
@ -1322,12 +1331,13 @@ public class DB {
|
||||
repo.address = c.getString(1);
|
||||
repo.name = c.getString(2);
|
||||
repo.description = c.getString(3);
|
||||
repo.inuse = (c.getInt(4) == 1);
|
||||
repo.priority = c.getInt(5);
|
||||
repo.pubkey = c.getString(6);
|
||||
repo.fingerprint = c.getString(7);
|
||||
repo.maxage = c.getInt(8);
|
||||
repo.lastetag = c.getString(9);
|
||||
repo.version = c.getInt(4);
|
||||
repo.inuse = (c.getInt(5) == 1);
|
||||
repo.priority = c.getInt(6);
|
||||
repo.pubkey = c.getString(7);
|
||||
repo.fingerprint = c.getString(8);
|
||||
repo.maxage = c.getInt(9);
|
||||
repo.lastetag = c.getString(10);
|
||||
repos.add(repo);
|
||||
c.moveToNext();
|
||||
}
|
||||
@ -1357,6 +1367,7 @@ public class DB {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("name", repo.name);
|
||||
values.put("description", repo.description);
|
||||
values.put("version", repo.version);
|
||||
values.put("inuse", repo.inuse);
|
||||
values.put("priority", repo.priority);
|
||||
values.put("pubkey", repo.pubkey);
|
||||
@ -1380,12 +1391,14 @@ public class DB {
|
||||
}
|
||||
|
||||
public void addRepo(String address, String name, String description,
|
||||
int priority, String pubkey, String fingerprint, int maxage, boolean inuse)
|
||||
int version, int priority, String pubkey, String fingerprint,
|
||||
int maxage, boolean inuse)
|
||||
throws SecurityException {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("address", address);
|
||||
values.put("name", name);
|
||||
values.put("description", description);
|
||||
values.put("version", version);
|
||||
values.put("inuse", inuse ? 1 : 0);
|
||||
values.put("priority", priority);
|
||||
values.put("pubkey", pubkey);
|
||||
|
@ -218,7 +218,7 @@ public class ManageRepo extends ListActivity {
|
||||
protected void addRepo(String repoUri, String fingerprint) {
|
||||
try {
|
||||
DB db = DB.getDB();
|
||||
db.addRepo(repoUri, null, null, 10, null, fingerprint, 0, true);
|
||||
db.addRepo(repoUri, null, null, 0, 10, null, fingerprint, 0, true);
|
||||
} finally {
|
||||
DB.releaseDB();
|
||||
}
|
||||
|
@ -64,8 +64,9 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
private DB.Apk curapk = null;
|
||||
private StringBuilder curchars = new StringBuilder();
|
||||
|
||||
// After processing the XML, this will be null if the index didn't specify
|
||||
// a maximum age - otherwise it will be the value specified.
|
||||
// After processing the XML, these will be null if the index didn't specify
|
||||
// them - otherwise it will be the value specified.
|
||||
private String version;
|
||||
private String maxage;
|
||||
|
||||
// After processing the XML, this will be null if the index specified a
|
||||
@ -262,10 +263,12 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
public void startElement(String uri, String localName, String qName,
|
||||
Attributes attributes) throws SAXException {
|
||||
super.startElement(uri, localName, qName, attributes);
|
||||
|
||||
if (localName.equals("repo")) {
|
||||
String pk = attributes.getValue("", "pubkey");
|
||||
if (pk != null)
|
||||
pubkey = pk;
|
||||
version = attributes.getValue("", "version");
|
||||
maxage = attributes.getValue("", "maxage");
|
||||
String nm = attributes.getValue("", "name");
|
||||
if (nm != null)
|
||||
@ -273,6 +276,7 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
String dc = attributes.getValue("", "description");
|
||||
if (dc != null)
|
||||
description = dc;
|
||||
|
||||
} else if (localName.equals("application") && curapp == null) {
|
||||
curapp = new DB.App();
|
||||
curapp.detail_Populated = true;
|
||||
@ -283,11 +287,13 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
new ProgressListener.Event(
|
||||
RepoXMLHandler.PROGRESS_TYPE_PROCESS_XML, progressCounter,
|
||||
totalAppCount, progressData));
|
||||
|
||||
} else if (localName.equals("package") && curapp != null && curapk == null) {
|
||||
curapk = new DB.Apk();
|
||||
curapk.id = curapp.id;
|
||||
curapk.repo = repo.id;
|
||||
hashType = null;
|
||||
|
||||
} else if (localName.equals("hash") && curapk != null) {
|
||||
hashType = attributes.getValue("", "type");
|
||||
}
|
||||
@ -469,6 +475,17 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
DB.releaseDB();
|
||||
}
|
||||
}
|
||||
boolean updateRepo = false;
|
||||
|
||||
if (handler.version != null) {
|
||||
int version = Integer.parseInt(handler.version);
|
||||
if (version != repo.version) {
|
||||
Log.d("FDroid", "Repo specified a new version: from "
|
||||
+ repo.version + " to " + version);
|
||||
repo.version = version;
|
||||
updateRepo = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (handler.maxage != null) {
|
||||
int maxage = Integer.parseInt(handler.maxage);
|
||||
@ -476,12 +493,16 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
Log.d("FDroid",
|
||||
"Repo specified a new maximum age - updated");
|
||||
repo.maxage = maxage;
|
||||
try {
|
||||
DB db = DB.getDB();
|
||||
db.updateRepoByAddress(repo);
|
||||
} finally {
|
||||
DB.releaseDB();
|
||||
}
|
||||
updateRepo = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (updateRepo) {
|
||||
try {
|
||||
DB db = DB.getDB();
|
||||
db.updateRepoByAddress(repo);
|
||||
} finally {
|
||||
DB.releaseDB();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user