Name
sn_smd.SMElement
Description
No description available
Script
var SMElement = Class.create();
SMElement.prototype = {
/** @type IElementDefinition */
element: null,
/**
*@params {IElementDefinition} element object
*@params {?IElementDefinition} parent element if exists
*/
initialize: function(element) {
this.element = element;
},
getId: function() {
return this.getDAO().getStableId();
},
getCiType: function() {
return this.getDAO().getCiType();
},
//returns IServiceDefinition object
getContainer: function() {
return this.getDAO().getDefinitionLevel();
},
getParent: function() {
var elem = this.getDAO().getContainerElement();
if(this.isEndpoint()) {
var rlns = this.getDAO().relations();
for (var i = 0; i < rlns.length; i++) {
var relType = rlns[i].getRelType();
if (relType == "Contains") {
return new SMElement(rlns[i].getSource());
} else if (relType == "Implement End Point To") {
return new SMElement(rlns[i].getTarget());
}
}
return null;
}
if (gs.nil(elem))
return null;
return new SMElement(elem);
},
getDAO: function() {
if(gs.nil(this.element)) {
throw 'Cannot work with null model element';
}
return this.element;
},
getName: function() {
return this.getDAO().getName();
},
setName: function(name) {
this.getDAO().setName(name);
},
getRole: function() {
return this.getDAO().getRoleName();
},
setRole: function(role) {
this.getDAO().setRoleName(role);
},
getOrCreateProperty: function(name) {
var propertyBag = this.getPropertyBag();
var prop = propertyBag.getOrCreate(name);
return new SMElementProperty(prop);
},
getProperties: function() {
var props = [];
var propertyBag = this.getPropertyBag();
var names = propertyBag.keys();
for(var i = 0; i < names.length; i++) {
props.push(new SMElementProperty(propertyBag.get(names[i])));
}
return props;
},
getConstraints: function() {
return this.getDAO().constraintBindings();
},
getProperty: function(name) {
var propertyBag = this.getPropertyBag();
var prop = propertyBag.get(name);
return new SMElementProperty(prop);
},
/**
* Initialize the properties for this element
* @param {object} properties - {name,value,default_value}
*/
initializeProperties: function(properties) {
if (gs.nil(properties))
return;
var propertyBag = this.getPropertyBag();
properties.forEach(createProperty, this);
function createProperty(p) {
var prop = this._setPropertyValueAndGetEntry(propertyBag, p);
prop.setFinal(false);
}
},
setProperties : function(properties) {
if (gs.nil(properties))
return;
var propertyBag = this.getPropertyBag();
properties.forEach(setProperty, this);
function setProperty(p) {
this._setPropertyValueAndGetEntry(propertyBag, p);
}
},
removeProperties: function(properties) {
if (gs.nil(properties))
return;
var propertyBag = this.getPropertyBag();
properties.forEach(removeProperty, this);
function removeProperty(p) {
var prop = propertyBag.get(p.name);
if (prop)
prop.remove();
}
},
_setPropertyValueAndGetEntry: function(propertyBag, property) {
var prop = propertyBag.getOrCreate(property.name);
var value = property.value || property.default_value || '';
prop.setValue(value);
return new SMElementProperty(prop);
},
remove: function() {
this._removeAllInnerElements();
this.getDAO().remove();
},
_removeAllInnerElements : function() {
try {
var childElements = this.getInnerElements();
for (var idx = 0; idx < childElements.length; idx++) {
childElements[idx].remove();
}
} catch(err) {
var displayMessage = gs.getMessage('Failed to delete inner elements');
var internalMessage = 'Error in SMElement._removeAllInnerElements';
throw SMErrorHelper.createScriptAPIError(displayMessage, internalMessage, err);
}
this._removeEndpoints();
},
_removeEndpoints : function() {
var endpoints = this.getEndpoints();
for (var i =0; i < endpoints.length; i++) {
endpoints[i].remove();
}
},
isBoundToAnyCluster: function() {
return this.getDAO().isBoundToAnyCluster();
},
getCluster: function() {
return this.getDAO().getCluster();
},
setCluster: function(clusterDefinition) {
this.getDAO().setCluster(clusterDefinition);
},
setClusterDefinitionOnChildren: function(clusterDefinition) {
var childElements = this.getInnerElements();
for (var i = 0; i < childElements.length; i++) {
// Set cluster definition on elements as well as endpoints
var childElem = childElements[i];
childElem.setCluster(clusterDefinition);
childElem.setClusterDefinitionOnImplementedEndpoints(clusterDefinition);
}
},
setClusterDefinitionOnImplementedEndpoints: function(clusterDefinition) {
var endpoints = this.getDAO().getImplementedEndpoints();
for (var j = 0; j < endpoints.length; j++) {
var epElem = new SMElement(endpoints[j]);
epElem.setCluster(clusterDefinition);
}
},
getClusterCardinalityFromConstraints: function() {
var constraintBindings = this.getDAO().constraintBindings();
var cardinality = 0;
for (var i = 0; i < constraintBindings.length; i++) {
var constraintFlavor = constraintBindings[i].getFlavor();
if(constraintFlavor == SMConstants.RESOURCE_GROUP)
cardinality += constraintBindings[i].extractResourcesInGroup().length;
else
cardinality += 1; //single resource
}
return cardinality;
},
isEndpoint: function() {
return this.getDAO().isEndpoint();
},
getEndpoints: function() {
return this._getSMElementList(this.getDAO().getImplementedEndpoints());
},
getUsedEndpoints: function() {
return this._getSMElementList(this.getDAO().getUsedEndpoints());
},
getInnerElements: function() {
var innerElems = [];
var source = null;
var relations = this.getDAO().relations();
for (var idx = 0; idx < relations.length; idx++) {
source = new SMElement(relations[idx].getSource());
if (source.getId() == this.getId() && relations[idx].getRelType() == "Contains") {
innerElems.push(relations[idx].getTarget());
}
}
return this._getSMElementList(innerElems);
},
_getSMElementList: function(iElemDefList) {
var smElems = [];
for(var i = 0; i < iElemDefList.length; i++) {
smElems.push(new SMElement(iElemDefList[i], this.versionObject, this.getDAO()));
}
return smElems;
},
getPropertyBag: function() {
return this.getDAO().getPropertyBag();
},
getParameterBag: function() {
return this.getDAO().getParameterBag();
},
setDeploymentExtension: function(extensionContainer) {
this.getDAO().setDeploymentExtension(extensionContainer);
},
isBoundAsQualifierToAnything: function() {
return this.getDAO().isBoundAsQualifierToAnything();
},
isTopLevelElement: function() {
var containsRlns = this.getDAO().filteredRelations("Contains", true, false);
if (containsRlns.length > 0) {
return false;
}
if (this.getCiType() === sn_sra.SRAConstants.ENTRY_POINT_QUALIFIER)
return false;
if (this.isEndpoint())
return false;
return true;
},
type: 'SMElement'
};
Sys ID
5eb7597cc3522200e2ddb59af3d3aec4