private MppTask GetTask(Mpxj.Task task)
            {
                if (task != null)
                {
                    java.util.Date taskStartDate        = task.Start;
                    java.util.Date taskFinishDate       = task.Finish;
                    java.util.Date taskActualStartDate  = task.ActualStart;
                    java.util.Date taskActualFinishDate = task.ActualFinish;
                    java.util.Date taskConstraintDate   = task.ConstraintDate;

                    Mpxj.Task      parentTask   = task.ParentTask;
                    java.util.List predecessors = task.Predecessors;
                    MppTask        returnTask   = new MppTask();

                    returnTask.Id             = task.ID.longValue();
                    returnTask.UniqueId       = task.UniqueID.longValue();
                    returnTask.ParentTaskId   = (parentTask == null) ? -1 : parentTask.UniqueID.longValue();
                    returnTask.ConstraintType = (MppConstraintType)task.ConstraintType.Value;

                    returnTask.Name = task.Name;

                    returnTask.StartDate        = Utility.GetDateTimme(taskStartDate);
                    returnTask.ConstraintDate   = Utility.GetDateTimme(taskConstraintDate);
                    returnTask.FinishDate       = Utility.GetDateTimme(taskFinishDate);
                    returnTask.ActualStartDate  = Utility.GetDateTimme(taskActualStartDate);
                    returnTask.ActualFinishDate = Utility.GetDateTimme(taskActualFinishDate);

                    returnTask.PercentageComplete = task.PercentageComplete.doubleValue();
                    returnTask.Priority           = (MppPriority)task.Priority.Value;
                    returnTask.ResourceNames      = task.ResourceNames;
                    returnTask.Notes = task.Notes;

                    if (predecessors != null)
                    {
                        for (int i = 0; i < predecessors.size(); i++)
                        {
                            Relation relation = predecessors.get(i) as Mpxj.Relation;
                            if (relation != null)
                            {
                                returnTask.PredecessorTaskIds.Add(relation.TargetTask.ID.longValue());
                            }
                        }
                    }

                    java.util.List resourcesList = task.ResourceAssignments;
                    Mpxj.Resource  resource      = null;

                    for (int i = 0; i < resourcesList.size(); i++)
                    {
                        resource = ((Mpxj.ResourceAssignment)resourcesList.get(i)).Resource as Mpxj.Resource;
                        returnTask.Resources.Add(GetResource(resource, false));
                    }


                    return(returnTask);
                }

                return(null);
            }
            public taskTree(MppTask argTask)
            {
                this.short_description   = argTask.Name;
                this.start_date          = fmtStartDtm(argTask.ActualStartDate);
                this.end_date            = fmtEndDtm(argTask.ActualFinishDate);
                this.schedule_start_date = fmtStartDtm(argTask.ConstraintDate, argTask.StartDate, argTask.ActualStartDate);
                this.schedule_end_date   = fmtEndDtm(argTask.FinishDate, argTask.ActualFinishDate);
                //trapInvalidDate();
                switch (argTask.Priority)
                {
                case MppPriority.Lowest:
                case MppPriority.VeryLow:
                case MppPriority.Lower:
                case MppPriority.Low:
                    this.priority = 4;
                    break;

                case MppPriority.Medium:
                    this.priority = 3;
                    break;

                case MppPriority.High:
                case MppPriority.Higher:
                    this.priority = 2;
                    break;

                case MppPriority.VeryHigh:
                case MppPriority.Highest:
                    this.priority = 1;
                    break;

                default:
                    this.priority = 5;
                    break;
                }
                this.time_constraint = (argTask.ConstraintType != MppConstraintType.AsSoonAsPossible) ? "start_on" : "asap";
                foreach (MppTask c in argTask.ChildTasks.ToList())
                {
                    childtasks.Add(new taskTree(c));
                }
            }
 public projectTree(MppTask argProject) : base(argProject)
 {
 }