blob: f2ec1582f31624f723c5bc0e18780b92cdb99acf [file] [log] [blame]
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;