public void onVerification(final int event_obj, final String event) { boolean sucessful = false; if (current == null) return; if (!current.isSameTarget(event_obj, event)) { Log.v("mark", "onVerification, is not the targeted object"); return; } else { Log.v("mark", "onVerification, is the targeted object"); } String[] answer = retrieveAnswer(current.verif_src); Log.v("mark", "retrieved:" + Arrays.toString(answer)); if (answer == null) { sucessful = false; } else { // String[] filteredAnswer = this.inputFilter(answer); sucessful = isCorrectAnswer(answer); } if (sucessful) { Activity act = app.getCurrentActivity(); Log.v("mark", "onVerification: sucessful"); this.nextInstruction(true); if (act instanceof FrameActivity) { ((FrameActivity) act).closeRightDrawer(); ((FrameActivity) act).closeRightDrawer(); ((FrameActivity) act).openLeftDrawer(); } postCorrectVerification(); } else { Log.v("mark", "onVerification: failure"); postWrongVerfication(); if (this.current.err_msg == null || this.current.err_msg.equals("null")) { return; } Toast toast = Toast.makeText(app.getApplicationContext(), this.current.err_msg, Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP, 0, 0); toast.show(); } }
private String[] retrieveAnswer(int type) { this.type = type; switch (type) { case PASS: { Log.v("mark", "retrieveAnswer all pass"); return new String[] {}; } case DATABASE: { Log.v("mark", "retrieveAnswer from databse"); SQLiteDatabase db = app.getDB(); ArrayList<String> result = new ArrayList<String>(); db.beginTransaction(); String toDepacket = current.verif_com; if (toDepacket == null) { Log.v("mark", "retrieveAnswer verif_com is null"); return null; } /* table;col1,col2,...;selection;arg1,arg2; */ parts = toDepacket.split(";"); table = parts[0]; columns = parts[1].equals("null") ? null : parts[1].split(","); selection = parts[2].equals("null") ? null : parts[2]; args = selection == null ? null : parts[3].split(","); Log.v("mark", "" + toDepacket); Log.v("mark", "table:" + table); Log.v("mark", "columns:" + Arrays.toString(columns)); Log.v("mark", "selection:" + selection); Log.v("mark", "args:" + Arrays.toString(args)); Cursor cur = db.query(table, columns, selection, args, null, null, null); if (cur.moveToFirst()) { do { StringBuilder sb = new StringBuilder(); for (int i = 0; i < columns.length; i++) { String columnName = columns[i]; int index = cur.getColumnIndex(columnName); if (index < 0) { Log.v("mark", "onVerification: columnName does not exist"); } else { sb.append(cur.getString(index)); if (i < columns.length - 1) { sb.append("><"); } } } result.add(sb.toString()); } while (cur.moveToNext()); cur.close(); db.setTransactionSuccessful(); db.endTransaction(); return result.toArray(new String[0]); } else { Log.v("mark", "retrieveAnswer cursor empty"); cur.close(); db.setTransactionSuccessful(); db.endTransaction(); return null; } } case RIGHTDRAWER: { Activity act = app.getCurrentActivity(); Log.v("mark", "retrieveAnswer from rightdrawer:" + act); if (act instanceof FrameActivity) { return new String[] {((FrameActivity) act).retrieveAnswerOnRightPanel()}; } else { return null; } } case TASPANEL: { Log.v("mark", "retrieveAnswer from taskpanel"); Activity act = app.getCurrentActivity(); if (act instanceof ExperimentActivity) { return new String[] {((ExperimentActivity) act).getTaskIconPattern()}; } // if (act instanceof TaskPanel) { return new String[] { ((TaskPanel.TaskPanelFragment) // act).getTaskIconPattern() }; } return null; } case ADDITIONALINFO: { Log.v("mark", "retrieveAnswer from addionalinfo"); return new String[] {this.additionalInformation}; } default: Log.v("mark", "onVerification: unidentified verif_src"); } return null; }