internal static new FloatNumberValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     double floatValue;
     if (!Double.TryParse(internalValue, System.Globalization.NumberStyles.Float, new System.Globalization.CultureInfo("en-US"), out floatValue))
         floatValue = 0;
     return new FloatNumberValue(task, customColumn, internalValue, floatValue);
 }
Example #2
0
        internal static ResourcesValue FromResourceList(Task task, HPMProjectCustomColumnsColumn customColumn, List <Resource> resources)
        {
            string internalValue;
            HPMResourceDefinitionList resDefList = new HPMResourceDefinitionList();

            resDefList.m_Resources = new HPMResourceDefinition[resources.Count];
            for (int i = 0; i < resources.Count; i += 1)
            {
                resDefList.m_Resources[i] = new HPMResourceDefinition();
                if (resources[i] is User)
                {
                    resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.Resource;
                }
                else if (resources[i] is Group)
                {
                    resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.ResourceGroup;
                }
                else if (resources[i] is AllProjectMembers)
                {
                    resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.AllProjectMembers;
                }
                resDefList.m_Resources[i].m_ID = resources[i].UniqueID;
            }
            internalValue = SessionManager.Session.UtilEncodeCustomColumnResourcesValue(resDefList, task.MainProjectID);
            return(new ResourcesValue(task, customColumn, internalValue, resources));
        }
 internal static new IntegerNumberValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     long integerValue;
     if (!Int64.TryParse(internalValue, out integerValue))
         integerValue = 0;
     return new IntegerNumberValue(task, customColumn, internalValue, integerValue);
 }
 /// <summary>
 /// Factory method to create a CustomColumnValue from the internal endocding of custom column values in Hansoft.
 /// </summary>
 /// <param name="task">The task that the value belongs to.</param>
 /// <param name="customColumn">The custom column that the value belongs to.</param>
 /// <param name="internalValue">The Hansoft internal value.</param>
 /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
 public static CustomColumnValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     switch (customColumn.m_Type)
     {
         case EHPMProjectCustomColumnsColumnType.AccumulatedTime:
             return AccumulatedTimeValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.FloatNumber:
             return FloatNumberValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.IntegerNumber:
             return IntegerNumberValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.Hyperlink:
             return HyperlinkValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.Text:
             return TextValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.MultiLineText:
             return MultilineTextValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.DateTime:
             return DateValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
             return DateTimeValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.DropList:
             return SingleSelectionValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
             return MultipleSelectionValue.FromInternalValue(task, customColumn, internalValue);
         case EHPMProjectCustomColumnsColumnType.Resources:
             return ResourcesValue.FromInternalValue(task, customColumn, internalValue);
         default:
             return null;
     }
 }
Example #5
0
 private void SetCustomColumnValueInternal(HPMProjectCustomColumnsColumn customColumn, string value)
 {
     if (Session.TaskGetCustomColumnData(UniqueTaskID, customColumn.m_Hash) != value)
     {
         Session.TaskSetCustomColumnData(UniqueTaskID, customColumn.m_Hash, value, true);
     }
 }
        internal static IntegerNumberValue FromInteger(Task task, HPMProjectCustomColumnsColumn customColumn, long integerValue)
        {
            string internalValue;

            internalValue = integerValue.ToString();
            return(new IntegerNumberValue(task, customColumn, internalValue, integerValue));
        }
