using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ProjectLibrary
{
public class Utility
{
public static DateTime? GetDateTimme(java.util.Date date)
{
return (date == null) ? (DateTime?)null : new DateTime(date.getYear() + 1900, date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
}
public static DataSet GetDataSet(Mpp.MppProject mppProject, bool useIndentPrefix)
{
DataSet dataSet = new DataSet(mppProject.Header.Name ?? "Default");
DataTable dtTasks = new DataTable("Tasks");
dtTasks.Columns.Add("Name");
dtTasks.Columns.Add("Id");
dtTasks.Columns.Add("Start Date");
dtTasks.Columns.Add("Finish Date");
dtTasks.Columns.Add("Actual Start Date");
dtTasks.Columns.Add("Actual Finish Date");
dtTasks.Columns.Add("Pct Completed");
dtTasks.Columns.Add("Unique Id");
dtTasks.Columns.Add("ParentTaskId");
foreach (var task in mppProject.Tasks)
{
buildTaskRows(dtTasks, task, 0, useIndentPrefix);
}
dtTasks.AcceptChanges();
dataSet.Tables.Add(dtTasks);
DataTable dtResources = new DataTable("Resources");
dtResources.Columns.Add("Name");
dtResources.Columns.Add("Id");
dtResources.Columns.Add("Unique Id");
dtResources.Columns.Add("Initials");
dtResources.Columns.Add("Group");
foreach (var resource in mppProject.Resources)
{
dtResources.Rows.Add(new object[] { resource.Name,
resource.Id, resource.UniqueId, resource.Initials, resource.Group });
}
dtResources.AcceptChanges();
dataSet.Tables.Add(dtResources);
return dataSet;
}
private static void buildTaskRows(DataTable dtTasks, Mpp.MppTask task, int level, bool useIndentPrefix)
{
DataRow dr = dtTasks.NewRow();
string taskName = string.Empty;
if(useIndentPrefix)
{
taskName += "'";
}
taskName += indentText(level) + task.Name;
dr.ItemArray = new object[]
{
taskName,
task.Id,
task.StartDate == null ? String.Empty : task.StartDate.GetValueOrDefault().ToString("dd/MM/yyyy hh:mm"),
task.FinishDate == null ? String.Empty : task.FinishDate.GetValueOrDefault().ToString("dd/MM/yyyy hh:mm"),
task.ActualStartDate == null ? String.Empty : task.ActualStartDate.GetValueOrDefault().ToString("dd/MM/yyyy hh:mm"),
task.ActualFinishDate == null ? String.Empty : task.ActualFinishDate.GetValueOrDefault().ToString("dd/MM/yyyy hh:mm"),
task.PercentageComplete,
task.UniqueId,
task.ParentTaskId,
};
dtTasks.Rows.InsertAt(dr, dtTasks.Rows.Count + 1);
foreach (var childTask in task.ChildTasks)
{
buildTaskRows(dtTasks, childTask, level + 1, useIndentPrefix);
}
}
private static string indentText(int level)
{
string indentText = string.Empty;
for (int i = 0; i < level; i++)
{
indentText += " ";
}
return indentText;
}
}
}