Nicholas Muir
Nicholas Muir

Reputation: 3104

Android retrieve individual items from a paginated query list

I have been able to query AWS DynamoDb and get back results. The results are from a song database and return info like son name, musician, url ect. The amount of results are coming back as expected so I think the query is working correctly. This is probably very basic but I am not sure how I go about retrieving the individual items from the list once I have it.

This is my model:

@DynamoDBTable(tableName = "Music")
public class SongDatabaseMappingAdapter {

    private String artist;
    private String songtitle;
    private String albumtitle;
    private String category;
    private int musicianrating;
    private int userrating;
    private String pictureurl;
    private String songurl;

    @DynamoDBHashKey(attributeName = "Artist")
    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    @DynamoDBRangeKey(attributeName = "SongTitle")
    public String getSongTitle() {
        return songtitle;
    }

    public void setSongTitle(String songtitle) {
        this.songtitle = songtitle;
    }


    @DynamoDBAttribute(attributeName = "AlbumTitle")
    public String getAlbumTitle() {
        return albumtitle;
    }

    public void setAlbumTitle(String albumtitle) {
        this.albumtitle = albumtitle;
    }


    @DynamoDBIndexHashKey(attributeName = "Category", globalSecondaryIndexName = "Category-UserRating-index")
    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }


    @DynamoDBAttribute(attributeName = "MusicianRating")
    public int getMusicianRating() {
        return musicianrating;
    }

    public void setMusicianRating(int musicianrating) {
        this.musicianrating = musicianrating;
    }


    @DynamoDBIndexRangeKey(attributeName = "UserRating", globalSecondaryIndexName = "Category-UserRating-index")
    public int getUserRating() {
        return userrating;
    }

    public void setUserRating(int userrating) {
        this.userrating = userrating;
    }


    @DynamoDBAttribute(attributeName = "PictureURL")
    public String getPictureURL() {
        return pictureurl;
    }

    public void setPictureURL(String pictureurl) {
        this.pictureurl = pictureurl;
    }


    @DynamoDBAttribute(attributeName = "SongURL")
    public String getSongURL() {
        return songurl;
    }

    public void setSongURL(String songurl) {
        this.songurl = songurl;
    }

}

And this is my query:

public class getSongsInCategory extends AsyncTask  {

        @Override
        protected Object doInBackground(Object[] params) {


            SongDatabaseMappingAdapter songs = new SongDatabaseMappingAdapter();
            songs.setCategory("Rap");

            String userRatingQueryString = "5";

            Condition rangeKeyCondition = new Condition()
                    .withComparisonOperator(ComparisonOperator.EQ)
                    .withAttributeValueList(new AttributeValue().withN(userRatingQueryString));


            DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression()
                    .withHashKeyValues(songs)
                    .withIndexName("Category-UserRating-index")
                    .withRangeKeyCondition("UserRating", rangeKeyCondition)
                    .withConsistentRead(false);

            PaginatedQueryList<SongDatabaseMappingAdapter> result = mapper.query(SongDatabaseMappingAdapter.class, queryExpression);

This is how I have been checking the results:

 for (int i = 0; i < result.size(); ++i) {

                SongDatabaseMappingAdapter obj = result.get(i);
                Log.i("Query Result", "Number"+i+obj.toString());
            }

And these are the results I have been getting:

05-22 03:42:12.313 27594-27628/com.amazon.mysampleapp I/Query Result: Number0com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae345c
05-22 03:42:12.313 27594-27628/com.amazon.mysampleapp I/Query Result: Number1com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae520c
05-22 03:42:12.317 27594-27628/com.amazon.mysampleapp I/Query Result: Number2com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae5334
05-22 03:42:12.317 27594-27628/com.amazon.mysampleapp I/Query Result: Number3com.mysampleapp.demo.SongDatabaseMappingAdapter@52ae545c 

So i know it is at least partially working but now I want to get the individual parts from the song query and place them into a textviews, imageviews media players ect.

I may be wrong but I think I will have to use the model I created but I am not sure how.

Thanks for your help.

Upvotes: 0

Views: 167

Answers (1)

Peter
Peter

Reputation: 5884

The SongDatabaseMappingAdapter instance has getters? So instead of obj.toString() you do obj.getArtist() etc

Upvotes: 1

Related Questions