Example #7
0
        internal static new ResourcesValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            List <Resource>           resources    = new List <Resource>();
            HPMResourceDefinitionList resourceList = SessionManager.Session.UtilDecodeCustomColumnResourcesValue(internalValue);

            foreach (HPMResourceDefinition resourceDefinition in resourceList.m_Resources)
            {
                if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.Resource)
                {
                    if (SessionManager.Session.UtilIsIDValid(resourceDefinition.m_ID))
                    {
                        resources.Add(User.GetUser(resourceDefinition.m_ID));
                    }
                }
                else if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.ResourceGroup)
                {
                    if (SessionManager.Session.UtilIsIDValid(resourceDefinition.m_ID))
                    {
                        resources.Add(Group.GetGroup(resourceDefinition.m_ID));
                    }
                }
                else if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.AllProjectMembers)
                {
                    resources.Add(AllProjectMembers.Instance);
                }
            }
            return(new ResourcesValue(task, customColumn, internalValue, resources));
        }
 internal static new SingleSelectionValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     int selection;
     if (!Int32.TryParse(internalValue, out selection))
         selection = -1;
     return new SingleSelectionValue(task, customColumn, internalValue, selection);
 }
        internal static FloatNumberValue FromFloat(Task task, HPMProjectCustomColumnsColumn customColumn, double floatValue)
        {
            string internalValue;

            internalValue = String.Format(new System.Globalization.CultureInfo("en-US"), "{0:F1}", floatValue);
            return(new FloatNumberValue(task, customColumn, internalValue, floatValue));
        }
        /// <summary>
        /// Factory method to create a CustomColumnValue from a list of user representations (string) of custom column values in Hansoft.
        /// Currently only implemented for MultipleSelection and Resources
        /// </summary>
        /// <param name="task">The task that the value belongs to.</param>
        /// <param name="customColumn">The custom column that the value belongs to.</param>
        /// <param name="internalValue">The list of strings</param>
        /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
        public static CustomColumnValue FromStringList(Task task, HPMProjectCustomColumnsColumn customColumn, IList value)
        {
            switch (customColumn.m_Type)
            {
                case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                    return MultipleSelectionValue.FromStringList(task, customColumn, value);
                case EHPMProjectCustomColumnsColumnType.Resources:
                    {
                        Project project = Project.GetProject(task.MainProjectID);
                        List<Resource> resources = new List<Resource>();
                        foreach (string rs in value)
                        {
                            string trimmed = rs.Trim();
                            User user = project.Members.Find(u => u.Name == trimmed);
                            if (user != null)
                                resources.Add(user);
                            else
                            {
                                User groupMember = project.Members.Find(u => u.Groups.Find(g => g.Name == trimmed) != null);
                                if (groupMember != null)
                                {
                                    Group group = groupMember.Groups.Find(g => g.Name == trimmed);
                                    resources.Add(group);
                                }
                            }
                        }

                        return ResourcesValue.FromResourceList(task, customColumn, resources);
                    }
                default:
                    return null;
            }
        }
        /// <summary>
        /// Create a new instance from an internal value belonging to a certain task and custom column.
        /// </summary>
        /// <param name="task">The task the value belongs to.</param>
        /// <param name="customColumn">The custom column the value belongs to.</param>
        /// <param name="hpmDateTime">The internal Hansoft time value.</param>
        /// <returns>The new instance.</returns>
        public static DateValue FromHpmDateTime(Task task, HPMProjectCustomColumnsColumn customColumn, ulong hpmDateTime)
        {
            string internalValue;

            internalValue = SessionManager.Session.UtilEncodeCustomColumnDateTimeValue(hpmDateTime);
            return(new DateValue(task, customColumn, internalValue, hpmDateTime));
        }
 internal static SingleSelectionValue FromName(Task task, HPMProjectCustomColumnsColumn customColumn, string name)
 {
     int selection = HPMUtilities.EncodeDroplistValue(name, customColumn.m_DropListItems);
     
     string internalValue = selection.ToString();
     return new SingleSelectionValue(task, customColumn, internalValue, selection);
 }
        internal static SingleSelectionValue FromName(Task task, HPMProjectCustomColumnsColumn customColumn, string name)
        {
            int selection = HPMUtilities.EncodeDroplistValue(name, customColumn.m_DropListItems);

            string internalValue = selection.ToString();

            return(new SingleSelectionValue(task, customColumn, internalValue, selection));
        }
 internal static new DateTimeValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     ulong hpmDateTime;
     if (internalValue != "")
         hpmDateTime = SessionManager.Session.UtilDecodeCustomColumnDateTimeValue(internalValue);
     else
         hpmDateTime = 0;
     return new DateTimeValue(task, customColumn, internalValue, hpmDateTime);
 }
 /// <summary>
 /// Factory method to create a CustomColumnValue from the end user representation (string) of custom column values in Hansoft.
 /// </summary>
 /// <param name="task">The task that the value belongs to.</param>
 /// <param name="customColumn">The custom column that the value belongs to.</param>
 /// <param name="endUserString">The string value of the custom column as it is displayed in the Hansoft client.</param>
 /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
 /// <returns></returns>
 public static CustomColumnValue FromEndUserString(Task task, HPMProjectCustomColumnsColumn customColumn, string endUserString)
 {
     switch (customColumn.m_Type)
     {
         case EHPMProjectCustomColumnsColumnType.AccumulatedTime:
             return AccumulatedTimeValue.FromInternalValue(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.FloatNumber:
             return FloatNumberValue.FromInternalValue(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.IntegerNumber:
             return IntegerNumberValue.FromInternalValue(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.Hyperlink:
             return HyperlinkValue.FromInternalValue(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.Text:
             return TextValue.FromInternalValue(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.MultiLineText:
             return MultilineTextValue.FromEscapedString(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.DateTime:
             DateTime dt;
             if (!DateTime.TryParse(endUserString, out dt))
                 return DateValue.FromInternalValue(task, customColumn, endUserString);
             else
                 return DateValue.FromDateTime(task, customColumn, dt.ToUniversalTime());
         case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
             if (!DateTime.TryParse(endUserString, out dt))
                 return DateValue.FromInternalValue(task, customColumn, endUserString);
             else
                 return DateTimeValue.FromDateTime(task, customColumn, dt.ToUniversalTime());
         case EHPMProjectCustomColumnsColumnType.DropList:
             return SingleSelectionValue.FromName(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
             return MultipleSelectionValue.FromName(task, customColumn, endUserString);
         case EHPMProjectCustomColumnsColumnType.Resources:
             Project project = Project.GetProject(task.MainProjectID);
             List<Resource> resources = new List<Resource>();
             string[] rStrings = endUserString.Split(new char[]{';'});
             foreach (string rs in rStrings)
             {
                 string trimmed = rs.Trim();
                 User user = project.Members.Find(u => u.Name == trimmed);
                 if (user != null)
                     resources.Add(user);
                 else
                 {
                     User groupMember = project.Members.Find(u => u.Groups.Find(g => g.Name == trimmed) != null);
                     if (groupMember != null)
                     {
                         Group group = groupMember.Groups.Find(g => g.Name == trimmed);
                         resources.Add(group);
                     }
                 }
             }
             return ResourcesValue.FromResourceList(task, customColumn, resources);
         default:
             return null;
     }
 }
        internal static new IntegerNumberValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            long integerValue;

            if (!Int64.TryParse(internalValue, out integerValue))
            {
                integerValue = 0;
            }
            return(new IntegerNumberValue(task, customColumn, internalValue, integerValue));
        }
        internal static new SingleSelectionValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            int selection;

            if (!Int32.TryParse(internalValue, out selection))
            {
                selection = -1;
            }
            return(new SingleSelectionValue(task, customColumn, internalValue, selection));
        }
        internal static new FloatNumberValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            double floatValue;

            if (!Double.TryParse(internalValue, System.Globalization.NumberStyles.Float, new System.Globalization.CultureInfo("en-US"), out floatValue))
            {
                floatValue = 0;
            }
            return(new FloatNumberValue(task, customColumn, internalValue, floatValue));
        }
Example #19
0
        /// <summary>
        /// Sets the value of a custom column for this task. If the column doesn't exist in the tasks context it will do nothing
        /// </summary>
        /// <param name="customColumnName">The name of the custom column to set the value for</param>
        /// <param name="value">The value to be set, can either be an instance of CustomColumnValue or any other type that can reasonably be converted
        /// to the end user consumable string representation of the value, i.e., as it is displayed in the Hansoft client.</param>
        public void SetCustomColumnValue(string customColumnName, object value)
        {
            // Ensure that we get the custom column of the right project
            HPMProjectCustomColumnsColumn actualCustomColumn = ProjectView.GetCustomColumn(customColumnName);

            if (actualCustomColumn != null)
            {
                SetCustomColumnValue(actualCustomColumn, value);
            }
        }
 internal static new MultipleSelectionValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     string[] internalValues = HPMUtilities.SplitDroplistString(internalValue);
     int[] selections = new int[internalValues.Length];
     for (int i = 0; i < internalValues.Length; i += 1)
     {
         if (!Int32.TryParse(internalValues[i], out selections[i]))
             selections[i] = -1;
     }
     return new MultipleSelectionValue(task, customColumn, internalValue, selections);
 }
 internal void Initialize(ProjectView projectView)
 {
     if (isCustomColumn)
     {
         customColumn = projectView.GetCustomColumn(customColumnName);
         if (customColumn == null)
         {
             throw new ArgumentException("Could not find custom column:" + customColumnName);
         }
     }
 }
Example #22
0
        // TODO: Move to the ColumnDefinition class (to be...) in the Behavior namespace
        private HPMProjectCustomColumnsColumn ResolveCustomColumn(ProjectView projectView, ColumnDefinition colDef)
        {
            HPMProjectCustomColumnsColumn customColumn = projectView.GetCustomColumn(colDef.CustomColumnName);

            if (customColumn == null)
            {
                throw new ArgumentException("Could not find custom column:" + colDef.CustomColumnName);
            }
            else
            {
                return(customColumn);
            }
        }
Example #23
0
        /// <summary>
        /// Get the aggregated value of a custom column over all children for this task as it is displayed in the Hansoft client.
        /// </summary>
        /// <param name="columnName">The name of the column to get the value for</param>
        /// <returns>The requested value wrapped by a subclass of CustomColumnValue</returns>
        public CustomColumnValue GetAggregatedCustomColumnValue(string columnName)
        {
            HPMProjectCustomColumnsColumn customColumn = ProjectView.GetCustomColumn(columnName);

            if (customColumn != null)
            {
                return(GetAggregatedCustomColumnValue(customColumn));
            }
            else
            {
                return(CustomColumnValue.FromInternalValue(this, null, ""));
            }
        }
 internal static new MultipleSelectionValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     string[] internalValues = internalValue.Split(new char[] { ';' });
     int[]    selections     = new int[internalValues.Length];
     for (int i = 0; i < internalValues.Length; i += 1)
     {
         if (!Int32.TryParse(internalValues[i], out selections[i]))
         {
             selections[i] = -1;
         }
     }
     return(new MultipleSelectionValue(task, customColumn, internalValue, selections));
 }
        internal static new DateTimeValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            ulong hpmDateTime;

            if (internalValue != "")
            {
                hpmDateTime = SessionManager.Session.UtilDecodeCustomColumnDateTimeValue(internalValue);
            }
            else
            {
                hpmDateTime = 0;
            }
            return(new DateTimeValue(task, customColumn, internalValue, hpmDateTime));
        }
 public static MultipleSelectionValue FromStringList(Task task, HPMProjectCustomColumnsColumn customColumn, IList names)
 {
     int[] selections = new int[names.Count];
     StringBuilder sb = new StringBuilder();
     for (int i = 0; i < names.Count; i += 1)
     {
         selections[i] = HPMUtilities.EncodeDroplistValue((string)names[i], customColumn.m_DropListItems);
         if (sb.Length > 0)
             sb.Append(';');
         sb.Append(selections[i].ToString());
     }
     string internalValue = sb.ToString();
     return new MultipleSelectionValue(task, customColumn, internalValue, selections);
 }
        internal static MultipleSelectionValue FromName(Task task, HPMProjectCustomColumnsColumn customColumn, string nameSequence)
        {

            string[] names = HPMUtilities.SplitDroplistString(nameSequence);
            int[] selections = new int[names.Length];
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < names.Length; i += 1)
            {
                selections[i] = HPMUtilities.EncodeDroplistValue(names[i], customColumn.m_DropListItems);
                if (sb.Length > 0)
                    sb.Append(HPMUtilities.DropListStringSeparator);
                sb.Append(selections[i].ToString());
            }
            string internalValue = sb.ToString();
            return new MultipleSelectionValue(task, customColumn, internalValue, selections);
        }
