Skip to content

Commit

Permalink
Add tags to database
Browse files Browse the repository at this point in the history
  • Loading branch information
vivekscl committed Mar 16, 2018
1 parent 43e8ffb commit 5dfee83
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class DetailedItem implements CoverHolder {
private List<Detail> details = new ArrayList<>();
private List<Copy> copies = new ArrayList<>();
private List<Volume> volumes = new ArrayList<>();
private List<String> tags = new ArrayList<>();
private String cover;
private String title;
private SearchResult.MediaType mediaType;
Expand Down Expand Up @@ -313,4 +314,18 @@ public SearchResult.MediaType getMediaType() {
public void setMediaType(SearchResult.MediaType mediaType) {
this.mediaType = mediaType;
}

/**
* @return this item's tags
*/
public List<String> getTags() {
return tags;
}

/**
* @param tags the tags to set
*/
public void setTags(List<String> tags) {
this.tags = tags;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
*/
package de.geeksfactory.opacclient.objects;

import java.util.List;

/**
* Object representing a bookmarked item. Not part of the API you are interested
* in if you want to implement a library system.
Expand All @@ -32,11 +34,12 @@ public class Starred {
private String mnr;
private String title;
private SearchResult.MediaType mediaType;
private List<String> tags;

@Override
public String toString() {
return "Starred [id=" + id + ", mnr=" + mnr + ", title=" + title + ", mediaType=" +
mediaType.toString() + "]";
mediaType.toString() + ", tags=" + tags.toString() + "]";
}

/**
Expand Down Expand Up @@ -94,4 +97,18 @@ public SearchResult.MediaType getMediaType() {
public void setMediaType(SearchResult.MediaType mediaType) {
this.mediaType = mediaType;
}

/**
* Get this item's tags
*/
public List<String> getTags() {
return tags;
}

/**
* Set this item's tags
*/
public void setTags(List<String> tags) {
this.tags = tags;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ public void onClick(DialogInterface dialog, int di) {
star.remove(star.getItemByTitle(bib, title));
item.setIcon(R.drawable.ic_star_0_white_24dp);
} else {
star.star(null, title, bib, getItem().getMediaType());
star.star(null, title, bib, getItem().getMediaType(), getItem().getTags());
Toast toast = Toast.makeText(getActivity(),
getString(R.string.starred), Toast.LENGTH_SHORT);
toast.show();
Expand All @@ -823,7 +823,7 @@ public void onClick(DialogInterface dialog, int di) {
star.remove(star.getItem(bib, id));
item.setIcon(R.drawable.ic_star_0_white_24dp);
} else {
star.star(id, title, bib, getItem().getMediaType());
star.star(id, title, bib, getItem().getMediaType(), getItem().getTags());
Toast toast = Toast.makeText(getActivity(),
getString(R.string.starred), Toast.LENGTH_SHORT);
toast.show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ public class StarredFragment extends Fragment implements
private static final String JSON_ITEM_MNR = "item_mnr";
private static final String JSON_ITEM_TITLE = "item_title";
private static final String JSON_ITEM_MEDIATYPE = "item_mediatype";
private static final String JSON_ITEM_TAGS = "tags";
private static final int REQUEST_CODE_EXPORT = 123;
private static final int REQUEST_CODE_IMPORT = 124;

Expand Down Expand Up @@ -222,7 +223,7 @@ private void showSnackBar() {
public void onClick(View view) {
StarDataSource data = new StarDataSource(getActivity());
String bib = app.getLibrary().getIdent();
data.star(sItem.getMNr(), sItem.getTitle(), bib, sItem.getMediaType());
data.star(sItem.getMNr(), sItem.getTitle(), bib, sItem.getMediaType(), sItem.getTags());
}
});
snackbar.show();
Expand Down Expand Up @@ -416,10 +417,16 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
!dataSource.isStarred(bib, entry.getString(JSON_ITEM_MNR)) ||
!entry.has(JSON_ITEM_MNR) && !dataSource.isStarredTitle(bib,
entry.getString(JSON_ITEM_TITLE))) { //disallow dupes
List<String> tags = new ArrayList<>();
JSONObject tagsAsString = new JSONObject(entry.getString(JSON_ITEM_TAGS));
JSONArray jsonArray = tagsAsString.optJSONArray(JSON_ITEM_TAGS);
for (int j = 0; j < jsonArray.length(); j++) {
tags.add(jsonArray.getString(j));
}
dataSource.star(entry.optString(JSON_ITEM_MNR),
entry.getString(JSON_ITEM_TITLE), bib,
SearchResult.MediaType
.valueOf(entry.getString(JSON_ITEM_MEDIATYPE)));
.valueOf(entry.getString(JSON_ITEM_MEDIATYPE)), tags);
}
}
adapter.notifyDataSetChanged();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
import android.content.ContentValues;
import android.database.Cursor;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -56,15 +60,25 @@ public static Starred cursorToItem(Cursor cursor) {
} catch (IllegalArgumentException e) {
// Do not crash on invalid media types stored in the database
}
List<String> tags = new ArrayList<>();
item.setTags(tags);
return item;
}

public void star(String nr, String title, String bib, SearchResult.MediaType mediaType) {
public void star(String nr, String title, String bib, SearchResult.MediaType mediaType, List<String> tags) {
ContentValues values = new ContentValues();
values.put("medianr", nr);
values.put("title", title);
values.put("bib", bib);
values.put("mediatype", mediaType != null ? mediaType.toString() : null);
try {
JSONObject json = new JSONObject();
json.put("tags", new JSONArray(tags));
String tagsAsStrings = json.toString();
values.put("tags", tagsAsStrings);
} catch (JSONException e) {
e.printStackTrace();
}
context.getContentResolver()
.insert(((OpacClient) context.getApplication()).getStarProviderStarUri(), values);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,13 @@ public class StarDatabase extends SQLiteOpenHelper {
public static final String STAR_TABLE = "starred";
private static final String DATABASE_CREATE = "create table " + STAR_TABLE
+ " ( id integer primary key autoincrement," + " medianr text,"
+ " bib text," + " title text," + " mediatype text" + ");";
+ " bib text," + " title text," + " mediatype text" + " tags text" + ");";
// CHANGE THIS
public static final String STAR_WHERE_ID = "id = ?";
public static final String STAR_WHERE_LIB = "bib = ?";
public static final String STAR_WHERE_TITLE_LIB = "bib = ? AND medianr IS NULL AND title = ?";
public static final String STAR_WHERE_NR_LIB = "bib = ? AND medianr = ?";
public static final String STAR_WHERE_TAGS = "tags = ?";
public static final String[] COLUMNS = {"id AS _id", "medianr", "bib",
"title", "mediatype"};
private static final String DATABASE_NAME = "starred.db";
Expand Down

0 comments on commit 5dfee83

Please sign in to comment.