summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx')
-rw-r--r--openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx133
1 files changed, 133 insertions, 0 deletions
diff --git a/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx b/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx
new file mode 100644
index 0000000000..f2ec1582f3
--- /dev/null
+++ b/openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx
@@ -0,0 +1,133 @@
+import React, {Component} from 'react';
+import ListGroupItem from 'react-bootstrap/lib/ListGroupItem.js';
+import ListGroup from 'react-bootstrap/lib/ListGroup.js';
+import Panel from 'react-bootstrap/lib/Panel.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+
+/**
+ * parsing and showing the following Java Response object
+ *
+ * public class ValidationResponse {
+ private boolean valid = true;
+ private Collection<ErrorCode> vspErrors;
+ private Collection<ErrorCode> licensingDataErrors;
+ private Map<String, List<ErrorMessage>> uploadDataErrors;
+ private Map<String, List<ErrorMessage>> compilationErrors;
+ private QuestionnaireValidationResult questionnaireValidationResult;
+ }
+
+ * public class ErrorCode {
+ private String id;
+ private String message;
+ private ErrorCategory category;
+ }
+
+ * public class ErrorMessage {
+ private final ErrorLevel level;
+ private final String message;
+ }
+ */
+class SubmitErrorResponse extends Component {
+
+
+ render() {
+ let {validationResponse} = this.props;
+ return (
+ <div className='submit-error-response-view'>
+ {validationResponse.vspErrors && this.renderVspErrors(validationResponse.vspErrors)}
+ {validationResponse.licensingDataErrors && this.renderVspErrors(validationResponse.licensingDataErrors)}
+ {validationResponse.compilationErrors && this.renderCompilationErrors(validationResponse.compilationErrors)}
+ {validationResponse.uploadDataErrors && this.renderUploadDataErrors(validationResponse.uploadDataErrors)}
+ {validationResponse.questionnaireValidationResult && this.renderQuestionnaireValidationResult(validationResponse.questionnaireValidationResult)}
+ </div>
+ );
+ }
+
+ renderVspErrors(vspErrors) {
+ return (
+ <Panel header={i18n('VSP Errors')} collapsible>{this.parseErrorCodeCollection(vspErrors)}</Panel>
+ );
+ }
+
+ renderLicensingDataErrors(licensingDataErrors) {
+ return (
+ <Panel
+ header={i18n('Licensing Data Errors')}
+ collapsible>{this.parseErrorCodeCollection(licensingDataErrors)}
+ </Panel>
+ );
+ }
+
+ renderUploadDataErrors(uploadDataErrors) {
+ return (
+ <Panel
+ header={i18n('Upload Data Errors')}
+ collapsible>{this.parseMapOfErrorMessagesList(uploadDataErrors)}
+ </Panel>
+ );
+ }
+
+ renderCompilationErrors(compilationErrors) {
+ return (
+ <Panel
+ header={i18n('Compilation Errors')}
+ collapsible>{this.parseMapOfErrorMessagesList(compilationErrors)}
+ </Panel>
+ );
+ }
+
+ parseErrorCodeCollection(errors) {
+ return (
+ <ListGroup>{errors.map(error =>
+ <ListGroupItem className='error-code-list-item'>
+ <div><span>{i18n('Category: ')}</span>{error.category}</div>
+ <div><span>{i18n('Message: ')}</span>{error.message}</div>
+ </ListGroupItem>
+ )}</ListGroup>
+ );
+ }
+
+ parseMapOfErrorMessagesList(errorMap) {
+ return (
+ <ListGroup>
+ {Object.keys(errorMap).map(errorStringKey =>
+ <Panel header={errorStringKey} collapsible>
+ <ListGroup>{errorMap[errorStringKey].map(error =>
+ <ListGroupItem className='error-code-list-item'>
+ <div><span>{i18n('Level: ')}</span>{error.level}</div>
+ <div><span>{i18n('Message: ')}</span>{error.message}</div>
+ </ListGroupItem>
+ )}</ListGroup>
+ </Panel>
+ )}
+ </ListGroup>
+ );
+ }
+
+
+ renderQuestionnaireValidationResult(questionnaireValidationResult) {
+ if (!questionnaireValidationResult.valid) {
+ return this.parseAndRenderCompositionEntityValidationData(questionnaireValidationResult.validationData);
+ }
+ }
+
+ parseAndRenderCompositionEntityValidationData(validationData) {
+ let {entityType, entityId, errors = [], subEntitiesValidationData = []} = validationData;
+ return (
+ <ListGroup>
+ <Panel header={`${entityType}: ${entityId}`} collapsible>
+ <ListGroup>{errors.map(error =>
+ <ListGroupItem className='error-code-list-item'>
+ <div>{error}</div>
+ </ListGroupItem>
+ )}</ListGroup>
+ {subEntitiesValidationData.map(subValidationData => this.parseAndRenderCompositionEntityValidationData(subValidationData))}
+ </Panel>
+ </ListGroup>
+ );
+ }
+
+
+}
+
+export default SubmitErrorResponse;