Il passaggio successivo consiste nell’eseguire una query sui dati inviati e visualizzare i risultati in formato tabulare. A tale scopo, utilizziamo il seguente software:
QueryBuilder - Componente dell’interfaccia utente per la creazione di query
Tabelle dati: per visualizzare i risultati della query in forma di tabella.
La seguente interfaccia utente è stata creata per abilitare l’esecuzione di query sui dati inviati. Solo gli elementi contrassegnati come obbligatori nello schema JSON sono disponibili per le query su. Nella schermata seguente, stiamo eseguendo una query per tutte le richieste in cui deliverypref è SMS.
L’interfaccia utente di esempio per eseguire query sui dati inviati non utilizza tutte le funzionalità avanzate disponibili in QueryBuilder. Ti invitiamo a provarli da solo.
La versione corrente di questa esercitazione non supporta l'esecuzione di query su più colonne.
Quando si seleziona un modulo per eseguire la query, viene effettuata una chiamata di GET a /bin/getdatakeysfromschema. Questa chiamata di GET restituisce i campi obbligatori associati allo schema dei moduli. I campi obbligatori vengono quindi inseriti nell'elenco a discesa di QueryBuilder per consentire la creazione della query.
Il seguente frammento di codice effettua una chiamata al metodo getRequiredColumnsFromSchema del servizio JSONSchemaOperations. Trasmettiamo le proprietà e gli elementi richiesti dello schema a questa chiamata del metodo. L’array restituito da questa chiamata di funzione viene quindi utilizzato per popolare l’elenco a discesa Query Builder
public JSONArray getData(String formName) throws SQLException, IOException {
org.json.JSONArray arrayOfDataKeys = new org.json.JSONArray();
JSONObject jsonSchema = jsonSchemaOperations.getJSONSchemaFromDataBase(formName);
Map<String, String> refKeys = new HashMap<String, String>();
try {
JSONObject properties = jsonSchema.getJSONObject("properties");
JSONArray requiredFields = jsonSchema.has("required") ? jsonSchema.getJSONArray("required") : null;
jsonSchemaOperations.getRequiredColumnsFromSchema(properties, arrayOfDataKeys, "", jsonSchema, refKeys,
requiredFields);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return arrayOfDataKeys;
}
Quando si fa clic sul pulsante GetResult, viene effettuata una chiamata Get a “/bin/querydata”. La query generata dall’interfaccia utente di QueryBuilder viene passata al servlet tramite il parametro query. Il servlet massaggia quindi questa query in una query SQL che può essere utilizzata per eseguire query sul database. Ad esempio, se stai cercando di recuperare tutti i prodotti denominati “Mouse”, la stringa di query di Query Builder è $.productname = 'Mouse'
. Questa query verrà quindi convertita nel seguente
SELEZIONA * da aemformswithjson . formsubmissions dove JSON_EXTRACT( formsubmissions .formdata,"$.productName ")= 'Mouse'
Il risultato di questa query viene quindi restituito per popolare la tabella nell’interfaccia utente.
Per eseguire questo esempio sul sistema locale, attenersi alla seguente procedura