private void Remove(IAttributeDefinition attribdef)
		{
			int index = IndexOf(attribdef);
			if (index == -1)
				return;
			_terms.RemoveAt(index);
		}
Ejemplo n.º 2
0
 public SelectionElement(string myAlias, Select.EdgeList myEdgeList, bool myIsGroupedOrAggregated, IDChainDefinition myRelatedIDChainDefinition, IAttributeDefinition myElement = null)
     : this(myAlias, myRelatedIDChainDefinition)
 {
     EdgeList = myEdgeList;
     IsGroupedOrAggregated = myIsGroupedOrAggregated;
     Element = myElement;
 }
		private int IndexOf(IAttributeDefinition attribdef)
		{
			for (int i=0;i<_terms.Count;i++)
				if (_terms[i].AttributeDefinition == attribdef)
					return i;
			return -1;
		}
Ejemplo n.º 4
0
 public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
 {
     if (myCallingObject is IHyperEdge)
     {
         return new FuncParameter((UInt64)((IHyperEdge)myCallingObject).GetAllEdges().Count());
     }
     else if (myCallingObject is ISingleEdge)
     {
         UInt64 count = 1;
         return new FuncParameter(count);
     }
     else if (myCallingObject is IncomingEdgeCollection)
     {
         return new FuncParameter((UInt64)(myCallingObject as IncomingEdgeCollection).LongCount());
     }
     else if (myCallingObject is IEnumerable<long>)
     {
         return new FuncParameter((UInt64)(myCallingObject as IEnumerable<long>).LongCount());
     }
     else if (myCallingObject is IEnumerable<IVertex>)
     {
         return new FuncParameter((UInt64)(myCallingObject as IEnumerable<IVertex>).LongCount());
     }
     else
     {
         throw new UnknownDBException("Unexpected input for COUNT aggregate.");
     }
 }
Ejemplo n.º 5
0
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
        {
            if (!(myCallingObject is String))
            {
                throw new FunctionParameterTypeMismatchException(typeof(String), myCallingObject.GetType());
            }

            var pos = Convert.ToInt32(myParams[0].Value);

            StringBuilder resString = new StringBuilder();
            bool dontInsert = false;

            if (pos > (myCallingObject as String).Length)
            {
                dontInsert = true;
                resString.Append((myCallingObject as String).ToString());
            }
            else
            {
                resString.Append((myCallingObject as String).ToString().Substring(0, pos));
            }

            foreach (FuncParameter fp in myParams.Skip(1))
            {
                resString.Append(fp.Value as String);
            }

            if(!dontInsert)
                resString.Append((myCallingObject as String).ToString().Substring(pos));

            return new FuncParameter(resString.ToString());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Executes the function on myCallingObject
        /// </summary>
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
        {
            var currentInnerEdgeType = ((IOutgoingEdgeDefinition)myAttributeDefinition).InnerEdgeType;

            if (myCallingObject is IHyperEdge && currentInnerEdgeType.HasProperty("Weight"))
            {
                var hyperEdge = myCallingObject as IHyperEdge;

                if (currentInnerEdgeType.HasProperty("Weight"))
                {
                    var weightProperty = currentInnerEdgeType.GetPropertyDefinition("Weight");

                    var maxWeight = hyperEdge.InvokeHyperEdgeFunc<Double>(singleEdges =>
                    {
                        return Convert.ToDouble(
                            weightProperty.GetValue(
                            singleEdges
                            .OrderByDescending(edge => weightProperty.GetValue(edge))
                            .First()));
                    });

                    return new FuncParameter(maxWeight);

                }
            }

            throw new InvalidTypeException(myCallingObject.GetType().ToString(), "Weighted IHyperEdge");
        }
 /// <summary>
 /// Clear an attribute from cache based on definition.
 /// </summary>
 /// <param name="attribdef">definition of attribute to clear; 
 /// if null, all attributes will be cleared from cache.</param>
 public void ClearAttributeCache(IAttributeDefinition attribdef) {
     if (attribdef == null) {
         attributes.Clear();
     } else {
         attributes.Remove(ResolveAttributeDefinition(attribdef).Token);
     }
 }
        private IAttributeDefinition ResolveAttribute(string token, IAttributeDefinition result) {
            if(result == null && token != null) {
                result = meta.GetAttributeDefinition(token);
            }

            return result;
        }
Ejemplo n.º 9
0
 public virtual void SetValue(IAttributeDefinition attrDef, object value)
 {
     Type it = this.GetType();//this.GetType().Assembly.GetType("TJVISA.Entity." + attrDef.ForObject.EntityName,false, true);
     if (it == null) Debug.Assert(false, attrDef.ForObject.EntityName + " is unknown object type.");
     PropertyInfo p = it.GetProperty(attrDef.Name);
     if (p != null && p.CanWrite)
         p.SetValue(this, value, null);
 }
Ejemplo n.º 10
0
 public virtual object GetValue(IAttributeDefinition attrDef)
 {
     Type it = this.GetType();//this.GetType().Assembly.GetType("TJVISA.Entity." + attrDef.ForObject.EntityName,false, true);
     if (it == null) Debug.Assert(false, attrDef.ForObject.EntityName+ " is unknown object type.");
     PropertyInfo p = it.GetProperty(attrDef.Name);
     if (p != null && p.CanRead)
         return p.GetValue(this, null);
     return null;
 }
        private IAttributeDefinition ResolveAttributeDefinition(IAttributeDefinition attribdef) {
            try {
                if(AssetType.Is(attribdef.AssetType)) {
                    return AssetType.GetAttributeDefinition(attribdef.Name);
                }
            } catch (MetaException) { }

            return attribdef;
        }
Ejemplo n.º 12
0
 public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
 {
     if (myCallingObject != null)
     {
         return new FuncParameter(true);
     }
     else
     {
         return new FuncParameter(false);
     }
 }
Ejemplo n.º 13
0
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, params FuncParameter[] myParams)
        {
            if (!(myCallingObject is String))
            {
                throw new FunctionParameterTypeMismatchException(typeof(String), myCallingObject.GetType());
            }

            var substring = myCallingObject.ToString().Substring(Convert.ToInt32(myParams[0].Value), Convert.ToInt32(myParams[1].Value));

            return new FuncParameter(substring);
        }
Ejemplo n.º 14
0
 public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, params FuncParameter[] myParams)
 {
     if (myCallingObject is String)
     {
         return new FuncParameter(((String)myCallingObject).ToLower());
     }
     else
     {
         throw new FunctionParameterTypeMismatchException(typeof(String), myCallingObject.GetType());
     }
 }
Ejemplo n.º 15
0
 public ServiceAttributeDefinition(IAttributeDefinition myAttributeDefinition)
 {
     if (myAttributeDefinition != null)
     {
         this.ID = myAttributeDefinition.ID;
         this.Name = myAttributeDefinition.Name;
         this.IsUserDefined = myAttributeDefinition.IsUserDefined;
         this.Kind = (ServiceAttributeType)myAttributeDefinition.Kind;
         this.RelatedType = ConvertHelper.ToServiceBaseType(myAttributeDefinition.RelatedType);
     }
 }
		public void TestFixtureSetUp()
		{
			V1APIConnector dataConnector = new V1APIConnector(v1Url + dataPath, username, password);
			V1APIConnector metaConnector = new V1APIConnector(v1Url + metaPath);
			V1APIConnector localConnector = new V1APIConnector(v1Url + localizationPath);
			
			localizer = new Localizer(localConnector);
			metaModel = new MetaModel(metaConnector);
			services = new Services(metaModel, dataConnector);

			timeboxType = metaModel.GetAssetType("Timebox");
			timeboxName = timeboxType.GetAttributeDefinition("Name");
			timeboxID = timeboxType.GetAttributeDefinition("ID");
		}
        /// <summary>
        /// Validate single Asset attribute. If attribute is not loaded, it is just considered invalid.
        /// </summary>
        /// <param name="asset">Asset to validate</param>
        /// <param name="attributeDefinition">Attribute definition of validated attribute</param>
        /// <returns>Validation result</returns>
        // TODO create separate private method to avoid excessive GetRequiredFields() calls
        public bool Validate(Asset asset, IAttributeDefinition attributeDefinition)
        {
            GetRequiredFields(asset.AssetType);
            asset.EnsureAttribute(attributeDefinition);
            Attribute attribute = asset.GetAttribute(attributeDefinition);
            bool result = attribute != null && !(IsMultiValueAndUnfilled(attribute) || IsSingleValueAndUnfilled(attribute));

            if (!result && attribute != null)
            {
                result = !attribute.HasChanged && !isAttributeUnfilledOnServer(asset, attributeDefinition);
            }

            return result;
        }
        internal OrderBy BuildOrderBy(IAssetType assetType, IAttributeDefinition defaultOrderBy) {
            var order = new OrderBy();
            
            if (OrderBy.Count > 0) {
                foreach(var s in OrderBy) {
                    order.MinorSort(assetType.GetAttributeDefinition(ResolvePropertyName(s)), APIClient.OrderBy.Order.Ascending);
                }
            } else {
                if(defaultOrderBy != null) {
                    order.MinorSort(defaultOrderBy, APIClient.OrderBy.Order.Ascending);
                }
            }

            return order;
        }
		public void TestFixtureSetUp() {
			var metaConnector = new V1APIConnector(V1Url + "/meta.v1/");
			var dataConnector = new V1APIConnector(V1Url + "/rest-1.v1/", Username, Password);
			metaModel = new MetaModel(metaConnector);
			services = new Services(metaModel, dataConnector);
			
			storyType = metaModel.GetAssetType("Story");
			storyDeleteOperation = storyType.GetOperation("Delete");

			nameDef = storyType.GetAttributeDefinition("Name");
			scopeDef = storyType.GetAttributeDefinition("Scope");
			changeDateDef = storyType.GetAttributeDefinition("ChangeDate");
			momentDef = storyType.GetAttributeDefinition("Moment");
			attributesToQuery = new[] {nameDef, scopeDef, changeDateDef, momentDef};
		}
Ejemplo n.º 20
0
 public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
 {
     if (myCallingObject is UInt64)
     {
         var dtValue = Convert.ToDateTime((UInt64)myCallingObject);
         return new FuncParameter((Int64)UNIXTimeConversionExtension.ToUnixTimeStamp(dtValue));
     }
     else if (myCallingObject is DateTime)
     {
         return new FuncParameter(UNIXTimeConversionExtension.ToUnixTimeStamp((DateTime)myCallingObject));
     }
     else
     {
         throw new InvalidTypeException(myCallingObject.GetType().ToString(), "DateTime");
     }
 }
        public Query(IAssetType assetType, bool historical, IAttributeDefinition parentRelation) {
            Find = null;
            this.assetType = assetType;
            isHistorical = historical;
            oid = Oid.Null;
            this.parentRelation = parentRelation;
            
            if (this.parentRelation != null) {
                if(this.parentRelation.AttributeType != AttributeType.Relation) {
                    throw new ApplicationException("Parent Relation must be a Relation Attribute Type");
                }

                if(this.parentRelation.IsMultiValue) {
                    throw new ApplicationException("Parent Relation cannot be multi-value");
                }
            }
        }
Ejemplo n.º 22
0
 public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, params FuncParameter[] myParams)
 {
     if (myCallingObject != null)
     {
         if (myCallingObject is Int64)
         {
             return new FuncParameter(UNIXTimeConversionExtension.FromUnixTimeStamp((Int64)myCallingObject));
         }
         else
         {
             throw new InvalidTypeException(myCallingObject.GetType().Name, "Int64");
         }
     }
     else
     {
         throw new NotImplementedException();
     }
 }
Ejemplo n.º 23
0
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, params FuncParameter[] myParams)
        {
            StringBuilder resString = new StringBuilder();

            if (myCallingObject != null)
            {
                if (myCallingObject is string)
                {
                    resString.Append(myCallingObject as String);
                }
            }

            foreach (FuncParameter fp in myParams)
            {
                resString.Append(fp.Value.ToString());
            }

            return new FuncParameter(resString.ToString());
        }
Ejemplo n.º 24
0
 public static ServiceAttributeDefinition ToServiceAttributeDefinition(IAttributeDefinition myAttributeDefinition)
 {
     ServiceAttributeDefinition svcAttributeDef = null;
     if (myAttributeDefinition != null)
     {
         switch (myAttributeDefinition.Kind)
         {
             case AttributeType.Property:
                 svcAttributeDef = new ServicePropertyDefinition((IPropertyDefinition)myAttributeDefinition);
                 break;
             case AttributeType.OutgoingEdge:
                 svcAttributeDef = new ServiceOutgoingEdgeDefinition((IOutgoingEdgeDefinition)myAttributeDefinition);
                 break;
             case AttributeType.IncomingEdge:
                 svcAttributeDef = new ServiceIncomingEdgeDefinition((IIncomingEdgeDefinition)myAttributeDefinition);
                 break;
             case AttributeType.BinaryProperty:
                 svcAttributeDef = new ServiceBinaryPropertyDefinition((IBinaryPropertyDefinition)myAttributeDefinition);
                 break;
         }
     }
     return svcAttributeDef;
 }
