00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using Mcs.Epm.MicrosoftProject.mpFx.ProjectsWebService;
00014 using Mcs.Epm.MicrosoftProject.mpFx.ResourcesWebService;
00015 using Resource = Microsoft.Office.Project.Server.Library.Resource;
00016
00017 namespace Mcs.Epm.MicrosoftProject.mpFx
00018 {
00019
00020
00021
00022 public class EntityFactory
00023 {
00024 #region Static Fields
00025
00026 private static bool _AutoCreateGuid = true;
00027
00028 #endregion
00029
00030 #region Public Properties
00031
00032
00033
00034
00035 public static bool AutoCreateGuids
00036 {
00037 get { return _AutoCreateGuid; }
00038 set { _AutoCreateGuid = value; }
00039 }
00040
00041 #endregion
00042
00043 #region Project Creation Methods
00044
00045
00046
00047
00048
00049 public static ProjectDataSet NewProject()
00050 {
00051 ProjectDataSet projectDataSet = new ProjectDataSet();
00052
00053 ProjectDataSet.ProjectRow project = projectDataSet.Project.NewProjectRow();
00054
00055 if (AutoCreateGuids)
00056 {
00057 project.PROJ_UID = Guid.NewGuid();
00058 }
00059
00060 projectDataSet.Project.AddProjectRow(project);
00061
00062 return projectDataSet;
00063 }
00064
00065 public static ProjectDataSet NewProject(ProjectCreationOptions options)
00066 {
00067 if (options.Guid == Guid.Empty)
00068 {
00069 if (!_AutoCreateGuid)
00070 {
00071 throw new ArgumentException( );
00072 }
00073 }
00074
00075 ProjectDataSet project = NewProject(options.Name,
00076 options.Guid,
00077 options.ScheduleFromStart,
00078 options.ScheduleFromDate);
00079
00080 if (options.CalendarGuid != Guid.Empty)
00081 {
00082 project.Project[0].CAL_UID = options.CalendarGuid;
00083 }
00084
00085 project.Project[0].PROJ_OPT_CALC_ACT_COSTS = options.CalculateActualCosts;
00086 project.Project[0].PROJ_OPT_CRITICAL_SLACK_LIMIT = options.NumberOfSlackDaysBeforeCritical;
00087 project.Project[0].PROJ_OPT_HONOR_CONSTRAINTS = options.HonorConstraints;
00088 project.Project[0].PROJ_OPT_MOVE_ACTUAL_IF_LATER = options.MoveEndCompletedPartsForwardStatusDate;
00089 project.Project[0].PROJ_OPT_MOVE_ACTUAL_TO_STATUS = options.MoveEndCompletedPartsAfterStatusDateBackStatusDate;
00090 project.Project[0].PROJ_OPT_MOVE_REMAINING_IF_EARLIER = options.MoveStartRemainingPartsBeforeStatusDateForwardStatusDate;
00091 project.Project[0].PROJ_OPT_MOVE_REMAINING_TO_STATUS = options.MoveStartRemainingPartsBackStatusDate;
00092 project.Project[0].PROJ_OPT_MULT_CRITICAL_PATHS = options.CalculateMultipleCriticalPaths;
00093 project.Project[0].PROJ_OPT_SPLIT_IN_PROGRESS = options.SplitInProgressTasks;
00094 project.Project[0].PROJ_OPT_SPREAD_ACT_COSTS = options.SpreadActualCosts;
00095 project.Project[0].PROJ_OPT_SPREAD_PCT_COMP = options.SpreadPercentCompleteToStatusDate;
00096 project.Project[0].PROJ_OPT_TASK_UPDATES_RES = options.AutoCalculateActualAndRemainingWorkAndCosts;
00097
00098 return project;
00099 }
00100
00101
00102
00103
00104
00105
00106 public static ProjectDataSet NewProject(string name)
00107 {
00108 ProjectDataSet project = NewProject();
00109
00110 project.Project[0].PROJ_NAME = name;
00111
00112 return project;
00113 }
00114
00115
00116
00117
00118
00119
00120
00121 public static ProjectDataSet NewProject(string name,
00122 Guid guid)
00123 {
00124 ProjectDataSet project = NewProject(name);
00125
00126 if (guid == Guid.Empty)
00127 {
00128 if (_AutoCreateGuid)
00129 {
00130 guid = Guid.NewGuid();
00131 }
00132 else
00133 {
00134 throw new ArgumentException( );
00135 }
00136 }
00137 project.Project[0].PROJ_UID = guid;
00138
00139 return project;
00140 }
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150 public static ProjectDataSet NewProject(string name,
00151 Guid guid,
00152 bool scheduleFromStart,
00153 DateTime scheduleFromDate)
00154 {
00155 ProjectDataSet project = NewProject(name, guid);
00156
00157 if (scheduleFromStart)
00158 {
00159 project.Project[0].PROJ_INFO_SCHED_FROM = true;
00160 project.Project[0].PROJ_INFO_START_DATE = scheduleFromDate;
00161 }
00162 else
00163 {
00164 project.Project[0].PROJ_INFO_SCHED_FROM = false;
00165 project.Project[0].PROJ_INFO_FINISH_DATE = scheduleFromDate;
00166 }
00167
00168 return project;
00169 }
00170
00171 #endregion
00172
00173 #region Resource Creation Methods
00174
00175
00176
00177
00178
00179 public static ResourceDataSet NewResource()
00180 {
00181 ResourceDataSet resourceDataSet = new ResourceDataSet();
00182
00183 ResourceDataSet.ResourcesRow resource = resourceDataSet.Resources.NewResourcesRow();
00184
00185 resource.RES_UID = Guid.NewGuid();
00186 resource.RES_NAME = string.Empty;
00187
00188 resourceDataSet.Resources.AddResourcesRow(resource);
00189 return resourceDataSet;
00190 }
00191
00192
00193
00194
00195
00196
00197 public static ResourceDataSet NewResource(Resource.Type type)
00198 {
00199 ResourceDataSet resourceDataSet = NewResource();
00200
00201 resourceDataSet.Resources[0].RES_TYPE = (int) type;
00202
00203 return resourceDataSet;
00204 }
00205
00206
00207
00208
00209
00210
00211 public static ResourceDataSet NewResource(string name)
00212 {
00213 ResourceDataSet resourceDataSet = NewResource();
00214
00215 resourceDataSet.Resources[0].RES_NAME = name;
00216
00217 return resourceDataSet;
00218 }
00219
00220
00221
00222
00223
00224
00225
00226 public static ResourceDataSet NewResource(string name,
00227 Resource.Type type)
00228 {
00229 ResourceDataSet resourceDataSet = NewResource(type);
00230
00231 resourceDataSet.Resources[0].RES_NAME = name;
00232
00233 return resourceDataSet;
00234 }
00235
00236
00237
00238
00239
00240
00241
00242
00243 public static ResourceDataSet NewResource(string name,
00244 Resource.Type type,
00245 Guid guid)
00246 {
00247 ResourceDataSet resource = NewResource(name, type);
00248
00249 resource.Resources[0].RES_UID = guid;
00250
00251 return resource;
00252 }
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262 public static ResourceDataSet NewResource(string name,
00263 Guid guid,
00264 string emailAddress,
00265 string group)
00266 {
00267 ResourceDataSet resourceDataSet = NewResource(name, Resource.Type.WorkResource);
00268
00269 resourceDataSet.Resources[0].RES_UID = guid;
00270 resourceDataSet.Resources[0].WRES_EMAIL = emailAddress;
00271 resourceDataSet.Resources[0].RES_GROUP = group;
00272
00273 return resourceDataSet;
00274 }
00275
00276 #endregion
00277
00278 #region Task Creation Methods
00279
00280
00281
00282
00283
00284 public static ProjectDataSet.TaskRow NewTask()
00285 {
00286 using (ProjectDataSet projectDataSet = new ProjectDataSet())
00287 {
00288 ProjectDataSet.TaskRow task = projectDataSet.Task.NewTaskRow();
00289
00290 if (AutoCreateGuids)
00291 {
00292 task.TASK_UID = Guid.NewGuid();
00293 }
00294
00295 return task;
00296 }
00297 }
00298
00299
00300
00301
00302
00303
00304 public static ProjectDataSet.TaskRow NewTask(string name)
00305 {
00306 ProjectDataSet.TaskRow task = NewTask();
00307
00308 task.TASK_NAME = name;
00309
00310 return task;
00311 }
00312
00313 #endregion
00314 }
00315 }