i trying fetch data aws dynamodb database. have following code set up, getting errors. unclear how proceed here in order query data based on primary key
import android.support.v7.app.appcompatactivity; import android.os.bundle; import com.amazonaws.auth.cognitocachingcredentialsprovider; import com.amazonaws.regions.regions; import com.amazonaws.services.dynamodbv2.*; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.*; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } cognitocachingcredentialsprovider credentialsprovider = new cognitocachingcredentialsprovider( getapplicationcontext(), "**********************", // identity pool id regions.us_east_1 // region ); amazondynamodbclient ddbclient = new amazondynamodbclient(credentialsprovider); dynamodbmapper mapper = new dynamodbmapper(ddbclient);
first comment, looks trying in activity -- throw network on main thread exception in android.
second, general guide, need set separate class dynamodb fields set , linked variables in class. example:
@dynamodbtable(tablename = sa_awsconstants.questiontablename) public class sa_question implements comparable<sa_question> { // fields coming aws table private string questionguid_str; // : string, primary hash key private string json_str; private long ordinalposition_int; ... @dynamodbhashkey(attributename = sa_awsconstants.dbschema_questionguid) public string getquestionguid_str() { return questionguid_str; } public void setquestionguid_str(string questionguid_str) { this.questionguid_str = questionguid_str; } @dynamodbrangekey(attributename = sa_awsconstants.dbschema_ordinalpos) public long getordinalposition_int() { return ordinalposition_int; } public void setordinalposition_int(long ordinalposition_int) { this.ordinalposition_int = ordinalposition_int; } @dynamodbattribute(attributename = sa_awsconstants.dbschema_question_jsonstr) public string getjson_str() { return json_str; } public void setjson_str(string json_str) { this.json_str = json_str; } }
then can this:
dynamodbmapper mapper = new dynamodbmapper(ddb); dynamodbscanexpression scanexpression = new dynamodbscanexpression(); paginatedscanlist<sa_question> paginatedq = mapper.scan(sa_question.class, scanexpression); arraylist<sa_question> awsqlist = new arraylist<sa_question>(); (sa_question q : paginatedq) { q.initiatefromjson(); awsqlist.add(q); }
you have mindful of limits aws sets on returns of data single query (hence paginatedscan -- if expect exceed limit need check whether more data exists returned).
Comments
Post a Comment