UNPKG

grafo-client

Version:

Grafo Client API Library

1 lines 7 kB
const uuidv4=require("uuid/v4"),util=require("../util");var Iri=require("./iri"),DataTypes=require("./datatypes");const CustomField=require("./custom_field"),Validator=require("./validator"),Mapping=require("./mapping"),GrafoErrorGlossary=require("../errors/GrafoErrorGlossary"),GenericValidationError=require("../errors/GenericValidationError");function Attribute(t,i,e,r,s,p,a,n,d,o){if(this.nodeType="attribute",this.iriChanged=!1,t){if(this.id=n,this.label=t,this.description=i,this.fields=[],e)for(var h=0;h<e.length;h++)this.fields.push(new CustomField(e[h].title,e[h].text,e[h].id));r&&(Object.values(DataTypes.XsdDataType).includes(r)?this.xsdDataType=r:this.xsdDataType="string"==typeof r?DataTypes.resolveXsdDataTypeByTitle(r):DataTypes.resolveXsdDataType(r)),s&&(Object.values(DataTypes.CardinalityType).includes(s)?this.cardinalityType=s:this.cardinalityType="string"==typeof s?DataTypes.resolveCardinalityTypeByTitle(s):DataTypes.resolveCardinalityType(s)),this.cardinality=p,this.id||(this.id="attr-"+uuidv4()),this.label||(this.label="attribute1"),this.description||(this.description=""),o&&o===DataTypes.ResourceType.RELATIONSHIP&&(n||(this.id="link"+this.id),t||(this.label="rel"+this.label),this.parentType=DataTypes.ResourceType.RELATIONSHIP),a?(this.iri=new Iri,this.iri.initWithIri(a)):this.iri=new Iri(d,this.id,t)}}module.exports=Attribute,Attribute.prototype.initUsingMongoDbStructure=function(t,i){if(this.iri=new Iri,this.iri.initWithIri(i.iri,i.hasEdited),this.id=t.id,this.groupId=t.groupId,this.nodeType=t.nodeType,"attribute"!==this.nodeType)throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Hey you got wrong data for node type for attribute with id = "+t.id+". Please handle for nodeType = "+this.nodeType);if(this.label=t.label,this.description=t.description,this.fields=[],t.fields)for(var e=0;e<t.fields.length;e++)this.fields.push(new CustomField(t.fields[e].title,t.fields[e].text,t.fields[e].id));if(t.mappings){this.mappings=[];for(e=0;e<t.mappings.length;e++){var r=t.mappings[e],s=new Mapping(r.mappingId,r.dbId,r.mappingType,r.imported,r.id);s.setMappingDetails(r),this.mappings.push(s)}}this.xsdDataType=t.xsdDataType,t.cardinalityType&&(this.cardinalityType=DataTypes.resolveCardinalityType(t.cardinalityType)),t.cardinalityType&&(this.cardinality=t.cardinality),t.parentType&&t.parentType===DataTypes.ResourceType.RELATIONSHIP&&(this.parentType=t.parentType,this.fromNodeId=t.fromNodeId,this.toNodeId=t.toNodeId)},Attribute.prototype.getId=function(){return this.id},Attribute.prototype.setGroupId=function(t){this.groupId=t},Attribute.prototype.setIri=function(t){this.iriChanged=!0,this.iri=new Iri,t.iri?this.iri.initWithIri(t.iri,t.hasEdited):this.iri.initWithIri(t,!0)},Attribute.prototype.setIriChanged=function(t){this.iriChanged=t},Attribute.prototype.getIri=function(){return this.iri.iri},Attribute.prototype.getLabel=function(){return this.label},Attribute.prototype.setLabel=function(t){this.label=t},Attribute.prototype.setDescription=function(t){this.description=t},Attribute.prototype.setXsdDataType=function(t){this.xsdDataType=t},Attribute.prototype.getFields=function(){return this.fields},Attribute.prototype.setFields=function(t,i){if(t){this.fields||(this.fields=[]);for(var e=0;e<t.length;e++){var r=getFieldIndex(this,t[e]);r>-1?updateField(this,t[e],r):addField(this,t[e],i)}}};var addField=function(t,i,e){e||Validator.validateCustomField(i,!0),t.fields.push(new CustomField(i.title,i.text,i.id))},updateField=function(t,i,e){var r=t.fields[e];i.title&&i.title.trim()&&r.setTitle(i.title),i.text&&i.text.trim()&&r.setText(i.text)},getFieldIndex=function(t,i){for(var e=0;e<t.fields.length;e++)if(i.id===t.fields[e].getId())return e;return-1};Attribute.prototype.deleteField=function(t){for(var i=-1,e=0;e<this.fields.length;e++)t===this.fields[e].getId()&&(i=e);return i>-1&&this.fields.splice(i,1),i},Attribute.prototype.setCardinalityType=function(t){this.cardinalityType=t},Attribute.prototype.setCardinality=function(t){this.cardinality=t},Attribute.prototype.setMappings=function(t,i){if(t)for(var e=0;e<t.length;e++){var r=getMappingIndex(this,t[e]);r>-1?updateMapping(this,t[e],r):addMapping(this,t[e],i)}},Attribute.prototype.getMappings=function(){return this.mappings},Attribute.prototype.getAllMappings=function(){var t=[];if(this.mappings)for(var i=0;i<this.mappings.length;i++)t.push(this.mappings[i].toObject());return t},Attribute.prototype.addMappings=function(t,i){if(t){this.mappings||(this.mappings=[]);for(var e=0;e<t.length;e++){var r=t[e],s=new Mapping(r.mappingId,r.dbId,r.mappingType,r.imported,r.id);s.setMappingDetails(r),this.mappings.push(s)}}};var addMapping=function(t,i){var e=new Mapping(i.mappingId,i.dbId,i.mappingType,i.imported,i.id);e.setMappingDetails(i),t.mappings.push(e)},updateMapping=function(t,i,e){var r=new Mapping(i.mappingId,i.dbId,i.mappingType,i.imported,i.id);r.setMappingDetails(i),t.mappings[e]=r},getMappingIndex=function(t,i){for(var e=0;e<t.mappings.length;e++)if(i.imported){if(t.mappings[e].dbId===i.dbId&&t.mappings[e].imported)return e}else if(i.id===t.mappings[e].getId())return e;return-1};Attribute.prototype.deleteMappings=function(t,i){for(var e=[],r=0;r<this.mappings.length;r++)t===this.mappings[r].getDbId()&&(i?i===this.mappings[r].isImported()&&e.push(r):e.push(r));e.sort(function(t,i){return i-t});for(r=0;r<e.length;r++){var s=e[r];s>-1&&this.mappings.splice(s,1)}return e},Attribute.prototype.setFromNodeIdAndToNodeId=function(t,i){this.fromNodeId=t,this.toNodeId=i},Attribute.prototype.getParentType=function(){return this.parentType},Attribute.prototype.getFromNodeId=function(){return this.fromNodeId},Attribute.prototype.getToNodeId=function(){return this.toNodeId},Attribute.prototype.getAttributeInShareDbFormat=function(){var t={id:this.id,nodeType:this.nodeType,groupId:this.groupId,label:this.label,description:this.description,xsdDataType:this.xsdDataType,cardinalityType:this.cardinalityType,cardinality:this.cardinality,fields:[]};this.parentType==DataTypes.ResourceType.RELATIONSHIP&&(t.fromNodeId=this.fromNodeId,t.toNodeId=this.toNodeId,t.parentType=this.parentType);for(var i=0;i<this.fields.length;i++)t.fields.push(this.fields[i].getCustomField());if(this.mappings&&this.mappings.length>0){t.mappings=[];for(i=0;i<this.mappings.length;i++)t.mappings.push(this.mappings[i].toObject())}return t},Attribute.prototype.getShareDbFormatIri=function(){return this.iri.getIri()},Attribute.prototype.toObject=function(){var t={id:this.id,type:this.nodeType,label:this.label,description:this.description,iri:this.iri.iri,xsdDataType:this.xsdDataType,cardinalityType:this.cardinalityType,cardinality:this.cardinality,lastUpdatedBy:this.lastUpdatedBy};if(this.fields&&this.fields.length>0){t.fields=[];for(var i=0;i<this.fields.length;i++)t.fields.push(this.fields[i].getCustomField())}if(this.mappings&&this.mappings.length>0){t.mappings=[];for(i=0;i<this.mappings.length;i++)t.mappings.push(this.mappings[i].toObject())}return t};