Example #28
0
 /// <summary>
 /// Get the aggregated value of a custom column over all children for this task as it is displayed in the Hansoft client.
 /// </summary>
 /// <param name="customColumn">The custom column to get the value for.</param>
 /// <returns>The requested value wrapped by a subclass of CustomColumnValue</returns>
 internal virtual CustomColumnValue GetAggregatedCustomColumnValue(HPMProjectCustomColumnsColumn customColumn)
 {
     if (HasChildren && (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.AccumulatedTime || customColumn.m_Type == EHPMProjectCustomColumnsColumnType.FloatNumber || customColumn.m_Type == EHPMProjectCustomColumnsColumnType.IntegerNumber))
     {
         HPMTaskCustomSummaryValue[] summaryValues = Session.TaskRefGetSummary(UniqueID).m_CustomSummaryValues;
         foreach (HPMTaskCustomSummaryValue value in summaryValues)
         {
             if (value.m_Hash == customColumn.m_Hash)
             {
                 if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.IntegerNumber)
                 {
                     long aggregatedValue = value.m_IntegerValue;
                     return(IntegerNumberValue.FromInteger(this, customColumn, aggregatedValue));
                 }
                 else
                 {
                     double aggregatedValue = value.m_FloatValue;
                     if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.FloatNumber)
                     {
                         return(FloatNumberValue.FromFloat(this, customColumn, aggregatedValue));
                     }
                     else
                     {
                         return(AccumulatedTimeValue.FromFloat(this, customColumn, aggregatedValue));
                     }
                 }
             }
         }
         // No summary value was found, return 0
         if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.IntegerNumber)
         {
             return(IntegerNumberValue.FromInteger(this, customColumn, 0));
         }
         else if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.FloatNumber)
         {
             return(FloatNumberValue.FromFloat(this, customColumn, 0));
         }
         else
         {
             return(AccumulatedTimeValue.FromFloat(this, customColumn, 0));
         }
     }
     else
     {
         return(GetCustomColumnValue(customColumn));
     }
 }
