Prevent adding same type of Op policy 41/106341/1
authorxuegao <xg353y@intl.att.com>
Tue, 21 Apr 2020 11:39:50 +0000 (13:39 +0200)
committerxuegao <xg353y@intl.att.com>
Tue, 21 Apr 2020 11:39:50 +0000 (13:39 +0200)
Add the logic to prevent user adding the same type of Operational Policy

Issue-ID: CLAMP-828
Change-Id: Iec6774ec7a9494740f7aed0873165ba073d73e45
Signed-off-by: xuegao <xg353y@intl.att.com>
src/main/java/org/onap/clamp/loop/LoopService.java
ui-react/src/api/LoopService.js
ui-react/src/components/dialogs/Loop/ModifyLoopModal.js

index 6658c5a..d14667e 100644 (file)
@@ -118,6 +118,12 @@ public class LoopService {
     Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) throws IOException {
         Loop loop = getLoop(loopName);
         PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion);
+        Set<OperationalPolicy> opPolicySet = loop.getOperationalPolicies();
+        for (OperationalPolicy opPolicy : opPolicySet) {
+               if (opPolicy.getPolicyModel().equals(policyModel)) {
+                       throw new IllegalArgumentException("This type of Operational Policy is already added to the loop. Please choose another one.");
+               }
+        }
         if (policyModel == null) {
             return null;
         }
index 698ee28..9d3b369 100644 (file)
@@ -226,18 +226,17 @@ export default class LoopService {
                        credentials: 'same-origin'
                })
                                .then(function (response) {
-                                       console.debug("Add Operational Policy response received: ", response.status);
+                               console.debug("Add Operational Policy response received: ", response.status);
                                if (response.ok) {
                                        return response.json();
                                } else {
-                                       console.error("Add Operational Policy query failed");
-                                       return {};
+                                       return response.text();
                                }
                        })
-                       .catch(function (error) {
-                               console.error("Add Operational Policy error received", error);
-                               return {};
-                       });
+                       .then(function (object) {
+                               console.error("Add Operational Policy query failed");
+                               throw new Error(object);
+                       })
        }
 
        static removeOperationalPolicyType(loopName, policyType, policyVersion) {
index 42c03da..4c6b6a7 100644 (file)
@@ -37,7 +37,7 @@ import Search from '@material-ui/icons/Search';
 import LoopService from '../../../api/LoopService';
 import Tabs from 'react-bootstrap/Tabs';
 import Tab from 'react-bootstrap/Tab';
-
+import Alert from 'react-bootstrap/Alert';
 
 const ModalStyled = styled(Modal)`
        background-color: transparent;
@@ -65,6 +65,7 @@ export default class ModifyLoopModal extends React.Component {
                toscaPolicyModelsData: [],
                selectedPolicyModelsData: [],
                key: 'add',
+               showFailAlert: false,
                toscaColumns: [
                        { title: "#", field: "index", render: rowData => rowData.tableData.id + 1,
                                cellStyle: cellStyle,
@@ -160,10 +161,25 @@ export default class ModifyLoopModal extends React.Component {
                this.props.history.push('/');
        }
 
+       renderAlert() {
+               return (
+                       <div>
+                               <Alert variant="danger" show={this.state.showFailAlert} onClose={this.disableAlert} dismissible>
+                                       {this.state.showMessage}
+                               </Alert>
+                       </div>
+               );
+       }
+
        handleAdd() {
-               LoopService.addOperationalPolicyType(this.state.loopCache.getLoopName(),this.state.selectedRowData.policyModelType,this.state.selectedRowData.version);
-               this.props.loadLoopFunction(this.state.loopCache.getLoopName());
-               this.handleClose();
+               LoopService.addOperationalPolicyType(this.state.loopCache.getLoopName(),this.state.selectedRowData.policyModelType,this.state.selectedRowData.version)
+               .then(pars => {
+                       this.props.loadLoopFunction(this.state.loopCache.getLoopName());
+                       this.handleClose();
+               })
+               .catch(error => {
+                       this.setState({ showFailAlert: true, showMessage: "Adding failed with error: " + error.message});
+               });
        }
 
        handleRemove() {
@@ -192,13 +208,14 @@ export default class ModifyLoopModal extends React.Component {
                                                                rowStyle: rowData => ({
                                                                        backgroundColor: (this.state.selectedRowData !== {} && this.state.selectedRowData.tableData !== undefined
                                                                        && this.state.selectedRowData.tableData.id === rowData.tableData.id) ? '#EEE' : '#FFF'
-                                                               })
+                                                                       })
                                                        }}
                                                        />
                                                        <div>
                                                                <TextModal value={this.state.content} onChange={this.handleYamlContent}/>
                                                        </div>
                                                </Modal.Body>
+                                               {this.renderAlert()}
                                        </Tab>
                                        <Tab eventKey="remove" title="Remove Operational Policies">
                                                <Modal.Body>