Ejemplo n.º 25
0
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition, Object myCallingObject, IVertex myDBObject, IGraphDB myGraphDB, SecurityToken mySecurityToken, TransactionToken myTransactionToken, params FuncParameter[] myParams)
        {
            var currentInnerEdgeType = ((IOutgoingEdgeDefinition)myAttributeDefinition).InnerEdgeType;
            bool orderByWeight = false;
            IPropertyDefinition weightProperty = null;
            int numOfEntries = Convert.ToInt32(myParams[0].Value);

            if (currentInnerEdgeType.HasProperty("Weight"))
            {
                orderByWeight = true;
                weightProperty = currentInnerEdgeType.GetPropertyDefinition("Weight");
            }

            if (myCallingObject is IHyperEdge)
            {
                var hyperEdge = myCallingObject as IHyperEdge;

                if (orderByWeight)
                {
                    var topVertices = hyperEdge.InvokeHyperEdgeFunc<IEnumerable<IVertex>>(singleEdges =>
                    {
                        return singleEdges
                            .OrderByDescending(edge => weightProperty.GetValue(edge))
                            .Select(aOrderedEdge => aOrderedEdge.GetTargetVertex());
                    }).Take(numOfEntries);

                    return new FuncParameter(topVertices);

                }
                else
                {
                    return new FuncParameter(hyperEdge.GetTargetVertices().Take(numOfEntries));
                }
            }

            throw new InvalidTypeException(myCallingObject.GetType().ToString(), "IHyperEdge");
        }
        private QueryResult Query(Oid memberId, IAttributeDefinition attribute)
        {
            QueryResult result = null;
            var query = new Query(memberId);
            if (attribute != null)
            {
                query.Selection.Add(attribute);
            }
            try
            {
                result = _services.Retrieve(query);
            }
            catch (Exception e)
            {
                if (e is ConnectionException || e is APIException || e is OidException)
                {
                    Console.WriteLine(e.StackTrace);
                }

                throw;
            }

            return result;
        }