Example #29
0
            internal void DoUpdate(Task task)
            {
                object expressionValue = mInfo.Invoke(null, new object[] { task });

                if (isCustomColumn)
                {
                    // Ensure that we get the custom column of the right project
                    HPMProjectCustomColumnsColumn actualCustomColumn = task.ProjectView.GetCustomColumn(customColumnName);
                    if (actualCustomColumn != null)
                    {
                        task.SetCustomColumnValue(actualCustomColumn, expressionValue);
                    }
                }
                else
                {
                    task.SetDefaultColumnValue(defaultColumnType, expressionValue);
                }
            }
        public static MultipleSelectionValue FromStringList(Task task, HPMProjectCustomColumnsColumn customColumn, IList names)
        {
            int[]         selections = new int[names.Count];
            StringBuilder sb         = new StringBuilder();

            for (int i = 0; i < names.Count; i += 1)
            {
                selections[i] = HPMUtilities.EncodeDroplistValue((string)names[i], customColumn.m_DropListItems);
                if (sb.Length > 0)
                {
                    sb.Append(';');
                }
                sb.Append(selections[i].ToString());
            }
            string internalValue = sb.ToString();

            return(new MultipleSelectionValue(task, customColumn, internalValue, selections));
        }
Example #31
0
 /// <summary>
 /// Sets the value of a custom column for this task.
 /// </summary>
 /// <param name="customColumn">The custom column to set the value for.</param>
 /// <param name="value">The value to be set, can either be an instance of CustomColumnValue or any other type that can reasonably be converted
 /// to the end user consumable string representation of the value, i.e., as it is displayed in the Hansoft client.</param>
 public void SetCustomColumnValue(HPMProjectCustomColumnsColumn customColumn, object value)
 {
     if (value != null)
     {
         if (value is CustomColumnValue)
         {
             SetCustomColumnValueInternal(customColumn, ((CustomColumnValue)value).InternalValue);
         }
         else // TODO: Not right to set US culture here, it will for example screw up DateTime values
         {
             SetCustomColumnValue(customColumn, CustomColumnValue.FromEndUserString(this, customColumn, Convert.ToString(value, new System.Globalization.CultureInfo("en-US"))));
         }
     }
     else
     {
         SetCustomColumnValueInternal(customColumn, string.Empty);
     }
 }
 internal static ResourcesValue FromResourceList(Task task, HPMProjectCustomColumnsColumn customColumn, List<Resource> resources)
 {
     string internalValue;
     HPMResourceDefinitionList resDefList = new HPMResourceDefinitionList();
     resDefList.m_Resources = new HPMResourceDefinition[resources.Count];
     for (int i=0; i< resources.Count; i += 1)
     {
         resDefList.m_Resources[i] = new HPMResourceDefinition();
         if (resources[i] is User)
             resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.Resource;
         else if (resources[i] is Group)
             resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.ResourceGroup;
         else if (resources[i] is AllProjectMembers)
             resDefList.m_Resources[i].m_GroupingType = EHPMResourceGroupingType.AllProjectMembers;
         resDefList.m_Resources[i].m_ID = resources[i].UniqueID;
     }
     internalValue = SessionManager.Session.UtilEncodeCustomColumnResourcesValue(resDefList, task.MainProjectID);
     return new ResourcesValue(task, customColumn, internalValue, resources);
 }
        internal static MultipleSelectionValue FromName(Task task, HPMProjectCustomColumnsColumn customColumn, string nameSequence)
        {
            string[]      names      = nameSequence.Split(new char[] { ';' });
            int[]         selections = new int[names.Length];
            StringBuilder sb         = new StringBuilder();

            for (int i = 0; i < names.Length; i += 1)
            {
                selections[i] = HPMUtilities.EncodeDroplistValue(names[i], customColumn.m_DropListItems);
                if (sb.Length > 0)
                {
                    sb.Append(';');
                }
                sb.Append(selections[i].ToString());
            }
            string internalValue = sb.ToString();

            return(new MultipleSelectionValue(task, customColumn, internalValue, selections));
        }
