Skip to content

Instantly share code, notes, and snippets.

@mkaarthick
Forked from frogermcs/MainActivity.java
Created February 16, 2016 11:20

Revisions

  1. @frogermcs frogermcs revised this gist Aug 12, 2015. 3 changed files with 118 additions and 0 deletions.
    64 changes: 64 additions & 0 deletions MainActivity.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,64 @@
    public class MainActivity extends AppCompatActivity {

    @Bind(R.id.tvFlat)
    TextView tvFlat;
    @Bind(R.id.tvJson)
    TextView tvJson;

    private RawDataReader rawDataReader;

    private ReposListJson reposListJson;
    private ReposList reposListFlat;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    rawDataReader = new RawDataReader(this);
    }

    @OnClick(R.id.btnJson)
    public void onJsonClick() {
    rawDataReader.loadJsonString(R.raw.repos_json).subscribe(new SimpleObserver<String>() {
    @Override
    public void onNext(String reposStr) {
    parseReposListJson(reposStr);
    }
    });
    }

    private void parseReposListJson(String reposStr) {
    long startTime = System.currentTimeMillis();
    reposListJson = new Gson().fromJson(reposStr, ReposListJson.class);
    for (int i = 0; i < reposListJson.repos.size(); i++) {
    RepoJson repo = reposListJson.repos.get(i);
    Log.d("FlatBuffers", "Repo #" + i + ", id: " + repo.id);
    }
    long endTime = System.currentTimeMillis() - startTime;
    tvJson.setText("Elements: " + reposListJson.repos.size() + ": load time: " + endTime + "ms");
    }

    @OnClick(R.id.btnFlatBuffers)
    public void onFlatBuffersClick() {
    rawDataReader.loadBytes(R.raw.repos_flat).subscribe(new SimpleObserver<byte[]>() {
    @Override
    public void onNext(byte[] bytes) {
    loadFlatBuffer(bytes);
    }
    });
    }

    private void loadFlatBuffer(byte[] bytes) {
    long startTime = System.currentTimeMillis();
    ByteBuffer bb = ByteBuffer.wrap(bytes);
    reposListFlat = frogermcs.io.flatbuffs.model.flat.ReposList.getRootAsReposList(bb);
    for (int i = 0; i < reposListFlat.reposLength(); i++) {
    Repo repos = reposListFlat.repos(i);
    Log.d("FlatBuffers", "Repo #" + i + ", id: " + repos.id());
    }
    long endTime = System.currentTimeMillis() - startTime;
    tvFlat.setText("Elements: " + reposListFlat.reposLength() + ": load time: " + endTime + "ms");

    }
    }
    30 changes: 30 additions & 0 deletions build.gradle
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    apply plugin: 'com.android.application'
    apply plugin: 'com.jakewharton.hugo'

    android {
    compileSdkVersion 22
    buildToolsVersion "23.0.0 rc2"

    defaultConfig {
    applicationId "frogermcs.io.flatbuffs"
    minSdkVersion 15
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    }
    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    }

    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'io.reactivex:rxjava:1.0.10'
    compile 'io.reactivex:rxandroid:1.0.0'
    }
    24 changes: 24 additions & 0 deletions repos_schema_fragment.fbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    table ReposList {
    repos : [Repo];
    }

    table Repo {
    id : long;
    name : string;
    full_name : string;
    owner : User;
    //...
    labels_url : string (deprecated);
    releases_url : string (deprecated);
    }

    table User {
    login : string;
    id : long;
    avatar_url : string;
    gravatar_id : string;
    //...
    site_admin : bool;
    }

    root_type ReposList;
  2. @frogermcs frogermcs created this gist Aug 12, 2015.
    23 changes: 23 additions & 0 deletions repos_json_fragment.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    {
    "repos": [
    {
    "id": 27149168,
    "name": "acai",
    "full_name": "google/acai",
    "owner": {
    "login": "google",
    "id": 1342004,
    ...
    "type": "Organization",
    "site_admin": false
    },
    "private": false,
    "html_url": "https://github.com/google/acai",
    "description": "Testing library for JUnit4 and Guice.",
    ...
    "watchers": 21,
    "default_branch": "master"
    },
    ...
    ]
    }