Ejemplo n.º 27
0
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Test");
            Query      query     = new Query(assetType);

            IAttributeDefinition assetStateAttribute = assetType.GetAttributeDefinition("AssetState");

            query.Selection.Add(assetStateAttribute);

            IAttributeDefinition assetNumberAttribute = assetType.GetAttributeDefinition("Number");

            query.Selection.Add(assetNumberAttribute);

            IAttributeDefinition ownersAttribute = assetType.GetAttributeDefinition("Owners.ID");

            query.Selection.Add(ownersAttribute);

            IAttributeDefinition goalsAttribute = assetType.GetAttributeDefinition("Goals.ID");

            query.Selection.Add(goalsAttribute);

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition referenceAttribute = assetType.GetAttributeDefinition("Reference");

            query.Selection.Add(referenceAttribute);

            IAttributeDefinition toDoAttribute = assetType.GetAttributeDefinition("ToDo");

            query.Selection.Add(toDoAttribute);

            IAttributeDefinition detailEstimateAttribute = assetType.GetAttributeDefinition("DetailEstimate");

            query.Selection.Add(detailEstimateAttribute);

            IAttributeDefinition stepsAttribute = assetType.GetAttributeDefinition("Steps");

            query.Selection.Add(stepsAttribute);

            IAttributeDefinition inputsAttribute = assetType.GetAttributeDefinition("Inputs");

            query.Selection.Add(inputsAttribute);

            IAttributeDefinition setupAttribute = assetType.GetAttributeDefinition("Setup");

            query.Selection.Add(setupAttribute);

            IAttributeDefinition orderAttribute = assetType.GetAttributeDefinition("Order");

            query.Selection.Add(orderAttribute);

            IAttributeDefinition estimateAttribute = assetType.GetAttributeDefinition("Estimate");

            query.Selection.Add(estimateAttribute);

            IAttributeDefinition versionTestedAttribute = assetType.GetAttributeDefinition("VersionTested");

            query.Selection.Add(versionTestedAttribute);

            IAttributeDefinition actualResultsAttribute = assetType.GetAttributeDefinition("ActualResults");

            query.Selection.Add(actualResultsAttribute);

            IAttributeDefinition expectedResultsAttribute = assetType.GetAttributeDefinition("ExpectedResults");

            query.Selection.Add(expectedResultsAttribute);

            IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");

            query.Selection.Add(statusAttribute);

            IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");

            query.Selection.Add(categoryAttribute);

            IAttributeDefinition parentAttribute = assetType.GetAttributeDefinition("Parent");

            query.Selection.Add(parentAttribute);

            IAttributeDefinition generatedFromAttribute = assetType.GetAttributeDefinition("GeneratedFrom");

            query.Selection.Add(generatedFromAttribute);

            //Filter on parent scope.
            IAttributeDefinition parentScopeAttribute = assetType.GetAttributeDefinition("Scope.ParentMeAndUp");
            FilterTerm           term = new FilterTerm(parentScopeAttribute);

            term.Equal(_config.V1SourceConnection.Project);
            query.Filter = term;

            string SQL = BuildTestInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        //REFERENCE NPI MASK:
                        object reference = GetScalerValue(asset.GetAttribute(referenceAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && reference != DBNull.Value)
                        {
                            reference = ExportUtils.RemoveNPI(reference.ToString());
                        }

                        //STEPS NPI MASK:
                        object steps = GetScalerValue(asset.GetAttribute(stepsAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && steps != DBNull.Value)
                        {
                            steps = ExportUtils.RemoveNPI(steps.ToString());
                        }

                        //INPUTS NPI MASK:
                        object inputs = GetScalerValue(asset.GetAttribute(inputsAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && inputs != DBNull.Value)
                        {
                            inputs = ExportUtils.RemoveNPI(inputs.ToString());
                        }

                        //SETUP NPI MASK:
                        object setup = GetScalerValue(asset.GetAttribute(setupAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && setup != DBNull.Value)
                        {
                            setup = ExportUtils.RemoveNPI(setup.ToString());
                        }

                        //VERSION TESTED NPI MASK:
                        object versionTested = GetScalerValue(asset.GetAttribute(versionTestedAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && versionTested != DBNull.Value)
                        {
                            versionTested = ExportUtils.RemoveNPI(versionTested.ToString());
                        }

                        //ACTUAL RESULTS NPI MASK:
                        object actualResults = GetScalerValue(asset.GetAttribute(actualResultsAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && actualResults != DBNull.Value)
                        {
                            actualResults = ExportUtils.RemoveNPI(actualResults.ToString());
                        }

                        //EXPECTED RESULTS NPI MASK:
                        object expectedResults = GetScalerValue(asset.GetAttribute(expectedResultsAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && expectedResults != DBNull.Value)
                        {
                            expectedResults = ExportUtils.RemoveNPI(expectedResults.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@AssetState", GetScalerValue(asset.GetAttribute(assetStateAttribute)));
                        cmd.Parameters.AddWithValue("@AssetNumber", GetScalerValue(asset.GetAttribute(assetNumberAttribute)));
                        cmd.Parameters.AddWithValue("@Owners", GetMultiRelationValues(asset.GetAttribute(ownersAttribute)));
                        cmd.Parameters.AddWithValue("@Goals", GetMultiRelationValues(asset.GetAttribute(goalsAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@Reference", reference);
                        cmd.Parameters.AddWithValue("@ToDo", GetScalerValue(asset.GetAttribute(toDoAttribute)));
                        cmd.Parameters.AddWithValue("@DetailEstimate", GetScalerValue(asset.GetAttribute(detailEstimateAttribute)));
                        cmd.Parameters.AddWithValue("@Steps", steps);
                        cmd.Parameters.AddWithValue("@Inputs", inputs);
                        cmd.Parameters.AddWithValue("@Setup", setup);
                        cmd.Parameters.AddWithValue("@Order", GetScalerValue(asset.GetAttribute(orderAttribute)));
                        cmd.Parameters.AddWithValue("@Estimate", GetScalerValue(asset.GetAttribute(estimateAttribute)));
                        cmd.Parameters.AddWithValue("@VersionTested", versionTested);
                        cmd.Parameters.AddWithValue("@ActualResults", actualResults);
                        cmd.Parameters.AddWithValue("@ExpectedResults", expectedResults);
                        cmd.Parameters.AddWithValue("@Status", GetSingleRelationValue(asset.GetAttribute(statusAttribute)));
                        cmd.Parameters.AddWithValue("@Category", GetSingleRelationValue(asset.GetAttribute(categoryAttribute)));
                        cmd.Parameters.AddWithValue("@Parent", GetSingleRelationValue(asset.GetAttribute(parentAttribute)));
                        cmd.Parameters.AddWithValue("@GeneratedFrom", GetSingleRelationValue(asset.GetAttribute(generatedFromAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            DeleteEpicTests();
            return(assetCounter);
        }
Ejemplo n.º 28
0
        public override int Import()
        {
            string customV1IDFieldName = GetV1IDCustomFieldName("Story");

            _logger.Info("Custom field Config is {0}", _config.V1Configurations.CustomV1IDField);
            _logger.Info("Custom Field Name is {0}", customV1IDFieldName);

            SqlDataReader sdr = GetImportDataFromDBTableWithOrder("Stories");

            //_logger.Info("Story Count is {0}", sdr.RecordsAffected);


            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    //SPECIAL CASE: No assigned scope, fail to import.
                    if (String.IsNullOrEmpty(sdr["Scope"].ToString()))
                    {
                        UpdateImportStatus("Stories", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Story has no scope.");
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("Story");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    if (String.IsNullOrEmpty(customV1IDFieldName) == false)
                    {
                        IAttributeDefinition customV1IDAttribute = assetType.GetAttributeDefinition(customV1IDFieldName);
                        asset.SetAttributeValue(customV1IDAttribute, sdr["AssetNumber"].ToString());
                    }

                    IAttributeDefinition fullNameAttribute = assetType.GetAttributeDefinition("Name");
                    asset.SetAttributeValue(fullNameAttribute, AddV1IDToTitle(sdr["Name"].ToString(), sdr["AssetNumber"].ToString()));

                    IAttributeDefinition descAttribute = assetType.GetAttributeDefinition("Description");
                    asset.SetAttributeValue(descAttribute, sdr["Description"].ToString());

                    IAttributeDefinition iterationAttribute = assetType.GetAttributeDefinition("Timebox");
                    asset.SetAttributeValue(iterationAttribute, GetNewAssetOIDFromDB(sdr["Timebox"].ToString(), "Iterations"));

                    IAttributeDefinition customerAttribute = assetType.GetAttributeDefinition("Customer");
                    asset.SetAttributeValue(customerAttribute, GetNewAssetOIDFromDB(sdr["Customer"].ToString()));

                    if (String.IsNullOrEmpty(sdr["Owners"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Members", "Owners", sdr["Owners"].ToString());
                    }

                    IAttributeDefinition teamAttribute = assetType.GetAttributeDefinition("Team");
                    asset.SetAttributeValue(teamAttribute, GetNewAssetOIDFromDB(sdr["Team"].ToString()));

                    if (String.IsNullOrEmpty(sdr["Goals"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Goals", sdr["Goals"].ToString());
                    }

                    //TO DO: Test for V1 version number for epic conversion. Right now, assume epic.
                    IAttributeDefinition superAttribute = assetType.GetAttributeDefinition("Super");
                    asset.SetAttributeValue(superAttribute, GetNewEpicAssetOIDFromDB(sdr["Super"].ToString()));

                    IAttributeDefinition referenceAttribute = assetType.GetAttributeDefinition("Reference");
                    asset.SetAttributeValue(referenceAttribute, sdr["Reference"].ToString());

                    IAttributeDefinition detailEstimateAttribute = assetType.GetAttributeDefinition("DetailEstimate");
                    asset.SetAttributeValue(detailEstimateAttribute, sdr["DetailEstimate"].ToString());

                    IAttributeDefinition estimateAttribute = assetType.GetAttributeDefinition("Estimate");
                    asset.SetAttributeValue(estimateAttribute, sdr["Estimate"].ToString());

                    IAttributeDefinition toDoAttribute = assetType.GetAttributeDefinition("ToDo");
                    asset.SetAttributeValue(toDoAttribute, sdr["ToDo"].ToString());

                    IAttributeDefinition lastVersionAttribute = assetType.GetAttributeDefinition("LastVersion");
                    asset.SetAttributeValue(lastVersionAttribute, sdr["LastVersion"].ToString());

                    IAttributeDefinition originalEstimateAttribute = assetType.GetAttributeDefinition("OriginalEstimate");
                    asset.SetAttributeValue(originalEstimateAttribute, sdr["OriginalEstimate"].ToString());

                    IAttributeDefinition requestedByAttribute = assetType.GetAttributeDefinition("RequestedBy");
                    asset.SetAttributeValue(requestedByAttribute, sdr["RequestedBy"].ToString());

                    IAttributeDefinition valueAttribute = assetType.GetAttributeDefinition("Value");
                    asset.SetAttributeValue(valueAttribute, sdr["Value"].ToString());

                    IAttributeDefinition scopeAttribute = assetType.GetAttributeDefinition("Scope");
                    asset.SetAttributeValue(scopeAttribute, GetNewAssetOIDFromDB(sdr["Scope"].ToString(), "Projects"));

                    IAttributeDefinition riskAttribute = assetType.GetAttributeDefinition("Risk");
                    asset.SetAttributeValue(riskAttribute, GetNewListTypeAssetOIDFromDB(sdr["Risk"].ToString()));

                    IAttributeDefinition sourceAttribute = assetType.GetAttributeDefinition("Source");
                    if (String.IsNullOrEmpty(_config.V1Configurations.SourceListTypeValue) == false)
                    {
                        asset.SetAttributeValue(sourceAttribute, _config.V1Configurations.SourceListTypeValue);
                    }
                    else
                    {
                        asset.SetAttributeValue(sourceAttribute, GetNewListTypeAssetOIDFromDB(sdr["Source"].ToString()));
                    }

                    IAttributeDefinition priorityAttribute = assetType.GetAttributeDefinition("Priority");
                    asset.SetAttributeValue(priorityAttribute, GetNewListTypeAssetOIDFromDB(sdr["Priority"].ToString()));

                    IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");
                    asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB(sdr["Status"].ToString()));
                    //HACK: For Rally import, needs to be refactored.
                    //asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB("StoryStatus", sdr["Status"].ToString()));

                    IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");
                    asset.SetAttributeValue(categoryAttribute, GetNewListTypeAssetOIDFromDB(sdr["Category"].ToString()));

                    //Themes
                    IAttributeDefinition parentAttribute = assetType.GetAttributeDefinition("Parent");
                    asset.SetAttributeValue(parentAttribute, GetNewAssetOIDFromDB(sdr["Parent"].ToString()));

                    if (String.IsNullOrEmpty(sdr["Requests"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Requests", sdr["Requests"].ToString());
                    }

                    if (String.IsNullOrEmpty(sdr["BlockingIssues"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "BlockingIssues", sdr["BlockingIssues"].ToString());
                        //_logger.Info("Asset is {0}", assetType.DisplayName);
                    }

                    if (String.IsNullOrEmpty(sdr["Issues"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Issues", sdr["Issues"].ToString());
                    }

                    IAttributeDefinition benefitsAttribute = assetType.GetAttributeDefinition("Benefits");
                    asset.SetAttributeValue(benefitsAttribute, sdr["Benefits"].ToString());

                    _dataAPI.Save(asset);


                    if (sdr["AssetState"].ToString() == "Template")
                    {
                        ExecuteOperationInV1("Story.MakeTemplate", asset.Oid);
                    }

                    string newAssetNumber = GetAssetNumberV1("Story", asset.Oid.Momentless.ToString());

                    UpdateAssetRecordWithNumber("Stories", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString(), newAssetNumber, ImportStatuses.IMPORTED, "Story imported.");
                    importCount++;

                    //_logger.Info("Story is {0} and the Count is {1}", newAssetNumber, importCount);
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        string error = ex.Message.Replace("'", ":");
                        UpdateImportStatus("Stories", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, error);
                        //_logger.Info("Story is {0} ", sdr["AssetOID"].ToString());

                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            SetStoryDependencies();
            return(importCount);
        }
Ejemplo n.º 29
0
        public override int Import()
        {
            //HACK: For Rally import.
            //SqlDataReader sdr = GetImportDataFromSproc("spGetAttachmentsForImport");
            SqlDataReader sdr = GetImportDataFromSproc("spGetAttachmentsForRallyImport");

            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    //HACK: For Rally import.
                    //string newAssetOID = GetNewAssetOIDFromDB(sdr["Asset"].ToString());

                    if (String.IsNullOrEmpty(sdr["Asset"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Content"].ToString()) ||
                        String.IsNullOrEmpty(sdr["ContentType"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Filename"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Name"].ToString()) ||
                        String.IsNullOrEmpty(sdr["NewAssetOID"].ToString()))
                    {
                        UpdateImportStatus("Attachments", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Attachment missing required field.");
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("Attachment");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    IAttributeDefinition fullNameAttribute = assetType.GetAttributeDefinition("Name");
                    asset.SetAttributeValue(fullNameAttribute, sdr["Name"].ToString());

                    IAttributeDefinition descAttribute = assetType.GetAttributeDefinition("Description");
                    asset.SetAttributeValue(descAttribute, sdr["Description"].ToString());

                    IAttributeDefinition contentTypeAttribute = assetType.GetAttributeDefinition("ContentType");
                    asset.SetAttributeValue(contentTypeAttribute, sdr["ContentType"].ToString());

                    IAttributeDefinition filenameAttribute = assetType.GetAttributeDefinition("Filename");
                    asset.SetAttributeValue(filenameAttribute, sdr["Filename"].ToString());

                    IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");
                    asset.SetAttributeValue(categoryAttribute, GetNewListTypeAssetOIDFromDB(sdr["Category"].ToString()));

                    IAttributeDefinition assetAttribute = assetType.GetAttributeDefinition("Asset");
                    asset.SetAttributeValue(assetAttribute, sdr["NewAssetOID"].ToString());

                    IAttributeDefinition contentAttribute = assetType.GetAttributeDefinition("Content");
                    asset.SetAttributeValue(contentAttribute, String.Empty);

                    //Save the attachment to get the new AssetOID.
                    _dataAPI.Save(asset);

                    //Now save the binary content of the attachment.
                    UploadAttachmentContent(asset.Oid.Key.ToString(), (byte[])sdr["Content"], sdr["ContentType"].ToString());

                    UpdateNewAssetOIDAndStatus("Attachments", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString(), ImportStatuses.IMPORTED, "Attachment imported.");
                    importCount++;
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        string error = ex.Message.Replace("'", ":");
                        UpdateImportStatus("Attachments", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, error);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            return(importCount);
        }
Ejemplo n.º 30
0
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Attachment");
            Query      query     = new Query(assetType);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition contentAttribute = assetType.GetAttributeDefinition("Content");

            query.Selection.Add(contentAttribute);

            IAttributeDefinition contentTypeAttribute = assetType.GetAttributeDefinition("ContentType");

            query.Selection.Add(contentTypeAttribute);

            IAttributeDefinition fileNameAttribute = assetType.GetAttributeDefinition("Filename");

            query.Selection.Add(fileNameAttribute);

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");

            query.Selection.Add(categoryAttribute);

            IAttributeDefinition assetAttribute = assetType.GetAttributeDefinition("Asset");

            query.Selection.Add(assetAttribute);

            string SQL = BuildAttachmentInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@Content", GetAttachmentValue(asset.Oid.Key.ToString()));
                        cmd.Parameters.AddWithValue("@ContentType", GetScalerValue(asset.GetAttribute(contentTypeAttribute)));
                        cmd.Parameters.AddWithValue("@FileName", GetScalerValue(asset.GetAttribute(fileNameAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Category", GetSingleRelationValue(asset.GetAttribute(categoryAttribute)));
                        cmd.Parameters.AddWithValue("@Asset", GetSingleRelationValue(asset.GetAttribute(assetAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            return(assetCounter);
        }
Ejemplo n.º 31
0
 public void RemoveAttributeValue(IAttributeDefinition attribdef, object value)
 {
     EnsureAttribute(attribdef).RemoveValue(value);
 }
        public void CanParseGuidAttributeDefinitionType()
        {
            IAttributeDefinition def = Meta.GetAttributeDefinition("Publication.Payload");

            Assert.AreEqual(AttributeType.Guid, def.AttributeType);
        }
 public bool TryGetAttributeDefinition(string token, out IAttributeDefinition def)
 {
     def = null;
     try { def = LookupAttributeDefinition(token); } catch (Exception) { }
     return(def != null);
 }
 public Term(IAttributeDefinition attribdef, Order order)
 {
     AttributeDefinition = attribdef;
     Order = order;
 }
Ejemplo n.º 35
0
        public override int Import()
        {
            string customV1IDFieldName = GetV1IDCustomFieldName("Task");

            //SqlDataReader sdr = GetImportDataFromSproc("spGetTasksForImport");
            SqlDataReader sdr = GetImportDataFromDBTableWithOrder("Tasks");

            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    //CHECK DATA: Task must have a name.
                    if (String.IsNullOrEmpty(sdr["Name"].ToString()))
                    {
                        UpdateImportStatus("Tasks", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Task name attribute is required.");
                        continue;
                    }

                    //CHECK DATA: Task must have a parent.
                    if (String.IsNullOrEmpty(sdr["Parent"].ToString()))
                    {
                        UpdateImportStatus("Tasks", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Task parent attribute is required.");
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("Task");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    if (String.IsNullOrEmpty(customV1IDFieldName) == false)
                    {
                        IAttributeDefinition customV1IDAttribute = assetType.GetAttributeDefinition(customV1IDFieldName);
                        asset.SetAttributeValue(customV1IDAttribute, sdr["AssetNumber"].ToString());
                    }

                    IAttributeDefinition fullNameAttribute = assetType.GetAttributeDefinition("Name");
                    asset.SetAttributeValue(fullNameAttribute, AddV1IDToTitle(sdr["Name"].ToString(), sdr["AssetNumber"].ToString()));

                    IAttributeDefinition descAttribute = assetType.GetAttributeDefinition("Description");
                    asset.SetAttributeValue(descAttribute, sdr["Description"].ToString());

                    //if (String.IsNullOrEmpty(sdr["Customer"].ToString()) == false)
                    //{
                    //    IAttributeDefinition customerAttribute = assetType.GetAttributeDefinition("Customer");
                    //    asset.SetAttributeValue(customerAttribute, GetNewAssetOIDFromDB(sdr["Customer"].ToString()));
                    //}

                    if (String.IsNullOrEmpty(sdr["Owners"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Members", "Owners", sdr["Owners"].ToString());
                    }

                    if (String.IsNullOrEmpty(sdr["Goals"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Goals", sdr["Goals"].ToString());
                    }

                    IAttributeDefinition referenceAttribute = assetType.GetAttributeDefinition("Reference");
                    asset.SetAttributeValue(referenceAttribute, sdr["Reference"].ToString());

                    IAttributeDefinition detailEstimateAttribute = assetType.GetAttributeDefinition("DetailEstimate");
                    asset.SetAttributeValue(detailEstimateAttribute, sdr["DetailEstimate"].ToString());

                    IAttributeDefinition toDoAttribute = assetType.GetAttributeDefinition("ToDo");
                    asset.SetAttributeValue(toDoAttribute, sdr["ToDo"].ToString());

                    IAttributeDefinition estimateAttribute = assetType.GetAttributeDefinition("Estimate");
                    asset.SetAttributeValue(estimateAttribute, sdr["Estimate"].ToString());

                    IAttributeDefinition lastVersionAttribute = assetType.GetAttributeDefinition("LastVersion");
                    asset.SetAttributeValue(lastVersionAttribute, sdr["LastVersion"].ToString());

                    if (String.IsNullOrEmpty(sdr["Category"].ToString()) == false)
                    {
                        IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");
                        asset.SetAttributeValue(categoryAttribute, GetNewListTypeAssetOIDFromDB(sdr["Category"].ToString()));
                    }

                    IAttributeDefinition sourceAttribute = assetType.GetAttributeDefinition("Source");
                    asset.SetAttributeValue(sourceAttribute, GetNewListTypeAssetOIDFromDB(sdr["Source"].ToString()));

                    if (String.IsNullOrEmpty(sdr["Status"].ToString()) == false)
                    {
                        IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");
                        asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB(sdr["Status"].ToString()));
                        //HACK: For Rally import, needs to be refactored.
                        //asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB("TaskStatus", sdr["Status"].ToString()));
                    }

                    //HACK: For Rally import, needs to be refactored.
                    IAttributeDefinition parentAttribute = assetType.GetAttributeDefinition("Parent");
                    if (String.IsNullOrEmpty(sdr["ParentType"].ToString()) == true)
                    {
                        asset.SetAttributeValue(parentAttribute, GetNewAssetOIDFromDB(sdr["Parent"].ToString()));
                    }
                    else
                    {
                        string newAssetOID = null;
                        if (sdr["ParentType"].ToString() == "Story")
                        {
                            newAssetOID = GetNewAssetOIDFromDB(sdr["Parent"].ToString(), "Stories");
                            if (String.IsNullOrEmpty(newAssetOID) == false)
                            {
                                asset.SetAttributeValue(parentAttribute, newAssetOID);
                            }
                            else
                            {
                                newAssetOID = GetNewAssetOIDFromDB(sdr["Parent"].ToString(), "Epics");
                                if (String.IsNullOrEmpty(newAssetOID) == false)
                                {
                                    asset.SetAttributeValue(parentAttribute, newAssetOID);
                                }
                                else
                                {
                                    throw new Exception("Import failed. Parent could not be found.");
                                }
                            }
                        }
                        else
                        {
                            newAssetOID = GetNewAssetOIDFromDB(sdr["Parent"].ToString(), "Defects");
                            if (String.IsNullOrEmpty(newAssetOID) == false)
                            {
                                asset.SetAttributeValue(parentAttribute, GetNewAssetOIDFromDB(sdr["Parent"].ToString(), "Defects"));
                            }
                            else
                            {
                                throw new Exception("Import failed. Parent defect could not be found.");
                            }
                        }
                    }

                    _dataAPI.Save(asset);
                    string newAssetNumber = GetAssetNumberV1("Task", asset.Oid.Momentless.ToString());
                    UpdateAssetRecordWithNumber("Tasks", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString(), newAssetNumber, ImportStatuses.IMPORTED, "Task imported.");
                    importCount++;
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        string error = ex.Message.Replace("'", ":");
                        UpdateImportStatus("Tasks", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, error);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            return(importCount);
        }
 private void SaveAttributeDefinition(IAttributeDefinition attribdef)
 {
     _map[attribdef.Token] = attribdef;
 }
 /// <summary>
 /// Check whether the provided attribute is required in current VersionOne server setup.
 /// </summary>
 /// <param name="definition"></param>
 /// <returns></returns>
 public bool IsRequired(IAttributeDefinition definition)
 {
     GetRequiredFields(definition.AssetType);
     return IsRequiredField(definition.AssetType, definition.Name);
 }
 public bool RunIsVisible(IAttributeDefinition item)
 {
     return(base.IsVisible(item));
 }
Ejemplo n.º 39
0
        public override FuncParameter ExecFunc(IAttributeDefinition myAttributeDefinition,
                                               Object myCallingObject,
                                               IVertex myStartVertex,
                                               IGraphDB myGraphDB,
                                               SecurityToken mySecurityToken,
                                               Int64 myTransactionToken,
                                               params FuncParameter[] myParams)
        {
            #region initialization
            if (myStartVertex == null)
            {
                throw new InvalidFunctionParameterException("StartVertex", "Vertex that represents the start vertex", "null");
            }



            //set the start node
            var currentVertex = myStartVertex;

            if ((myParams[0].Value as IEnumerable <IVertex>).First() == null)
            {
                throw new InvalidFunctionParameterException("EndVertex", "Set of vertices that represents the target vertices", "null");
            }

            //set the target node
            var endVertex = (myParams[0].Value as IEnumerable <IVertex>).First();


            //set the maximum depth



            if (myAttributeDefinition == null)
            {
                throw new InvalidFunctionParameterException("EdgeType ", "Edge type not found", "faild");
            }

            UInt64 maxDepth = Convert.ToUInt64(myParams[1].Value);

            if (maxDepth < 1)
            {
                throw new InvalidFunctionParameterException("MaxDepth", "Max depth to low", maxDepth.ToString());
            }

            var myType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new sones.GraphDB.Request.RequestGetVertexType(myAttributeDefinition.RelatedType.Name),
                (statistics, type) => type);

            var myEdgeType = myAttributeDefinition.ID;


            var hasProperty = myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name).InnerEdgeType.HasProperty("Weight");


            long myPropertyID = 0;

            if (hasProperty == true)
            {
                myPropertyID = myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name).InnerEdgeType.GetPropertyDefinition("Weight").ID;
            }

            Dictionary <IOutgoingEdgeDefinition, Tuple <bool, long> > edgeTypeID = new Dictionary <IOutgoingEdgeDefinition, Tuple <bool, long> >();

            var edgeType = myParams[2].Value.ToString();


            if (edgeType == "")
            {
                edgeTypeID.Add(myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name), Tuple.Create(hasProperty, myPropertyID));
            }
            else
            {
                if (edgeType.Contains("all edgeType"))
                {
                    edgeTypeID = this.AllEdgeWithTargetVertex(myType);
                }
                else
                {
                    edgeTypeID = this.StringParser(edgeType, myType);
                    if (!edgeTypeID.ContainsKey(myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name)))
                    {
                        edgeTypeID.Add(myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name), Tuple.Create(hasProperty, myPropertyID));
                    }
                }
            }



            List <UInt64> depthBuffer = new List <UInt64>();

            List <Tuple <ISingleEdge, IOutgoingEdgeDefinition> > edgeBuffer = new List <Tuple <ISingleEdge, IOutgoingEdgeDefinition> >();

            List <double>  distanceBuffer = new List <double>();
            List <IVertex> VertexBuffer   = new List <IVertex>();



            BufferDijkstra buf   = new BufferDijkstra();
            DataDijkstra   lists = new DataDijkstra();



            buf.Add(myStartVertex, 0, 0);
            lists.Add(currentVertex, 0, 0, null, null, currentVertex);



            bool endVertexFlag = false;

            #endregion
            #region Dijkstra algorithm



            double currentVertexDistance = 0;
            ulong  currentVertexDepth    = 0;

            double endVertexDistance = 0;
            ulong  endvertexDepth    = 0;

            Stopwatch clock = new Stopwatch();
            clock.Start();

            while (buf.Count != 0)
            {
                if (currentVertexDepth < maxDepth)
                {
                    List <Tuple <ISingleEdge, IOutgoingEdgeDefinition> > AllsingleEdge = new List <Tuple <ISingleEdge, IOutgoingEdgeDefinition> >();
                    foreach (IOutgoingEdgeDefinition id in edgeTypeID.Keys)
                    {
                        var hyperEdge = currentVertex.GetOutgoingHyperEdge(id.ID);

                        if (hyperEdge != null)
                        {
                            var singleEdge = hyperEdge.GetAllEdges();
                            foreach (ISingleEdge value in singleEdge)
                            {
                                AllsingleEdge.Add(Tuple.Create(value, id));
                            }
                        }
                    }



                    if (AllsingleEdge != null)
                    {
                        for (int iCount = 0; iCount < AllsingleEdge.Count(); iCount++)
                        {
                            var elementSingleEdge = AllsingleEdge.ElementAt(iCount);
                            var TargetVertex      = elementSingleEdge.Item1.GetTargetVertex();



                            double current_distance = 0;

                            if (edgeTypeID[elementSingleEdge.Item2].Item1 == true)
                            {
                                current_distance = Math.Abs(AllsingleEdge.ElementAt(iCount).Item1.GetProperty <double>(edgeTypeID[elementSingleEdge.Item2].Item2));
                            }
                            else
                            {
                                current_distance = 1;
                            }


                            var current_singleEdge = AllsingleEdge.ElementAt(iCount).Item1;

                            var TargetVertexID = lists.GetElement(TargetVertex.VertexID);

                            if (TargetVertexID == null)
                            {
                                if (!endVertexFlag)
                                {
                                    buf.Add(TargetVertex,
                                            current_distance + currentVertexDistance,
                                            currentVertexDepth + 1);



                                    lists.Add(TargetVertex,
                                              current_distance + currentVertexDistance,
                                              currentVertexDepth + 1,
                                              current_singleEdge,
                                              elementSingleEdge.Item2,
                                              currentVertex);
                                }
                                else
                                if (endVertexDistance > currentVertexDistance + current_distance ||
                                    (endVertexDistance == currentVertexDistance + current_distance &&
                                     endvertexDepth > currentVertexDepth + 1))
                                {
                                    buf.Add(TargetVertex,
                                            current_distance + currentVertexDistance,
                                            currentVertexDepth + 1);


                                    lists.Add(TargetVertex,
                                              current_distance + currentVertexDistance,
                                              currentVertexDepth + 1,
                                              current_singleEdge,
                                              elementSingleEdge.Item2,
                                              currentVertex);
                                }
                            }

                            else
                            {
                                if (currentVertexDistance + current_distance < TargetVertexID.Item2)
                                {
                                    if (!endVertexFlag)
                                    {
                                        buf.Set(TargetVertexID.Item2, TargetVertex,
                                                current_distance + currentVertexDistance,
                                                currentVertexDepth + 1);

                                        lists.Set(TargetVertex,
                                                  current_distance + currentVertexDistance,
                                                  currentVertexDepth + 1,
                                                  current_singleEdge,
                                                  elementSingleEdge.Item2,
                                                  currentVertex);
                                    }

                                    else
                                    if (endVertexDistance > currentVertexDistance + current_distance ||
                                        (endVertexDistance == currentVertexDistance + current_distance &&
                                         endvertexDepth > currentVertexDepth + 1))
                                    {
                                        buf.Set(TargetVertexID.Item2, TargetVertex,
                                                current_distance + currentVertexDistance,
                                                currentVertexDepth + 1);

                                        lists.Set(TargetVertex,
                                                  current_distance + currentVertexDistance,
                                                  currentVertexDepth + 1,
                                                  current_singleEdge,
                                                  elementSingleEdge.Item2,
                                                  currentVertex);
                                    }
                                }
                                else if (currentVertexDistance + current_distance == TargetVertexID.Item2 && currentVertexDepth + 1 < TargetVertexID.Item3)
                                {
                                    if (!endVertexFlag)
                                    {
                                        buf.Set(TargetVertexID.Item2, TargetVertex,
                                                current_distance + currentVertexDistance,
                                                currentVertexDepth + 1);

                                        lists.Set(TargetVertex,
                                                  current_distance + currentVertexDistance,
                                                  currentVertexDepth + 1,
                                                  current_singleEdge,
                                                  elementSingleEdge.Item2,
                                                  currentVertex);
                                    }
                                    else
                                    if (endVertexDistance > currentVertexDistance + current_distance ||
                                        (endVertexDistance == currentVertexDistance + current_distance &&
                                         endvertexDepth > currentVertexDepth + 1))
                                    {
                                        buf.Set(TargetVertexID.Item2, TargetVertex,
                                                current_distance + currentVertexDistance,
                                                currentVertexDepth + 1);

                                        lists.Set(TargetVertex,
                                                  current_distance + currentVertexDistance,
                                                  currentVertexDepth + 1,
                                                  current_singleEdge,
                                                  elementSingleEdge.Item2,
                                                  currentVertex);
                                    }
                                }
                            }


                            if (TargetVertex == endVertex)
                            {
                                endVertexFlag = true;
                                var endNode = lists.GetElement(endVertex.VertexID);
                                endVertexDistance = endNode.Item2;
                                endvertexDepth    = endNode.Item3;
                            }
                        }
                    }
                }
                //delate from Buffer current Vertex or all
                if (currentVertex == endVertex)
                {
                    buf.Clear();
                }
                else
                {
                    buf.Remove(currentVertexDistance, currentVertex.VertexID);
                }

                //Minimum distance from Buffer
                if (buf.Count != 0)
                {
                    var minVertex = buf.Min();
                    currentVertex         = minVertex.Item1;
                    currentVertexDistance = minVertex.Item2;
                    currentVertexDepth    = minVertex.Item3;
                }
            }
            #endregion

            clock.Stop();


            #region create output

            edgeBuffer.Add(null);
            currentVertex = endVertex;
            while (currentVertex != myStartVertex)
            {
                var current_tuple = lists.GetElement(currentVertex.VertexID);

                if (current_tuple == null)
                {
                    throw new InvalidFunctionParameterException("MaxDepth", "Max depth to low or end node is not with start node connected, find't end node", maxDepth);
                }

                VertexBuffer.Add(currentVertex);


                distanceBuffer.Add(current_tuple.Item2);
                depthBuffer.Add(current_tuple.Item3);
                edgeBuffer.Add(current_tuple.Item4);
                currentVertex = current_tuple.Item5;
            }
            depthBuffer.Add(0);
            distanceBuffer.Add(0);
            VertexBuffer.Add(myStartVertex);

            edgeBuffer.Add(null);



            var path = CreateVertexView(myPropertyID, VertexBuffer, distanceBuffer, edgeBuffer, depthBuffer);

            #endregion

            distanceBuffer = null;
            VertexBuffer   = null;
            edgeBuffer     = null;
            depthBuffer    = null;
            buf.Clear();
            lists.Clear();
            buf   = null;
            lists = null;


            return(new FuncParameter(path));
        }
Ejemplo n.º 40
0
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Goal");
            Query      query     = new Query(assetType);

            IAttributeDefinition assetStateAttribute = assetType.GetAttributeDefinition("AssetState");

            query.Selection.Add(assetStateAttribute);

            IAttributeDefinition assetNumberAttribute = assetType.GetAttributeDefinition("Number");

            query.Selection.Add(assetNumberAttribute);

            IAttributeDefinition targetedByAttribute = assetType.GetAttributeDefinition("TargetedBy.ID");

            query.Selection.Add(targetedByAttribute);

            IAttributeDefinition scopeAttribute = assetType.GetAttributeDefinition("Scope");

            query.Selection.Add(scopeAttribute);

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition priorityAttribute = assetType.GetAttributeDefinition("Priority");

            query.Selection.Add(priorityAttribute);

            IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");

            query.Selection.Add(categoryAttribute);

            //Filter on parent scope.
            IAttributeDefinition parentScopeAttribute = assetType.GetAttributeDefinition("Scope.ParentMeAndUp");
            FilterTerm           term = new FilterTerm(parentScopeAttribute);

            term.Equal(_config.V1SourceConnection.Project);
            query.Filter = term;

            string SQL = BuildGoalInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@AssetState", GetScalerValue(asset.GetAttribute(assetStateAttribute)));
                        cmd.Parameters.AddWithValue("@AssetNumber", GetScalerValue(asset.GetAttribute(assetNumberAttribute)));
                        cmd.Parameters.AddWithValue("@TargetedBy", GetMultiRelationValues(asset.GetAttribute(targetedByAttribute)));
                        cmd.Parameters.AddWithValue("@Scope", GetSingleRelationValue(asset.GetAttribute(scopeAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@Priority", GetSingleRelationValue(asset.GetAttribute(priorityAttribute)));
                        cmd.Parameters.AddWithValue("@Category", GetSingleRelationValue(asset.GetAttribute(categoryAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            return(assetCounter);
        }
Ejemplo n.º 41
0
        /// <summary>
        /// Algorithm Dijkstra for find all shortest path from start Vertex to all others Vertices
        /// </summary>
        /// <param name="myAttributeDefinition"></param>
        /// <param name="myCallingObject"></param>
        /// <param name="myStartVertex"></param>
        /// <param name="myGraphDB"></param>
        /// <param name="maxDepth"></param>
        /// <param name="mySecurityToken"></param>
        /// <param name="myTransactionToken"></param>
        /// <returns></returns>
        private Tuple <IVertex, DataDijkstra> FindShortPathToAll(IAttributeDefinition myAttributeDefinition,
                                                                 Object myCallingObject,
                                                                 IVertex myStartVertex,
                                                                 IGraphDB myGraphDB,
                                                                 UInt64 maxDepth,
                                                                 SecurityToken mySecurityToken,
                                                                 Int64 myTransactionToken)
        {
            if (myStartVertex == null)
            {
                throw new InvalidFunctionParameterException("StartVertex", "Vertex that represents the start vertex", "null");
            }

            //set the start node
            var currentVertex = myStartVertex;

            var myType = myGraphDB.GetVertexType <IVertexType>(mySecurityToken,
                                                               myTransactionToken,
                                                               new sones.GraphDB.Request.RequestGetVertexType(myAttributeDefinition.RelatedType.Name),
                                                               (statistics, type) => type);

            var myEdgeType = myAttributeDefinition.ID;


            var hasProperty = myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name).InnerEdgeType.HasProperty("Weight");


            long myPropertyID = 0;

            if (hasProperty == true)
            {
                myPropertyID = myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name).InnerEdgeType.GetPropertyDefinition("Weight").ID;
            }

            var edgeTypeDifinition = myType.GetOutgoingEdgeDefinition(myAttributeDefinition.Name);

            DataDijkstra   lists  = new DataDijkstra();
            BufferDijkstra buffer = new BufferDijkstra();


            buffer.Add(myStartVertex, 0, 0);
            lists.Add(currentVertex, 0, 0, null, null, currentVertex);


            double currentVertexDistance = 0;
            ulong  currentVertexDepth    = 0;


            while (buffer.Count != 0)
            {
                if (currentVertexDepth < maxDepth)
                {
                    var hyperEdge = currentVertex.GetOutgoingHyperEdge(myEdgeType);

                    if (hyperEdge != null)
                    {
                        var singleEdge = hyperEdge.GetAllEdges();


                        for (int iCount = 0; iCount < singleEdge.Count(); iCount++)
                        {
                            var TargetVertex = singleEdge.ElementAt(iCount).GetTargetVertex();


                            double current_distance;

                            if (hasProperty == true)
                            {
                                current_distance = Math.Abs(singleEdge.ElementAt(iCount).GetProperty <double>(myPropertyID));
                            }
                            else
                            {
                                current_distance = 1;
                            }

                            var current_singleEdge = singleEdge.ElementAt(iCount);

                            var TargetVertexID = lists.GetElement(TargetVertex.VertexID);

                            if (TargetVertexID == null)
                            {
                                buffer.Add(TargetVertex,
                                           current_distance + currentVertexDistance,
                                           currentVertexDepth + 1);



                                lists.Add(TargetVertex,
                                          current_distance + currentVertexDistance,
                                          currentVertexDepth + 1,
                                          current_singleEdge,
                                          edgeTypeDifinition,
                                          currentVertex);
                            }
                            else
                            {
                                if (currentVertexDistance + current_distance < TargetVertexID.Item2)
                                {
                                    buffer.Set(TargetVertexID.Item2, TargetVertex,
                                               current_distance + currentVertexDistance,
                                               currentVertexDepth + 1);

                                    lists.Set(TargetVertex,
                                              current_distance + currentVertexDistance,
                                              currentVertexDepth + 1,
                                              current_singleEdge,
                                              edgeTypeDifinition,
                                              currentVertex);
                                }
                                else
                                if (currentVertexDistance + current_distance == TargetVertexID.Item2 && currentVertexDepth + 1 < TargetVertexID.Item3)
                                {
                                    buffer.Set(TargetVertexID.Item2, TargetVertex,
                                               current_distance + currentVertexDistance,
                                               currentVertexDepth + 1);

                                    lists.Set(TargetVertex,
                                              current_distance + currentVertexDistance,
                                              currentVertexDepth + 1,
                                              current_singleEdge,
                                              edgeTypeDifinition,
                                              currentVertex);
                                }
                            }
                        }
                        //delate from Buffer Vertex and any information
                    }
                }

                buffer.Remove(currentVertexDistance, currentVertex.VertexID);



                //Minimum in distance from Buffer
                if (buffer.Count != 0)
                {
                    var minVertex = buffer.Min();
                    currentVertex         = minVertex.Item1;
                    currentVertexDistance = minVertex.Item2;
                    currentVertexDepth    = minVertex.Item3;
                }
            }
            var result = Tuple.Create(myStartVertex, lists);

            buffer.Clear();
            lists.Clear();
            buffer = null;
            lists  = null;

            return(result);
        }
Ejemplo n.º 42
0
        public override int Import()
        {
            //SqlDataReader sdr = GetImportDataFromSproc("spGetConversationsForImport");
            SqlDataReader sdr = GetImportDataFromDBTable("Conversations");

            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    //CHECK DATA: Conversation must have an author.
                    if (_config.V1Configurations.MigrateUnauthoredConversationsAsAdmin == false && String.IsNullOrEmpty(sdr["Author"].ToString()))
                    {
                        UpdateImportStatus("Conversations", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Conversation author attribute is required.");
                        continue;
                    }

                    if (string.IsNullOrEmpty(sdr["NewAssetOID"].ToString()) == false)
                    {
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("Expression");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    IAttributeDefinition authoredAtAttribute = assetType.GetAttributeDefinition("AuthoredAt");
                    asset.SetAttributeValue(authoredAtAttribute, sdr["AuthoredAt"].ToString());

                    IAttributeDefinition contentAttribute = assetType.GetAttributeDefinition("Content");
                    asset.SetAttributeValue(contentAttribute, sdr["Content"].ToString());

                    IAttributeDefinition authorAttribute = assetType.GetAttributeDefinition("Author");
                    if (_config.V1Configurations.MigrateUnauthoredConversationsAsAdmin == true && String.IsNullOrEmpty(sdr["Author"].ToString()))
                    {
                        asset.SetAttributeValue(authorAttribute, "Member:20");
                    }
                    else
                    {
                        //asset.SetAttributeValue(authorAttribute, GetNewAssetOIDFromDB(sdr["Author"].ToString(), "Members"));
                        asset.SetAttributeValue(authorAttribute, "Member:20");
                    }

                    System.Diagnostics.Trace.WriteLine(asset.GetAttribute(authoredAtAttribute).ToString());
                    System.Diagnostics.Trace.WriteLine(asset.GetAttribute(contentAttribute).ToString());
                    System.Diagnostics.Trace.WriteLine(asset.GetAttribute(authorAttribute).ToString());
                    ////In Versions < 12, there are different names for fields
                    //if (string.IsNullOrEmpty(sdr["BaseAssets"].ToString()) == false)
                    //{
                    //    //Mentions held Members, Base Assets held any Assets.  12 and Later They are all together in Mentions
                    //    string mentionValue = string.Empty;
                    //    if (string.IsNullOrEmpty(sdr["Mentions"].ToString()) == false)
                    //    {
                    //        mentionValue = sdr["Mentions"].ToString() + ";";
                    //    }

                    //    AddMultiValueRelation(assetType, asset, "Mentions", mentionValue + sdr["BaseAssets"].ToString());

                    //}
                    //else if (string.IsNullOrEmpty(sdr["Mentions"].ToString()) == false)
                    //{
                    //    AddMultiValueRelation(assetType, asset, "Mentions", sdr["Mentions"].ToString());

                    //}


                    //NOTE: Need to switch on V1 version. Right now handles 11.3 to 11.4+. Used to be BaseAssets, is now Mentions.
                    //HACK: Modified to support Rally migration, needs refactoring.
                    //if (String.IsNullOrEmpty(sdr["BaseAssets"].ToString()) == false)
                    //{
                    //    AddMultiValueRelation(assetType, asset, "Mentions", sdr["BaseAssets"].ToString());
                    //    //AddRallyMentionsValue(assetType, asset, sdr["BaseAssetType"].ToString(), sdr["Mentions"].ToString());
                    //}

                    _dataAPI.Save(asset);

                    UpdateNewAssetOIDInDB("Conversations", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString());
                    UpdateImportStatus("Conversations", sdr["AssetOID"].ToString(), ImportStatuses.IMPORTED, "Conversation imported.");
                    importCount++;
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        UpdateImportStatus("Conversations", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, ex.Message);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            SetConversationDependencies();
            return(importCount);
        }
        public void CoerceAssetStateNull()
        {
            IAttributeDefinition def = Meta.GetAttributeDefinition("Story.AssetState");

            Assert.IsNull(def.Coerce(null));
        }
 public void MinorSort(IAttributeDefinition attribdef, Order order)
 {
     Remove(attribdef);
     _terms.Add(new Term(attribdef, order));
 }
Ejemplo n.º 45
0
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Timebox");
            Query      query     = new Query(assetType);

            IAttributeDefinition assetStateAttribute = assetType.GetAttributeDefinition("AssetState");

            query.Selection.Add(assetStateAttribute);

            IAttributeDefinition ownerAttribute = assetType.GetAttributeDefinition("Owner");

            query.Selection.Add(ownerAttribute);

            IAttributeDefinition scheduleAttribute = assetType.GetAttributeDefinition("Schedule");

            query.Selection.Add(scheduleAttribute);

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition targetEstimateAttribute = assetType.GetAttributeDefinition("TargetEstimate");

            query.Selection.Add(targetEstimateAttribute);

            IAttributeDefinition endDateAttribute = assetType.GetAttributeDefinition("EndDate");

            query.Selection.Add(endDateAttribute);

            IAttributeDefinition beginDateAttribute = assetType.GetAttributeDefinition("BeginDate");

            query.Selection.Add(beginDateAttribute);

            IAttributeDefinition stateAttribute = assetType.GetAttributeDefinition("State");

            query.Selection.Add(stateAttribute);

            string SQL = BuildIterationInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@AssetState", GetScalerValue(asset.GetAttribute(assetStateAttribute)));
                        cmd.Parameters.AddWithValue("@Owner", GetSingleRelationValue(asset.GetAttribute(ownerAttribute)));
                        cmd.Parameters.AddWithValue("@Schedule", GetSingleRelationValue(asset.GetAttribute(scheduleAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@TargetEstimate", GetScalerValue(asset.GetAttribute(targetEstimateAttribute)));
                        cmd.Parameters.AddWithValue("@EndDate", GetScalerValue(asset.GetAttribute(endDateAttribute)));
                        cmd.Parameters.AddWithValue("@BeginDate", GetScalerValue(asset.GetAttribute(beginDateAttribute)));
                        cmd.Parameters.AddWithValue("@State", GetStateRelationValue(asset.GetAttribute(stateAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            return(assetCounter);
        }
 public void MajorSort(IAttributeDefinition attribdef, Order order)
 {
     Remove(attribdef);
     _terms.Insert(0, new Term(attribdef, order));
 }
Ejemplo n.º 47
0
 public bool Equals(IAttributeDefinition myOther)
 {
     return(myOther != null &&
            myOther.ID == ID);
 }
Ejemplo n.º 48
0
        public void CreateDefect(V1Connector CurrentV1Connection, List <Message> CurrentEmails)
        {
            V1XMLHelper  V1XML        = new V1XMLHelper();
            V1Logging    Logs         = new V1Logging();
            string       ProjectScope = "Something for Testing";
            string       EmailBody;
            MessagePart  MessageParts;
            SMTPResponse V1Response = new SMTPResponse();
            MailChecker  MailCheck  = new MailChecker();

            IServices services = new Services(CurrentV1Connection);


            try
            {
                foreach (Message MailItem in CurrentEmails)
                {
                    for (int ToCtr = 0; ToCtr < MailItem.Headers.To.Count; ToCtr++)
                    {
                        ProjectScope = V1XML.GetProjectScope(MailItem.Headers.To[ToCtr].Address);
                        if (ProjectScope != null)
                        {
                            Oid                  projectId     = services.GetOid(ProjectScope);
                            IAssetType           defectType    = services.Meta.GetAssetType("Defect");
                            Asset                NewDefect     = services.New(defectType, projectId);
                            IAttributeDefinition nameAttribute = defectType.GetAttributeDefinition("Name");
                            NewDefect.SetAttributeValue(nameAttribute, MailItem.Headers.Subject.ToString());

                            MessageParts = MailItem.FindFirstHtmlVersion();
                            if (MessageParts == null)
                            {
                                MessageParts = MailItem.FindFirstPlainTextVersion();
                            }
                            EmailBody = MessageParts.GetBodyAsText();

                            Logs.LogEvent("Operation - Creating Defect for " + MailItem.Headers.To[ToCtr].Address);

                            IAttributeDefinition descriptionAttribute = defectType.GetAttributeDefinition("Description");
                            NewDefect.SetAttributeValue(descriptionAttribute, EmailBody);
                            IAttributeDefinition FoundByAttribute = defectType.GetAttributeDefinition("FoundBy");
                            NewDefect.SetAttributeValue(FoundByAttribute, MailItem.Headers.From.ToString());
                            services.Save(NewDefect);

                            IAttributeDefinition DefectIDAttribute = defectType.GetAttributeDefinition("Number");
                            Query IDQuery = new Query(NewDefect.Oid);
                            IDQuery.Selection.Add(DefectIDAttribute);
                            QueryResult ResultID = services.Retrieve(IDQuery);
                            Asset       defect   = ResultID.Assets[0];

                            //NewDefect.GetAttribute(DefectIDAttribute).Value
                            Logs.LogEvent("Operation - Sending Response to Defect Sender.");
                            //Commented out the Response back to the Sender per John Waedekin
                            //V1Response.SendResponse(MailItem, defect.GetAttribute(DefectIDAttribute).Value + " " + NewDefect.GetAttribute(nameAttribute).Value, ProjectScope);
                            MailCheck.DeleteMessagesOnServer(MailItem, ProjectScope);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logs.LogEvent("ERROR - Creating Defect - " + ex.InnerException.Message);
            }
        }
Ejemplo n.º 49
0
        private static void ProcessStructuredProperty(GQLPluginManager myPluginManager,
                                                      IGraphDB myGraphDB,
                                                      SecurityToken mySecurityToken,
                                                      Int64 myTransactionToken,
                                                      IVertexType vertexType,
                                                      AAttributeAssignOrUpdate aAttributeDefinition,
                                                      ref RequestInsertVertex result)
        {
            #region AttributeAssignOrUpdateValue

            if (aAttributeDefinition is AttributeAssignOrUpdateValue)
            {
                var value = aAttributeDefinition as AttributeAssignOrUpdateValue;

                result.AddUnknownProperty(value.AttributeIDChain.ContentString, value.Value);

                return;
            }

            #endregion

            #region AttributeAssignOrUpdateList

            if (aAttributeDefinition is AttributeAssignOrUpdateList)
            {
                var value = aAttributeDefinition as AttributeAssignOrUpdateList;

                switch (value.CollectionDefinition.CollectionType)
                {
                case CollectionType.Set:

                    #region set

                    if (!vertexType.HasAttribute(aAttributeDefinition.AttributeIDChain.ContentString))
                    {
                        throw new InvalidVertexAttributeException(String.Format("The vertex type {0} has no attribute named {1}.",
                                                                                vertexType.Name,
                                                                                aAttributeDefinition.AttributeIDChain.ContentString));
                    }

                    IAttributeDefinition attribute = vertexType.GetAttributeDefinition(aAttributeDefinition
                                                                                       .AttributeIDChain
                                                                                       .ContentString);

                    EdgePredefinition edgeDefinition = new EdgePredefinition(value.AttributeIDChain.ContentString);

                    foreach (var aTupleElement in (TupleDefinition)value.CollectionDefinition.TupleDefinition)
                    {
                        if (aTupleElement.Value is BinaryExpressionDefinition)
                        {
                            #region BinaryExpressionDefinition

                            var targetVertexType = ((IOutgoingEdgeDefinition)attribute).TargetVertexType;

                            foreach (var aVertex in ProcessBinaryExpression(
                                         (BinaryExpressionDefinition)aTupleElement.Value,
                                         myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, targetVertexType))
                            {
                                var inneredge = new EdgePredefinition().AddVertexID(aVertex.VertexTypeID, aVertex.VertexID);

                                foreach (var aStructuredProperty in aTupleElement.Parameters)
                                {
                                    inneredge.AddUnknownProperty(aStructuredProperty.Key, aStructuredProperty.Value);
                                }

                                edgeDefinition.AddEdge(inneredge);
                            }

                            #endregion
                        }
                        else
                        {
                            throw new NotImplementedQLException("TODO");
                        }
                    }

                    result.AddEdge(edgeDefinition);

                    #endregion )

                    return;

                case CollectionType.List:

                    #region list

                    //has to be list of comparables
                    ListCollectionWrapper listWrapper = new ListCollectionWrapper();

                    Type myRequestedType;
                    if (vertexType.HasProperty(aAttributeDefinition.AttributeIDChain.ContentString))
                    {
                        myRequestedType = ((IPropertyDefinition)vertexType
                                           .GetAttributeDefinition(aAttributeDefinition.AttributeIDChain.ContentString)).BaseType;
                    }
                    else
                    {
                        myRequestedType = typeof(String);
                    }

                    foreach (var aTupleElement in (TupleDefinition)value.CollectionDefinition.TupleDefinition)
                    {
                        listWrapper.Add(((ValueDefinition)aTupleElement.Value).Value.ConvertToIComparable(myRequestedType));
                    }

                    result.AddStructuredProperty(aAttributeDefinition.AttributeIDChain.ContentString, listWrapper);

                    #endregion )

                    return;

                case CollectionType.SetOfUUIDs:

                    #region SetOfUUIDs

                    EdgePredefinition anotheredgeDefinition = new EdgePredefinition(value.AttributeIDChain.ContentString);

                    foreach (var aTupleElement in ((VertexTypeVertexIDCollectionNode)value.CollectionDefinition.TupleDefinition).Elements)
                    {
                        foreach (var aVertexIDTuple in aTupleElement.VertexIDs)
                        {
                            var innerEdge = new EdgePredefinition();

                            foreach (var aStructuredProperty in aVertexIDTuple.Item2)
                            {
                                innerEdge.AddUnknownProperty(aStructuredProperty.Key, aStructuredProperty.Value);
                            }

                            innerEdge.AddVertexID(aTupleElement.ReferencedVertexTypeName, aVertexIDTuple.Item1);

                            anotheredgeDefinition.AddEdge(innerEdge);
                        }
                    }

                    result.AddEdge(anotheredgeDefinition);

                    #endregion

                    return;

                default:
                    return;
                }
            }

            #endregion

            #region SetRefNode

            if (aAttributeDefinition is AttributeAssignOrUpdateSetRef)
            {
                var value = aAttributeDefinition as AttributeAssignOrUpdateSetRef;

                var edgeDefinition = new EdgePredefinition(value.AttributeIDChain.ContentString);

                if (value.SetRefDefinition.IsREFUUID)
                {
                    #region direct vertex ids

                    foreach (var aTupleElement in value.SetRefDefinition.TupleDefinition)
                    {
                        if (aTupleElement.Value is ValueDefinition)
                        {
                            #region ValueDefinition

                            foreach (var aProperty in aTupleElement.Parameters)
                            {
                                edgeDefinition.AddUnknownProperty(aProperty.Key, aProperty.Value);
                            }

                            edgeDefinition.AddVertexID(value.SetRefDefinition.ReferencedVertexType,
                                                       Convert.ToInt64(((ValueDefinition)aTupleElement.Value).Value));

                            #endregion
                        }
                        else
                        {
                            throw new NotImplementedQLException("TODO");
                        }
                    }

                    #endregion
                }
                else
                {
                    #region expression

                    if (!vertexType.HasAttribute(aAttributeDefinition.AttributeIDChain.ContentString))
                    {
                        throw new InvalidVertexAttributeException(String.Format("The vertex type {0} has no attribute named {1}.",
                                                                                vertexType.Name,
                                                                                aAttributeDefinition.AttributeIDChain.ContentString));
                    }
                    IAttributeDefinition attribute = vertexType.GetAttributeDefinition(aAttributeDefinition.AttributeIDChain.ContentString);

                    foreach (var aTupleElement in value.SetRefDefinition.TupleDefinition)
                    {
                        if (aTupleElement.Value is BinaryExpressionDefinition)
                        {
                            #region BinaryExpressionDefinition

                            var targetVertexType = ((IOutgoingEdgeDefinition)attribute).TargetVertexType;

                            var vertexIDs = ProcessBinaryExpression(
                                (BinaryExpressionDefinition)aTupleElement.Value,
                                myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, targetVertexType).ToList();

                            if (vertexIDs.Count > 1)
                            {
                                throw new ReferenceAssignmentExpectedException(String.Format("It is not possible to create a single edge pointing to {0} vertices",
                                                                                             vertexIDs.Count));
                            }

                            var inneredge = new EdgePredefinition();

                            foreach (var aStructuredProperty in aTupleElement.Parameters)
                            {
                                edgeDefinition.AddUnknownProperty(aStructuredProperty.Key, aStructuredProperty.Value);
                            }

                            edgeDefinition.AddVertexID(vertexIDs.FirstOrDefault().VertexTypeID, vertexIDs.FirstOrDefault().VertexID);

                            #endregion
                        }
                        else
                        {
                            throw new NotImplementedQLException("");
                        }
                    }

                    #endregion
                }

                result.AddEdge(edgeDefinition);

                return;
            }

            #endregion
        }
Ejemplo n.º 50
0
        public override int Import()
        {
            SqlDataReader sdr = GetImportDataFromDBTable("Actuals");

            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    if (String.IsNullOrEmpty(sdr["Value"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Date"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Scope"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Member"].ToString()) ||
                        String.IsNullOrEmpty(sdr["Workitem"].ToString()) ||
                        String.IsNullOrEmpty(GetNewAssetOIDFromDB(sdr["Workitem"].ToString())))
                    {
                        UpdateImportStatus("Actuals", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "Actual missing required field.");
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("Actual");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    IAttributeDefinition valueAttribute = assetType.GetAttributeDefinition("Value");
                    asset.SetAttributeValue(valueAttribute, sdr["Value"].ToString());

                    IAttributeDefinition dateAttribute = assetType.GetAttributeDefinition("Date");
                    asset.SetAttributeValue(dateAttribute, sdr["Date"].ToString());

                    IAttributeDefinition timeboxAttribute = assetType.GetAttributeDefinition("Timebox");
                    asset.SetAttributeValue(timeboxAttribute, GetNewAssetOIDFromDB(sdr["Timebox"].ToString()));

                    IAttributeDefinition scopeAttribute = assetType.GetAttributeDefinition("Scope");
                    asset.SetAttributeValue(scopeAttribute, GetNewAssetOIDFromDB(sdr["Scope"].ToString()));

                    IAttributeDefinition memberAttribute = assetType.GetAttributeDefinition("Member");
                    asset.SetAttributeValue(memberAttribute, GetNewAssetOIDFromDB(sdr["Member"].ToString()));

                    IAttributeDefinition workitemAttribute = assetType.GetAttributeDefinition("Workitem");
                    asset.SetAttributeValue(workitemAttribute, GetNewAssetOIDFromDB(sdr["Workitem"].ToString()));

                    IAttributeDefinition teamAttribute = assetType.GetAttributeDefinition("Team");
                    asset.SetAttributeValue(teamAttribute, GetNewAssetOIDFromDB(sdr["Team"].ToString()));

                    _dataAPI.Save(asset);
                    UpdateNewAssetOIDAndStatus("Actuals", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString(), ImportStatuses.IMPORTED, "Actual imported.");
                    importCount++;
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        UpdateImportStatus("Actuals", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, ex.Message);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            return(importCount);
        }
Ejemplo n.º 51
0
 public void AddAttributeValue(IAttributeDefinition attribdef, object value)
 {
     EnsureAttribute(attribdef).AddValue(value);
 }
Ejemplo n.º 52
0
        private static void ParseAttributeNode(Asset asset, IAttributeDefinition attribdef, XmlElement element)
        {
            var type = element.LocalName;

            asset.EnsureAttribute(attribdef);

            if (type == "Relation")
            {
                if (attribdef.IsMultiValue)
                {
                    foreach (XmlElement child in element.ChildNodes)
                    {
                        var add = child.HasAttribute("act") && child.GetAttribute("act") == "add";

                        var token = child.GetAttribute("idref");

                        if (add)
                        {
                            asset.AddAttributeValue(attribdef, token);
                        }
                        else
                        {
                            asset.LoadAttributeValue(attribdef, token);
                        }
                    }
                }
                else
                {
                    var token = Oid.Null.Token;

                    if (element.HasChildNodes)
                    {
                        token = ((XmlElement)element.ChildNodes.Item(0)).GetAttribute("idref");
                    }

                    var force = element.HasAttribute("act") && element.GetAttribute("act") == "set";

                    if (force)
                    {
                        asset.ForceAttributeValue(attribdef, token);
                    }
                    else
                    {
                        asset.LoadAttributeValue(attribdef, token);
                    }
                }
            }
            else
            {
                if (attribdef.IsMultiValue)
                {
                    foreach (XmlElement child in element.ChildNodes)
                    {
                        var add = child.HasAttribute("act") && child.GetAttribute("act") == "add";

                        if (add)
                        {
                            asset.AddAttributeValue(attribdef, child.InnerText);
                        }
                        else
                        {
                            asset.LoadAttributeValue(attribdef, child.InnerText);
                        }
                    }
                }
                else
                {
                    object v = null;

                    if (!string.IsNullOrEmpty(element.InnerText))
                    {
                        v = element.InnerText;
                    }

                    var force = element.HasAttribute("act") && element.GetAttribute("act") == "set";

                    if (force)
                    {
                        asset.ForceAttributeValue(attribdef, v);
                    }
                    else
                    {
                        asset.LoadAttributeValue(attribdef, v);
                    }
                }
            }
        }
Ejemplo n.º 53
0
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Scope");
            Query      query     = new Query(assetType);

            IAttributeDefinition assetStateAttribute = assetType.GetAttributeDefinition("AssetState");

            query.Selection.Add(assetStateAttribute);

            IAttributeDefinition scheduleAttribute = assetType.GetAttributeDefinition("Schedule");

            query.Selection.Add(scheduleAttribute);

            IAttributeDefinition parentAttribute = assetType.GetAttributeDefinition("Parent");

            query.Selection.Add(parentAttribute);

            IAttributeDefinition ownerAttribute = assetType.GetAttributeDefinition("Owner");

            query.Selection.Add(ownerAttribute);

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition endDateAttribute = assetType.GetAttributeDefinition("EndDate");

            query.Selection.Add(endDateAttribute);

            IAttributeDefinition beginDateAttribute = assetType.GetAttributeDefinition("BeginDate");

            query.Selection.Add(beginDateAttribute);

            IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");

            query.Selection.Add(statusAttribute);

            IAttributeDefinition membersAttribute = null;

            if (_config.V1Configurations.MigrateProjectMembership == true)
            {
                membersAttribute = assetType.GetAttributeDefinition("Members.ID");
                query.Selection.Add(membersAttribute);
            }

            IAttributeDefinition schemeAttribute = assetType.GetAttributeDefinition("Scheme");

            query.Selection.Add(schemeAttribute);

            //SPECIAL CASE: Reference attribute only exists in V1 12 and later.
            IAttributeDefinition referenceAttribute = null;

            if (_metaAPI.Version.Major > 11)
            {
                referenceAttribute = assetType.GetAttributeDefinition("Reference");
                query.Selection.Add(referenceAttribute);
            }

            //Filter on parent scope.
            IAttributeDefinition parentScopeAttribute = assetType.GetAttributeDefinition("ParentMeAndUp");
            FilterTerm           term = new FilterTerm(parentScopeAttribute);

            term.Equal(_config.V1SourceConnection.Project);
            query.Filter = term;

            string SQL = BuildProjectInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                _logger.Info("assetTotal is {0} ", assetTotal);

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@AssetState", GetScalerValue(asset.GetAttribute(assetStateAttribute)));
                        cmd.Parameters.AddWithValue("@Schedule", GetSingleRelationValue(asset.GetAttribute(scheduleAttribute)));
                        cmd.Parameters.AddWithValue("@Parent", GetSingleRelationValue(asset.GetAttribute(parentAttribute)));
                        cmd.Parameters.AddWithValue("@Owner", GetSingleRelationValue(asset.GetAttribute(ownerAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@EndDate", GetScalerValue(asset.GetAttribute(endDateAttribute)));
                        cmd.Parameters.AddWithValue("@BeginDate", GetScalerValue(asset.GetAttribute(beginDateAttribute)));
                        cmd.Parameters.AddWithValue("@Status", GetSingleRelationValue(asset.GetAttribute(statusAttribute)));
                        cmd.Parameters.AddWithValue("@Members", membersAttribute == null ? DBNull.Value : GetMultiRelationValues(asset.GetAttribute(membersAttribute)));
                        cmd.Parameters.AddWithValue("@Reference", referenceAttribute == null ? DBNull.Value : GetScalerValue(asset.GetAttribute(referenceAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            return(assetCounter);
        }
        public override int Import()
        {
            SqlDataReader sdr = GetImportDataFromDBTableWithOrder("RegressionTests");

            int importCount = 0;

            while (sdr.Read())
            {
                try
                {
                    //CHECK DATA: RegressionTest must have a name.
                    if (String.IsNullOrEmpty(sdr["Name"].ToString()))
                    {
                        UpdateImportStatus("RegressionTests", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "RegressionTest name attribute is required.");
                        continue;
                    }

                    //CHECK DATA: RegressionTest must have a scope.
                    if (String.IsNullOrEmpty(sdr["Scope"].ToString()))
                    {
                        UpdateImportStatus("RegressionTests", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, "RegressionTest scope attribute is required.");
                        continue;
                    }

                    IAssetType assetType = _metaAPI.GetAssetType("RegressionTest");
                    Asset      asset     = _dataAPI.New(assetType, null);

                    IAttributeDefinition fullNameAttribute = assetType.GetAttributeDefinition("Name");
                    asset.SetAttributeValue(fullNameAttribute, AddV1IDToTitle(sdr["Name"].ToString(), sdr["AssetNumber"].ToString()));

                    IAttributeDefinition descAttribute = assetType.GetAttributeDefinition("Description");
                    asset.SetAttributeValue(descAttribute, sdr["Description"].ToString());

                    IAttributeDefinition scopeAttribute = assetType.GetAttributeDefinition("Scope");
                    asset.SetAttributeValue(scopeAttribute, GetNewAssetOIDFromDB(sdr["Scope"].ToString(), "Projects"));

                    if (String.IsNullOrEmpty(sdr["Owners"].ToString()) == false)
                    {
                        AddMultiValueRelation(assetType, asset, "Members", "Owners", sdr["Owners"].ToString());
                    }

                    IAttributeDefinition referenceAttribute = assetType.GetAttributeDefinition("Reference");
                    asset.SetAttributeValue(referenceAttribute, sdr["Reference"].ToString());

                    IAttributeDefinition stepsAttribute = assetType.GetAttributeDefinition("Steps");
                    asset.SetAttributeValue(stepsAttribute, sdr["Steps"].ToString());

                    IAttributeDefinition inputAttribute = assetType.GetAttributeDefinition("Inputs");
                    asset.SetAttributeValue(inputAttribute, sdr["Inputs"].ToString());

                    IAttributeDefinition setupAttribute = assetType.GetAttributeDefinition("Setup");
                    asset.SetAttributeValue(setupAttribute, sdr["Setup"].ToString());

                    IAttributeDefinition expectedResultsAttribute = assetType.GetAttributeDefinition("ExpectedResults");
                    asset.SetAttributeValue(expectedResultsAttribute, sdr["ExpectedResults"].ToString());

                    //HACK: For Rally import, needs to be refactored.
                    IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");
                    //asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB(sdr["Status"].ToString()));
                    asset.SetAttributeValue(statusAttribute, GetNewListTypeAssetOIDFromDB("RegressionTestStatus", sdr["Status"].ToString()));

                    //HACK: For Rally import, needs to be refactored.
                    IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");
                    //asset.SetAttributeValue(categoryAttribute, GetNewListTypeAssetOIDFromDB(sdr["Category"].ToString()));
                    asset.SetAttributeValue(categoryAttribute, GetNewListTypeAssetOIDFromDB("TestCategory", sdr["Category"].ToString()));

                    _dataAPI.Save(asset);

                    string newAssetNumber = GetAssetNumberV1("RegressionTest", asset.Oid.Momentless.ToString());
                    UpdateNewAssetOIDAndNumberInDB("RegressionTests", sdr["AssetOID"].ToString(), asset.Oid.Momentless.ToString(), newAssetNumber);
                    UpdateImportStatus("RegressionTests", sdr["AssetOID"].ToString(), ImportStatuses.IMPORTED, "RegressionTest imported.");
                    importCount++;
                }
                catch (Exception ex)
                {
                    if (_config.V1Configurations.LogExceptions == true)
                    {
                        UpdateImportStatus("RegressionTests", sdr["AssetOID"].ToString(), ImportStatuses.FAILED, ex.Message);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
            sdr.Close();
            return(importCount);
        }
 internal void SaveAttributeDefinition(IAttributeDefinition attribdef)
 {
     var key = new Pair<IAssetType, string>(this, attribdef.Name);
     map[key] = attribdef;
 }
        public override int Export()
        {
            IAssetType assetType = _metaAPI.GetAssetType("Request");
            Query      query     = new Query(assetType);

            IAttributeDefinition assetStateAttribute = assetType.GetAttributeDefinition("AssetState");

            query.Selection.Add(assetStateAttribute);

            IAttributeDefinition assetNumberAttribute = assetType.GetAttributeDefinition("Number");

            query.Selection.Add(assetNumberAttribute);

            IAttributeDefinition ownerAttribute = assetType.GetAttributeDefinition("Owner");

            query.Selection.Add(ownerAttribute);

            IAttributeDefinition scopeAttribute = assetType.GetAttributeDefinition("Scope");

            query.Selection.Add(scopeAttribute);

            IAttributeDefinition epicsAttribute = null;

            if (_metaAPI.Version.Major > 11)
            {
                epicsAttribute = assetType.GetAttributeDefinition("Epics.ID");
                query.Selection.Add(epicsAttribute);
            }

            IAttributeDefinition descriptionAttribute = assetType.GetAttributeDefinition("Description");

            query.Selection.Add(descriptionAttribute);

            IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name");

            query.Selection.Add(nameAttribute);

            IAttributeDefinition orderAttribute = assetType.GetAttributeDefinition("Order");

            query.Selection.Add(orderAttribute);

            IAttributeDefinition resolutionAttribute = assetType.GetAttributeDefinition("Resolution");

            query.Selection.Add(resolutionAttribute);

            IAttributeDefinition referenceAttribute = assetType.GetAttributeDefinition("Reference");

            query.Selection.Add(referenceAttribute);

            IAttributeDefinition requestedByAttribute = assetType.GetAttributeDefinition("RequestedBy");

            query.Selection.Add(requestedByAttribute);

            IAttributeDefinition resolutionReasonAttribute = assetType.GetAttributeDefinition("ResolutionReason");

            query.Selection.Add(resolutionReasonAttribute);

            IAttributeDefinition sourceAttribute = assetType.GetAttributeDefinition("Source");

            query.Selection.Add(sourceAttribute);

            IAttributeDefinition priorityAttribute = assetType.GetAttributeDefinition("Priority");

            query.Selection.Add(priorityAttribute);

            IAttributeDefinition statusAttribute = assetType.GetAttributeDefinition("Status");

            query.Selection.Add(statusAttribute);

            IAttributeDefinition categoryAttribute = assetType.GetAttributeDefinition("Category");

            query.Selection.Add(categoryAttribute);

            //Filter on parent scope.
            IAttributeDefinition parentScopeAttribute = assetType.GetAttributeDefinition("Scope.ParentMeAndUp");
            FilterTerm           term = new FilterTerm(parentScopeAttribute);

            term.Equal(_config.V1SourceConnection.Project);
            query.Filter = term;

            string SQL = BuildRequestInsertStatement();

            if (_config.V1Configurations.PageSize != 0)
            {
                query.Paging.Start    = 0;
                query.Paging.PageSize = _config.V1Configurations.PageSize;
            }

            int assetCounter = 0;
            int assetTotal   = 0;

            do
            {
                QueryResult result = _dataAPI.Retrieve(query);
                assetTotal = result.TotalAvaliable;

                foreach (Asset asset in result.Assets)
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        //NAME NPI MASK:
                        object name = GetScalerValue(asset.GetAttribute(nameAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && name != DBNull.Value)
                        {
                            name = ExportUtils.RemoveNPI(name.ToString());
                        }

                        //DESCRIPTION NPI MASK:
                        object description = GetScalerValue(asset.GetAttribute(descriptionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && description != DBNull.Value)
                        {
                            description = ExportUtils.RemoveNPI(description.ToString());
                        }

                        //REFERENCE NPI MASK:
                        object reference = GetScalerValue(asset.GetAttribute(referenceAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && reference != DBNull.Value)
                        {
                            reference = ExportUtils.RemoveNPI(reference.ToString());
                        }

                        //REQUESTED BY NPI MASK:
                        object requestedBy = GetScalerValue(asset.GetAttribute(requestedByAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && requestedBy != DBNull.Value)
                        {
                            requestedBy = ExportUtils.RemoveNPI(requestedBy.ToString());
                        }

                        //RESOLUTION NPI MASK:
                        object resolution = GetScalerValue(asset.GetAttribute(resolutionAttribute));
                        if (_config.V1Configurations.UseNPIMasking == true && resolution != DBNull.Value)
                        {
                            resolution = ExportUtils.RemoveNPI(resolution.ToString());
                        }

                        cmd.Connection  = _sqlConn;
                        cmd.CommandText = SQL;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString());
                        cmd.Parameters.AddWithValue("@AssetState", GetScalerValue(asset.GetAttribute(assetStateAttribute)));
                        cmd.Parameters.AddWithValue("@AssetNumber", GetScalerValue(asset.GetAttribute(assetNumberAttribute)));
                        cmd.Parameters.AddWithValue("@Owner", GetSingleRelationValue(asset.GetAttribute(ownerAttribute)));
                        cmd.Parameters.AddWithValue("@Scope", GetSingleRelationValue(asset.GetAttribute(scopeAttribute)));
                        cmd.Parameters.AddWithValue("@Epics", epicsAttribute == null ? DBNull.Value : GetMultiRelationValues(asset.GetAttribute(epicsAttribute)));
                        cmd.Parameters.AddWithValue("@Description", description);
                        cmd.Parameters.AddWithValue("@Name", name);
                        cmd.Parameters.AddWithValue("@Order", GetScalerValue(asset.GetAttribute(orderAttribute)));
                        cmd.Parameters.AddWithValue("@Resolution", resolution);
                        cmd.Parameters.AddWithValue("@Reference", reference);
                        cmd.Parameters.AddWithValue("@RequestedBy", requestedBy);
                        cmd.Parameters.AddWithValue("@ResolutionReason", GetSingleRelationValue(asset.GetAttribute(resolutionReasonAttribute)));
                        cmd.Parameters.AddWithValue("@Source", GetSingleRelationValue(asset.GetAttribute(sourceAttribute)));
                        cmd.Parameters.AddWithValue("@Priority", GetSingleRelationValue(asset.GetAttribute(priorityAttribute)));
                        cmd.Parameters.AddWithValue("@Status", GetSingleRelationValue(asset.GetAttribute(statusAttribute)));
                        cmd.Parameters.AddWithValue("@Category", GetSingleRelationValue(asset.GetAttribute(categoryAttribute)));
                        cmd.ExecuteNonQuery();
                    }
                    assetCounter++;
                }
                query.Paging.Start = assetCounter;
            } while (assetCounter != assetTotal);
            return(assetCounter);
        }
        private bool isAttributeUnfilledOnServer(Asset asset, IAttributeDefinition attributeDefinition)
        {
            if (asset.Oid == Oid.Null)
            {
                return true;
            }
            Query query = new Query(asset.Oid);
            query.Selection.Add(attributeDefinition);
            QueryResult result = null;
            try
            {
                result = services.Retrieve(query);
            }
            catch (Exception)
            {
                //do nothing
            }

            if (result != null)
            {
                Attribute attr = result.Assets[0].GetAttribute(attributeDefinition);
                try
                {
                    return IsSingleValueAndUnfilled(attr) && IsMultiValueAndUnfilled(attr);
                }
                catch (APIException)
                {
                    // do nothing
                }
            }

            return true; // there is no data on the server.
        }
 internal MultiValueAttribute(IAttributeDefinition def, Asset asset) : base(def, asset)
 {
 }
 internal MultiValueAttribute(IAttributeDefinition def, Asset asset) : base(def, asset) { }
Ejemplo n.º 60
0
        /// <summary>
        /// Searches shortest, all shortest or all paths starting from "myStart" to "myEnd".
        /// </summary>
        /// <param name="myTypeAttribute">The Attribute representing the edge to follow (p.e. "Friends")</param>
        /// <param name="myTypeManager">The TypeManager for the Node type</param>
        /// <param name="myDBObjectCache">The Object Cache for faster object lookup</param>
        /// <param name="myStart">The start node</param>
        /// <param name="myEnd">The end node</param>
        /// <param name="shortestOnly">true, if only shortest path shall be found</param>
        /// <param name="findAll">if true and shortestOnly is true, all shortest paths will be found. if true, and shortest only is false, all paths will be searched</param>
        /// <param name="myMaxDepth">The maximum depth to search</param>
        /// <param name="myMaxPathLength">The maximum path length which shall be analyzed</param>
        /// <returns>A HashSet which contains all found paths. Every path is represented by a List of ObjectUUIDs</returns>
        public HashSet <List <Tuple <long, long> > > Find(IAttributeDefinition myTypeAttribute,
                                                          IVertexType myVertexType,
                                                          IVertex myStart,
                                                          IVertex myEnd,
                                                          bool shortestOnly,
                                                          bool findAll,
                                                          UInt64 myMaxDepth,
                                                          UInt64 myMaxPathLength)
        {
            #region data

            //queue for BFS
            Queue <IVertex> queue = new Queue <IVertex>();

            //Dictionary to store visited TreeNodes
            Dictionary <Tuple <long, long>, Node> visitedNodes = new Dictionary <Tuple <long, long>, Node>();

            HashSet <Tuple <long, long> > visitedVertices = new HashSet <Tuple <long, long> >();

            //current depth
            UInt64 depth = 1;

            //first node in path tree, the start of the select
            Node root = new Node(myStart.VertexTypeID, myStart.VertexID);

            //target node, the target of the select
            Node target = new Node(myEnd.VertexTypeID, myEnd.VertexID);

            //dummy node to check in which level the BFS is
            IVertex dummy = null;

            //if the maxDepth is greater then maxPathLength, then set maxDepth to maxPathLength
            if (myMaxDepth > myMaxPathLength)
            {
                myMaxDepth = myMaxPathLength;
            }
            else if (myMaxPathLength > myMaxDepth)
            {
                myMaxPathLength = myMaxDepth;
            }

            //enqueue first node to start the BFS
            queue.Enqueue(myStart);
            queue.Enqueue(dummy);

            //add root to visitedNodes
            visitedNodes.Add(root.Key, root);

            //search the type on which the attribute is defined
            IVertexType        currentType = myVertexType;
            List <IVertexType> tempList    = new List <IVertexType>();
            tempList.Add(currentType);

            bool foundDefinedType = false;

            while (currentType.HasParentType && !foundDefinedType)
            {
                if (currentType.ParentVertexType.HasAttribute(myTypeAttribute.Name))
                {
                    foundDefinedType = true;
                }

                currentType = currentType.ParentVertexType;
                tempList.Add(currentType);
            }

            if (foundDefinedType)
            {
                _Types = tempList;
            }
            else
            {
                _Types.Add(myVertexType);
            }

            #endregion

            #region BFS

            //check that the start node has the outgoing edge and the target has incoming vertices
            if (!myStart.HasOutgoingEdge(myTypeAttribute.ID) && !HasIncomingVertices(myEnd, myTypeAttribute.ID))
            {
                return(null);
            }

            //if there is more than one object in the queue and the actual depth is less than MaxDepth
            while ((queue.Count > 0) && (depth < myMaxDepth))
            {
                //get the first Object of the queue
                IVertex currentVertex = queue.Dequeue();

                //dummy
                if (currentVertex == null || visitedVertices.Contains(new Tuple <long, long>(currentVertex.VertexTypeID, currentVertex.VertexID)))
                {
                    continue;
                }

                Tuple <long, long> current = new Tuple <long, long>(currentVertex.VertexTypeID, currentVertex.VertexID);
                Node currentNode;

                visitedVertices.Add(current);

                if (visitedNodes.ContainsKey(current))
                {
                    currentNode = visitedNodes[current];
                }
                else
                {
                    currentNode = new Node(current);
                }

                if (currentVertex.HasOutgoingEdge(myTypeAttribute.ID))
                {
                    var vertices = currentVertex.GetOutgoingEdge(myTypeAttribute.ID).GetTargetVertices();

                    Node nextNode;
                    Tuple <long, long> next;

                    foreach (var vertex in vertices)
                    {
                        //create a new node and set currentNode = parent, nextNode = child
                        next     = new Tuple <long, long>(vertex.VertexTypeID, vertex.VertexID);
                        nextNode = new Node(next, currentNode);
                        currentNode.addChild(nextNode);

                        //if the child is the target
                        if (nextNode.Equals(target))
                        {
                            //node points on the target
                            target.Parents.Add(currentNode);

                            //if shortestOnly == true we are finished here
                            if (shortestOnly)
                            {
                                if (findAll)
                                {
                                    if (Convert.ToUInt64(depth + 1) <= myMaxPathLength)
                                    {
                                        //continue searching the current depth if there are any other shortest paths
                                        myMaxDepth = Convert.ToUInt64(depth + 1);

                                        myMaxPathLength = Convert.ToUInt64(depth + 1);
                                    }
                                }
                                else
                                {
                                    //got the shortest, finished
                                    return(new TargetAnalyzer(root, target, myMaxPathLength, shortestOnly, findAll).GetPaths());
                                }
                            }
                        }
                        else
                        {
                            //been there before
                            if (visitedNodes.ContainsKey(nextNode.Key))
                            {
                                //node has more then one parent
                                visitedNodes[nextNode.Key].Parents.Add(currentNode);
                            }
                            //never seen before
                            else
                            {
                                //mark the node as visited
                                visitedNodes.Add(nextNode.Key, nextNode);
                            }

                            //and look what comes on the next level of depth
                            queue.Enqueue(vertex);
                        }
                    }
                }

                //if a new depth is reached
                if (queue.First() == null)
                {
                    //enqueue the dummy at the end of to mark the next depth
                    queue.Enqueue(queue.Dequeue());
                    //one step deeper in the dungen
                    depth++;
                }
            }

            #endregion

            //analyze paths
            return(new TargetAnalyzer(root, target, myMaxPathLength, shortestOnly, findAll).GetPaths());
        }