Example #34
0
        public override void Initialize()
        {
            projects         = new List <Project>();
            projectViews     = new List <ProjectView>();
            initializationOK = false;
            projects         = HPMUtilities.FindProjects(projectName, inverted);
            if (projects.Count == 0)
            {
                throw new ArgumentException("Could not find any matching project:" + projectName);
            }
            foreach (Project project in projects)
            {
                ProjectView projectView;
                if (viewType == EHPMReportViewType.AgileBacklog)
                {
                    projectView = project.ProductBacklog;
                }
                else if (viewType == EHPMReportViewType.AllBugsInProject)
                {
                    projectView = project.BugTracker;
                }
                else
                {
                    projectView = project.Schedule;
                }
                projectViews.Add(projectView);
            }

            trackedColumn = projectViews[0].GetCustomColumn(trackedColumnName);
            if (trackedColumn == null)
            {
                throw new ArgumentException("Could not find custom column in view " + viewName + " " + trackedColumnName);
            }
            trackingColumn = projectViews[0].GetCustomColumn(trackingColumnName);
            if (trackingColumn == null)
            {
                throw new ArgumentException("Could not find custom column in view " + viewName + " " + trackingColumnName);
            }
            initializationOK = true;
            DoUpdateFromHistory();
        }
Example #35
0
        /// <summary>
        /// Factory method to create a CustomColumnValue from the internal endocding of custom column values in Hansoft.
        /// </summary>
        /// <param name="task">The task that the value belongs to.</param>
        /// <param name="customColumn">The custom column that the value belongs to.</param>
        /// <param name="internalValue">The Hansoft internal value.</param>
        /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
        public static CustomColumnValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            switch (customColumn.m_Type)
            {
            case EHPMProjectCustomColumnsColumnType.AccumulatedTime:
                return(AccumulatedTimeValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.FloatNumber:
                return(FloatNumberValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.IntegerNumber:
                return(IntegerNumberValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Hyperlink:
                return(HyperlinkValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Text:
                return(TextValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.MultiLineText:
                return(MultilineTextValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DateTime:
                return(DateValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
                return(DateTimeValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DropList:
                return(SingleSelectionValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                return(MultipleSelectionValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Resources:
                return(ResourcesValue.FromInternalValue(task, customColumn, internalValue));

            default:
                return(null);
            }
        }
 internal static new ResourcesValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     List<Resource> resources = new List<Resource>();
     HPMResourceDefinitionList resourceList = SessionManager.Session.UtilDecodeCustomColumnResourcesValue(internalValue);
     foreach (HPMResourceDefinition resourceDefinition in resourceList.m_Resources)
     {
         if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.Resource)
         {
             if (SessionManager.Session.UtilIsIDValid(resourceDefinition.m_ID))
                 resources.Add(User.GetUser(resourceDefinition.m_ID));
         }
         else if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.ResourceGroup)
         {
             if (SessionManager.Session.UtilIsIDValid(resourceDefinition.m_ID))
                 resources.Add(Group.GetGroup(resourceDefinition.m_ID));
         }
         else if (resourceDefinition.m_GroupingType == EHPMResourceGroupingType.AllProjectMembers)
             resources.Add(AllProjectMembers.Instance);
     }
     return new ResourcesValue(task, customColumn, internalValue, resources);
 }
Example #37
0
        public override void Initialize()
        {
            project = HPMUtilities.FindProject(projectName);
            if (project == null)
            {
                throw new ArgumentException("Could not find project:" + projectName);
            }
            if (viewType == EHPMReportViewType.AgileBacklog)
            {
                projectView = project.ProductBacklog;
            }
            else
            {
                projectView = project.Schedule;
            }

            rankColumn = projectView.GetCustomColumn(columnName);
            if (rankColumn == null)
            {
                throw new ArgumentException("Could not find custom column:" + columnName);
            }
            DoRenumber(projectView, 1, "");
        }
Example #38
0
        /// <summary>
        /// Factory method to create a CustomColumnValue from a list of user representations (string) of custom column values in Hansoft.
        /// Currently only implemented for MultipleSelection and Resources
        /// </summary>
        /// <param name="task">The task that the value belongs to.</param>
        /// <param name="customColumn">The custom column that the value belongs to.</param>
        /// <param name="internalValue">The list of strings</param>
        /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
        public static CustomColumnValue FromStringList(Task task, HPMProjectCustomColumnsColumn customColumn, IList value)
        {
            switch (customColumn.m_Type)
            {
            case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                return(MultipleSelectionValue.FromStringList(task, customColumn, value));

            case EHPMProjectCustomColumnsColumnType.Resources:
            {
                Project         project   = Project.GetProject(task.MainProjectID);
                List <Resource> resources = new List <Resource>();
                foreach (string rs in value)
                {
                    string trimmed = rs.Trim();
                    User   user    = project.Members.Find(u => u.Name == trimmed);
                    if (user != null)
                    {
                        resources.Add(user);
                    }
                    else
                    {
                        User groupMember = project.Members.Find(u => u.Groups.Find(g => g.Name == trimmed) != null);
                        if (groupMember != null)
                        {
                            Group group = groupMember.Groups.Find(g => g.Name == trimmed);
                            resources.Add(group);
                        }
                    }
                }

                return(ResourcesValue.FromResourceList(task, customColumn, resources));
            }

            default:
                return(null);
            }
        }
Example #39
0
        private void DoUpdateFromHistory(Task task, HPMDataHistory history)
        {
            // Ensure that we get the custom column of the right project
            HPMProjectCustomColumnsColumn actualCustomColumn = task.ProjectView.GetCustomColumn(trackingColumn.m_Name);
            DateTimeValue storedValue = (DateTimeValue)task.GetCustomColumnValue(actualCustomColumn);
            // ToInt64 will return the value as microseconds since 1970 Jan 1
            ulong storedHpmTime = storedValue.ToHpmDateTime();

            if (history.m_Latests.m_Time > storedHpmTime)
            {
                foreach (HPMDataHistoryEntry entry in history.m_HistoryEntries)
                {
                    // Check if it is the status field
                    if (entry.m_FieldID == 15)
                    {
                        if (entry.m_Time > storedHpmTime)
                        {
                            storedHpmTime = entry.m_Time;
                            task.SetCustomColumnValue(trackingColumn, DateTimeValue.FromHpmDateTime(task, actualCustomColumn, storedHpmTime));
                        }
                    }
                }
            }
        }
 internal static IntegerNumberValue FromInteger(Task task, HPMProjectCustomColumnsColumn customColumn, long integerValue)
 {
     string internalValue;
     internalValue = integerValue.ToString();
     return new IntegerNumberValue(task, customColumn, internalValue, integerValue);
 }
 private SingleSelectionValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, int selection)
     : base(task, customColumn, internalValue)
 {
     this.selection = selection;
 }
 internal override CustomColumnValue GetAggregatedCustomColumnValue(HPMProjectCustomColumnsColumn customColumn)
 {
     HPMUniqueID proxyID = Session.TaskGetProxy(RefTaskID);
     if (proxyID.m_ID == this.UniqueID.m_ID) // This is an item in the schedule and we will use the base implementation
         return base.GetAggregatedCustomColumnValue(customColumn);
     else if (proxyID.m_ID != -1) // If it is an item in the product backlog with a proxy we use the proxies summary, hence ignoring breakdown of committed items in the PBL
         return Task.GetTask(proxyID).GetAggregatedCustomColumnValue(customColumn);
     else if (!HasChildren) // It is a leaf
         return base.GetAggregatedCustomColumnValue(customColumn);
     else // It is a parent item which is not committed and hence we will iterate over the children.
     {
         if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.IntegerNumber)
         {
             long aggregatedInt = 0;
             foreach (ProductBacklogItem item in DeepLeaves)
             {
                 proxyID = Session.TaskGetProxy(item.RefTaskID);
                 if (proxyID.m_ID != -1)
                     aggregatedInt += Task.GetTask(proxyID).GetAggregatedCustomColumnValue(customColumn).ToInt();
                 else
                     aggregatedInt += item.GetCustomColumnValue(customColumn).ToInt();
             }
             return IntegerNumberValue.FromInteger(this, customColumn, aggregatedInt);
         }
         else if (customColumn.m_Type == EHPMProjectCustomColumnsColumnType.FloatNumber)
         {
             double aggregatedFloat = 0;
             foreach (ProductBacklogItem item in DeepLeaves)
             {
                 proxyID = Session.TaskGetProxy(item.RefTaskID);
                 if (proxyID.m_ID != -1)
                     aggregatedFloat += Task.GetTask(proxyID).GetAggregatedCustomColumnValue(customColumn).ToDouble();
                 else
                     aggregatedFloat += item.GetCustomColumnValue(customColumn).ToDouble();
             }
             return FloatNumberValue.FromFloat(this, customColumn, aggregatedFloat);
         }
         else
         {
             double aggregatedTime = 0;
             foreach (ProductBacklogItem item in DeepLeaves)
             {
                 proxyID = Session.TaskGetProxy(item.RefTaskID);
                 if (proxyID.m_ID != -1)
                     aggregatedTime += Task.GetTask(proxyID).GetAggregatedCustomColumnValue(customColumn).ToDouble();
                 else
                     aggregatedTime += item.GetCustomColumnValue(customColumn).ToDouble();
             }
             return AccumulatedTimeValue.FromFloat(this, customColumn, aggregatedTime);
         }                
     }
 }
 internal void Initialize(ProjectView projectView)
 {
     if (isCustomColumn)
     {
         customColumn = projectView.GetCustomColumn(customColumnName);
         if (customColumn == null)
             throw new ArgumentException("Could not find custom column:" + customColumnName);
     }
 }
 internal static FloatNumberValue FromFloat(Task task, HPMProjectCustomColumnsColumn customColumn, double floatValue)
 {
     string internalValue;
     internalValue = String.Format(new System.Globalization.CultureInfo("en-US"), "{0:F1}", floatValue);
     return new FloatNumberValue(task, customColumn, internalValue, floatValue);
 }
 internal FloatNumberValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, double floatValue)
     : base(task, customColumn, internalValue)
 {
     this.floatValue = floatValue;
 }
 internal static TextValue FromText(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     return new TextValue(task, customColumn, internalValue);
 }
 internal TextValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
     : base(task, customColumn, internalValue)
 {
 }
        public override void Initialize()
        {
            projects = new List<Project>();
            projectViews = new List<ProjectView>();
            initializationOK = false;
            projects = HPMUtilities.FindProjects(projectName, inverted);
            if (projects.Count == 0)
                throw new ArgumentException("Could not find any matching project:" + projectName);
            foreach (Project project in projects)
            {
                ProjectView projectView;
                if (viewType == EHPMReportViewType.AgileBacklog)
                    projectView = project.ProductBacklog;
                else if (viewType == EHPMReportViewType.AllBugsInProject)
                    projectView = project.BugTracker;
                else
                    projectView = project.Schedule;
                projectViews.Add(projectView);
            }

            trackedColumn = projectViews[0].GetCustomColumn(trackedColumnName);
            if (trackedColumn == null)
                throw new ArgumentException("Could not find custom column in view " + viewName + " " + trackedColumnName);
            trackingColumn = projectViews[0].GetCustomColumn(trackingColumnName);
            if (trackingColumn == null)
                throw new ArgumentException("Could not find custom column in view " + viewName + " " + trackingColumnName);
            initializationOK = true;
            DoUpdateFromHistory();
        }
        public override void Initialize()
        {
            project = HPMUtilities.FindProject(projectName);
            if (project == null)
                throw new ArgumentException("Could not find project:" + projectName);
            if (viewType == EHPMReportViewType.AgileBacklog)
                projectView = project.ProductBacklog;
            else
                projectView = project.Schedule;

            rankColumn = projectView.GetCustomColumn(columnName);
            if (rankColumn == null)
                throw new ArgumentException("Could not find custom column:" + columnName);
            DoRenumber(projectView, 1, "");
        }
 /// <summary>
 /// Crate a new instance from a DateTime value for a certain task and custom column.
 /// </summary>
 /// <param name="task">The task the value belongs to.</param>
 /// <param name="customColumn">The custom column the value belongs to.</param>
 /// <param name="dateTime">The DateTime value</param>
 /// <returns>The new instance.</returns>
 public static DateValue FromDateTime(Task task, HPMProjectCustomColumnsColumn customColumn, DateTime dateTime)
 {
     return(FromHpmDateTime(task, customColumn, HPMUtilities.HPMDateTime(dateTime, true)));
 }
 private DateTimeValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, ulong hpmDateTime)
     : base(task, customColumn, internalValue)
 {
     this.hpmDateTime = hpmDateTime;
 }
 /// <summary>
 /// Create a new instance from an internal value belonging to a certain task and custom column.
 /// </summary>
 /// <param name="task">The task the value belongs to.</param>
 /// <param name="customColumn">The custom column the value belongs to.</param>
 /// <param name="hpmDateTime">The internal Hansoft time value.</param>
 /// <returns>The new instance.</returns>
 public static DateTimeValue FromHpmDateTime(Task task, HPMProjectCustomColumnsColumn customColumn, ulong hpmDateTime)
 {
     string internalValue;
     internalValue = SessionManager.Session.UtilEncodeCustomColumnDateTimeValue(hpmDateTime);
     return new DateTimeValue(task, customColumn, internalValue, hpmDateTime);
 }
Example #53
0
 private void SetCustomColumnValueInternal(HPMProjectCustomColumnsColumn customColumn, string value)
 {
     if (Session.TaskGetCustomColumnData(UniqueTaskID, customColumn.m_Hash) != value)
         Session.TaskSetCustomColumnData(UniqueTaskID, customColumn.m_Hash, value, true);
 }
 private ResourcesValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, List<Resource> resources)
     : base(task, customColumn, internalValue)
 {
     this.resources = resources;
 }
 /// <summary>
 /// Crate a new instance from a DateTime value for a certain task and custom column.
 /// </summary>
 /// <param name="task">The task the value belongs to.</param>
 /// <param name="customColumn">The custom column the value belongs to.</param>
 /// <param name="dateTime">The DateTime value</param>
 /// <returns>The new instance.</returns>
 public static DateTimeValue FromDateTime(Task task, HPMProjectCustomColumnsColumn customColumn, DateTime dateTime)
 {
     return FromHpmDateTime(task, customColumn, HPMUtilities.HPMDateTime(dateTime, false));
 }
 private IntegerNumberValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, long integerValue)
     : base(task, customColumn, internalValue)
 {
     this.integerValue = integerValue;
 }
Example #57
0
 internal HyperlinkValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
     : base(task, customColumn, internalValue)
 {
 }
 internal static MultilineTextValue FromEscapedString(Task task, HPMProjectCustomColumnsColumn customColumn, string endUserString)
 {
     string internalValue = endUserString.Replace("\\n", "\n").Replace("\\\\", "\\");
     return new MultilineTextValue(task, customColumn, internalValue);
 }
 private DateValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue, ulong hpmDateTime)
     : base(task, customColumn, internalValue)
 {
     this.hpmDateTime = hpmDateTime;
 }
 internal CustomColumnValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
 {
     this.task = task;
     this.customColumn = customColumn;
     this.internalValue = internalValue;
 }