1 import React, {Component} from 'react';
2 import ListGroupItem from 'react-bootstrap/lib/ListGroupItem.js';
3 import ListGroup from 'react-bootstrap/lib/ListGroup.js';
4 import Panel from 'react-bootstrap/lib/Panel.js';
5 import i18n from 'nfvo-utils/i18n/i18n.js';
8 * parsing and showing the following Java Response object
10 * public class ValidationResponse {
11 private boolean valid = true;
12 private Collection<ErrorCode> vspErrors;
13 private Collection<ErrorCode> licensingDataErrors;
14 private Map<String, List<ErrorMessage>> uploadDataErrors;
15 private Map<String, List<ErrorMessage>> compilationErrors;
16 private QuestionnaireValidationResult questionnaireValidationResult;
19 * public class ErrorCode {
21 private String message;
22 private ErrorCategory category;
25 * public class ErrorMessage {
26 private final ErrorLevel level;
27 private final String message;
30 class SubmitErrorResponse extends Component {
34 let {validationResponse} = this.props;
36 <div className='submit-error-response-view'>
37 {validationResponse.vspErrors && this.renderVspErrors(validationResponse.vspErrors)}
38 {validationResponse.licensingDataErrors && this.renderVspErrors(validationResponse.licensingDataErrors)}
39 {validationResponse.compilationErrors && this.renderCompilationErrors(validationResponse.compilationErrors)}
40 {validationResponse.uploadDataErrors && this.renderUploadDataErrors(validationResponse.uploadDataErrors)}
41 {validationResponse.questionnaireValidationResult && this.renderQuestionnaireValidationResult(validationResponse.questionnaireValidationResult)}
46 renderVspErrors(vspErrors) {
48 <Panel header={i18n('VSP Errors')} collapsible>{this.parseErrorCodeCollection(vspErrors)}</Panel>
52 renderLicensingDataErrors(licensingDataErrors) {
55 header={i18n('Licensing Data Errors')}
56 collapsible>{this.parseErrorCodeCollection(licensingDataErrors)}
61 renderUploadDataErrors(uploadDataErrors) {
64 header={i18n('Upload Data Errors')}
65 collapsible>{this.parseMapOfErrorMessagesList(uploadDataErrors)}
70 renderCompilationErrors(compilationErrors) {
73 header={i18n('Compilation Errors')}
74 collapsible>{this.parseMapOfErrorMessagesList(compilationErrors)}
79 parseErrorCodeCollection(errors) {
81 <ListGroup>{errors.map(error =>
82 <ListGroupItem className='error-code-list-item'>
83 <div><span>{i18n('Category: ')}</span>{error.category}</div>
84 <div><span>{i18n('Message: ')}</span>{error.message}</div>
90 parseMapOfErrorMessagesList(errorMap) {
93 {Object.keys(errorMap).map(errorStringKey =>
94 <Panel header={errorStringKey} collapsible>
95 <ListGroup>{errorMap[errorStringKey].map(error =>
96 <ListGroupItem className='error-code-list-item'>
97 <div><span>{i18n('Level: ')}</span>{error.level}</div>
98 <div><span>{i18n('Message: ')}</span>{error.message}</div>
108 renderQuestionnaireValidationResult(questionnaireValidationResult) {
109 if (!questionnaireValidationResult.valid) {
110 return this.parseAndRenderCompositionEntityValidationData(questionnaireValidationResult.validationData);
114 parseAndRenderCompositionEntityValidationData(validationData) {
115 let {entityType, entityId, errors = [], subEntitiesValidationData = []} = validationData;
118 <Panel header={`${entityType}: ${entityId}`} collapsible>
119 <ListGroup>{errors.map(error =>
120 <ListGroupItem className='error-code-list-item'>
124 {subEntitiesValidationData.map(subValidationData => this.parseAndRenderCompositionEntityValidationData(subValidationData))}
133 export default SubmitErrorResponse;