Add error handling of invalid CQP queries

This commit is contained in:
Stephan Porada 2020-01-16 11:56:16 +01:00
parent ef1eb9976e
commit e04b31d282
3 changed files with 24 additions and 7 deletions

View File

@ -368,7 +368,7 @@ class CQiClient:
self.__send_STRING(mother_corpus) self.__send_STRING(mother_corpus)
self.__send_STRING(subcorpus_name) self.__send_STRING(subcorpus_name)
self.__send_STRING(query) self.__send_STRING(query)
self.__recv_WORD() self.__recv_response()
def cqp_list_subcorpora(self, corpus): def cqp_list_subcorpora(self, corpus):
# INPUT: (STRING corpus) # INPUT: (STRING corpus)
@ -464,6 +464,8 @@ class CQiClient:
response = byte_data response = byte_data
elif response_type == CQi.ERROR: elif response_type == CQi.ERROR:
raise Exception(CQi.lookup[byte_data]) raise Exception(CQi.lookup[byte_data])
elif response_type == CQi.ERROR_SYNTAX_ERROR:
raise Exception(CQi.lookup[byte_data])
elif response_type == CQi.DATA: elif response_type == CQi.DATA:
response = self.__recv_DATA(byte_data) response = self.__recv_DATA(byte_data)
elif response_type == CQi.CL_ERROR: elif response_type == CQi.CL_ERROR:

View File

@ -49,7 +49,12 @@ def corpus_analysis(message):
context_len = int(message['context']) context_len = int(message['context'])
result_offset = 0 result_offset = 0
client.select_corpus(corpus_name) client.select_corpus(corpus_name)
try:
client.query_subcorpus(query) client.query_subcorpus(query)
except Exception as e:
logger.warning(e)
socketio.emit('corpus_analysis', str(e), room=request.sid)
else:
results = client.show_query_results(result_len=result_len, results = client.show_query_results(result_len=result_len,
context_len=context_len, context_len=context_len,
result_offset=result_offset) result_offset=result_offset)

View File

@ -258,6 +258,16 @@
}); });
} }
return; return;
} else if (message === "CQI_CQP_ERROR_GENERAL") {
queryResultsTableElement.classList.add("hide");
let toast = M.toast({"classes": "red", "html": `<span>Invalid query entered!</span><button class="btn-flat toast-action white-text" data-action="close"><i class="material-icons">close</i></button>`});
let toastActionElement = toast.el.querySelector(".toast-action[data-action='close']");
if (toastActionElement) {
toastActionElement.addEventListener("click", function() {
toast.dismiss();
});
}
return;
} }
var matchElement; var matchElement;