vendredi 30 octobre 2015

Increment a counter in database SQLite

I'm doing a project on estimote shoe sticker and I'm now doing database for the sticker. My issue is now how to set counter in database sqlite. Every once the sticker is picked up or clicked, in the database it will show an increment in count. I have post the codes for database and main activity below.

NearablesDemoActivity.java

 private void displayCurrentNearableInfo() {
        stickerdb = new Database_sticker(this);
        dbRow = stickerdb.getResult(currentNearable.identifier);
        Integer count = stickerdb.getCount(currentNearable.identifier);
        dbRow.getId();
        dbRow.getIdentifier();
        dbRow.getCount();

        String desc = dbRow.getDesc().toString();
        dbRow.getCa().toString();
        dbRow.getSa().toString();
        String coo = dbRow.getCoo().toString();
        String sm = dbRow.getSm().toString();
        String price = dbRow.getPrice().toString();

        //Set the text to the TextView
        Desc.setText(desc);
        COO.setText(coo);
        SM.setText(sm);
        Price.setText("$" + price);
    }

Database_sticker.java

@Override
    public void onCreate(SQLiteDatabase db){
        String CREATE_SRESULTS_TABLE = "CREATE TABLE " + TABLE_SRESULT + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_IDENTIFIER +
                " TEXT," + KEY_DESC + " TEXT," + KEY_SA + " TEXT," + KEY_CA + " TEXT," + KEY_COO + " TEXT," + KEY_SM + " TEXT," + KEY_PRICE + " REAL," +
                KEY_COUNT + "INTEGER AUTOINCREMENT" +")";
        db.execSQL(CREATE_SRESULTS_TABLE); //create sql sresults table


    }
    //upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
        //drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_SRESULT);
        //create tables again
        onCreate(db);
    }

    public String[] getSize(String identifier){
        String query = "SELECT * FROM " + TABLE_SRESULT + " WHERE " + KEY_IDENTIFIER + "='" + identifier + "'";
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query, null);
        ArrayList<String> sizes = new ArrayList<String>();
        if(cursor.moveToFirst()){
            do{
               // sizes.add(cursor.getString(3));
                String[] si = cursor.getString(3).split(",");
                sizes.addAll(Arrays.asList(si));


            }while(cursor.moveToNext());
        }
        return sizes.toArray(new String[sizes.size()]);
    }

    public String[] getColour(String identifier){
        String query = "SELECT * FROM " + TABLE_SRESULT + " WHERE " + KEY_IDENTIFIER + "='" + identifier + "'";
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query, null);
        ArrayList<String> colours = new ArrayList<String>();
        if(cursor.moveToFirst()){
            do{
                //colours.add(cursor.getString(4));
                String[] clr = cursor.getString(4).split(",");
                colours.addAll(Arrays.asList(clr));

            }while(cursor.moveToNext());
        }
        return colours.toArray(new String[colours.size()]);
    }

    public int getCount(String identifier){
        String countQuery = "SELECT * FROM " + TABLE_SRESULT + " WHERE " + KEY_IDENTIFIER + "='" + identifier + "'";
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        cursor.close();
        return cursor.getCount();
    }

    public Sresult getResult(String identifier) {
        String selectQuery = "SELECT * FROM " + TABLE_SRESULT + " WHERE " + KEY_IDENTIFIER + "='" + identifier + "'";
        SQLiteDatabase db = this.getWritableDatabase();   //open database
        Cursor cursor = db.rawQuery(selectQuery, null);
        //looping through all rows and adding to list
        Sresult sresult = new Sresult();
        if (cursor.moveToFirst()) {
            do {
                sresult.setId(Integer.parseInt(cursor.getString(0)));
                sresult.setIdentifier(cursor.getString(1));
                sresult.setDesc(cursor.getString(2));
                sresult.setSa(cursor.getString(3));
                sresult.setCa(cursor.getString(4));
                sresult.setCoo(cursor.getString(5));
                sresult.setSm(cursor.getString(6));
                sresult.setPrice(Float.parseFloat(cursor.getString(7)));
                sresult.setCount(Integer.parseInt(cursor.getString(8)));
            } while (cursor.moveToNext());
        }
        return sresult;
    }
}

ListNearablesActivity.java

beaconManager.setNearableListener(new BeaconManager.NearableListener() {
            @Override
            public void onNearablesDiscovered(List<Nearable> nearables) {
                toolbar.setSubtitle("Found shoes: " + nearables.size());
                adapter.replaceWith(nearables);
                for (Nearable nearable : nearables) {
                    if (nearable.isMoving) {
                        try {
                            Class<?> clazz = Class.forName(getIntent().getStringExtra(EXTRAS_TARGET_ACTIVITY));
                            Intent intent = new Intent(ListNearablesActivity.this, clazz);
                            intent.putExtra(EXTRAS_NEARABLE, adapter.getItem(nearables.indexOf(nearable)));
                            startActivity(intent);
                        } //close for try
                        catch (ClassNotFoundException e) {
                            Log.e(TAG, "Finding class by name failed", e);
                        } //close for catch (ClassNotFoundException e)
                    }
                }
            } //for override
        });  //for beaconManager.setNearable



private AdapterView.OnItemClickListener createOnItemClickListener() {
        return new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                if (getIntent().getStringExtra(EXTRAS_TARGET_ACTIVITY) != null){
                    try {
                        Class<?> clazz = Class.forName(getIntent().getStringExtra(EXTRAS_TARGET_ACTIVITY));
                        Intent intent = new Intent(ListNearablesActivity.this, clazz);
                        intent.putExtra(EXTRAS_NEARABLE, adapter.getItem(position));
                        startActivity(intent);
                    } //close for try
                    catch (ClassNotFoundException e) {
                        Log.e(TAG, "Finding class by name failed", e);
                    } //close for catch (ClassNotFoundException e)
                } //close for getintent.getStringExtra()
            } //close for public void onitemclick
        };   //close for return new adapterview
    }  //close for private adapter

Aucun commentaire:

Enregistrer un commentaire