Пример #1
0
        /// <summary>
        /// Perform the conversion, writing data to the provided output path
        /// </summary>
        /// <param name="outputFilePath">Path of output xml file (should have the extension .xml so the MPXJ library automatically infers the file type)</param>
        public void Convert(string outputFilePath)
        {
            // Open and parse dPOW file
            pow = PlanOfWork.OpenJson(inputFilePath);

            // Create project file
            project = new ProjectFile();

            // Insert data to project file
            InsertDataToProject();

            // Write file to mpx
            ProjectWriter mpxWriter = ProjectWriterUtility.getProjectWriter(outputFilePath);

            mpxWriter.write(project, outputFilePath);
        }
Пример #2
0
        public void process(string inputFile, string outputFile)
        {
            Console.Out.WriteLine("Reading input file started.");
            DateTime    start       = DateTime.Now;
            ProjectFile projectFile = new UniversalProjectReader().read(inputFile);
            TimeSpan    elapsed     = DateTime.Now - start;

            Console.Out.WriteLine("Reading input file completed in " + elapsed.TotalMilliseconds + "ms.");

            Console.Out.WriteLine("Writing output file started.");
            start = DateTime.Now;
            ProjectWriter writer = ProjectWriterUtility.getProjectWriter(outputFile);

            writer.write(projectFile, outputFile);
            elapsed = DateTime.Now - start;
            Console.Out.WriteLine("Writing output completed in " + elapsed.TotalMilliseconds + "ms.");
        }
Пример #3
0
        public void process(string inputFile, string outputFile)
        {
            Console.Out.WriteLine("Reading input file started.");
            DateTime      start       = DateTime.Now;
            ProjectReader reader      = ProjectReaderUtility.getProjectReader(inputFile);
            ProjectFile   projectFile = reader.read(inputFile);
            long          elapsed     = DateTime.Now.Ticks - start.Ticks;

            Console.Out.WriteLine("Reading input file completed in " + elapsed + "ms.");

            Console.Out.WriteLine("Writing output file started.");
            start = DateTime.Now;
            ProjectWriter writer = ProjectWriterUtility.getProjectWriter(outputFile);

            writer.write(projectFile, outputFile);
            elapsed = DateTime.Now.Ticks - start.Ticks;
            Console.Out.WriteLine("Writing output completed in " + elapsed + "ms.");
        }
Пример #4
0
 public MppXml(string localFileName)
 {
     try
     {
         string        xmlFileName = localFileName + ".xml";
         ProjectReader reader      = ProjectReaderUtility.getProjectReader(localFileName);
         ProjectFile   projectFile = reader.read(localFileName);
         ProjectWriter writer      = ProjectWriterUtility.getProjectWriter(xmlFileName);
         writer.write(projectFile, xmlFileName);
         XmlDocument tmpDoc = new XmlDocument();
         tmpDoc.Load(xmlFileName);
         xmlDocument = tmpDoc;
         File.Delete(localFileName);
         File.Delete(xmlFileName);
     }
     catch (Exception)
     {
     }
 }
Пример #5
0
        public void process(string filename)
        {
            //
            // Create a ProjectFile instance
            //
            ProjectFile file = new ProjectFile();

            //
            // Uncomment these lines to test the use of alternative
            // delimiters and separators for MPX file output.
            //
            //file.setDelimiter(';');
            //file.setDecimalSeparator(',');
            //file.setThousandsSeparator('.');

            //
            // Add a default calendar called "Standard"
            //
            ProjectCalendar calendar = file.addDefaultBaseCalendar();

            //
            // Add a holiday to the calendar to demonstrate calendar exceptions
            //
            calendar.addCalendarException(ParseDate("2006-03-13"), ParseDate("2006-03-13"));

            //
            // Retrieve the project properties and set the start date. Note Microsoft
            // Project appears to reset all task dates relative to this date, so this
            // date must match the start date of the earliest task for you to see
            // the expected results. If this value is not set, it will default to
            // today's date.
            //
            ProjectProperties properties = file.ProjectProperties;

            properties.StartDate = ParseDate("2003-01-01");

            //
            // Set a couple more properties just for fun
            //
            properties.ProjectTitle = "Created by MPXJ";
            properties.Author       = "Jon Iles";

            //
            // Add resources
            //
            Resource resource1 = file.addResource();

            resource1.Name = "Resource1";

            Resource resource2 = file.addResource();

            resource2.Name = "Resource2";

            //
            // This next line is not required, it is here simply to test the
            // output file format when alternative separators and delimiters
            // are used.
            //
            resource2.MaxUnits = NumberHelper.getDouble(50.0);

            //
            // Create a summary task
            //
            Task task1 = file.addTask();

            task1.Name = "Summary Task";

            //
            // Create the first sub task
            //
            Task task2 = task1.addTask();

            task2.Name     = "First Sub Task";
            task2.Duration = Duration.getInstance(10.5, TimeUnit.DAYS);
            task2.Start    = ParseDate("2003-01-01");

            //
            // We'll set this task up as being 50% complete. If we have no resource
            // assignments for this task, this is enough information for MS Project.
            // If we do have resource assignments, the assignment record needs to
            // contain the corresponding work and actual work fields set to the
            // correct values in order for MS project to mark the task as complete
            // or partially complete.
            //
            task2.PercentageComplete = NumberHelper.getDouble(50.0);
            task2.ActualStart        = ParseDate("2003-01-01");

            //
            // Create the second sub task
            //
            Task task3 = task1.addTask();

            task3.Name     = "Second Sub Task";
            task3.Start    = ParseDate("2003-01-11");
            task3.Duration = Duration.getInstance(10, TimeUnit.DAYS);

            //
            // Link these two tasks
            //
            task3.addPredecessor(task2, RelationType.FINISH_START, null);

            //
            // Add a milestone
            //
            Task milestone1 = task1.addTask();

            milestone1.Name     = "Milestone";
            milestone1.Start    = ParseDate("2003-01-21");
            milestone1.Duration = Duration.getInstance(0, TimeUnit.DAYS);
            milestone1.addPredecessor(task3, RelationType.FINISH_START, null);

            //
            // This final task has a percent complete value, but no
            // resource assignments. This is an interesting case it it requires
            // special processing to generate the MSPDI file correctly.
            //
            Task task4 = file.addTask();

            task4.Name               = "Next Task";
            task4.Duration           = Duration.getInstance(8, TimeUnit.DAYS);
            task4.Start              = ParseDate("2003-01-01");
            task4.PercentageComplete = NumberHelper.getDouble(70.0);
            task4.ActualStart        = ParseDate("2003-01-01");

            //
            // Assign resources to tasks
            //
            ResourceAssignment assignment1 = task2.addResourceAssignment(resource1);
            ResourceAssignment assignment2 = task3.addResourceAssignment(resource2);

            //
            // As the first task is partially complete, and we are adding
            // a resource assignment, we must set the work and actual work
            // fields in the assignment to appropriate values, or MS Project
            // won't recognise the task as being complete or partially complete
            //
            assignment1.Work       = Duration.getInstance(80, TimeUnit.HOURS);
            assignment1.ActualWork = Duration.getInstance(40, TimeUnit.HOURS);

            //
            // If we were just generating an MPX file, we would already have enough
            // attributes set to create the file correctly. If we want to generate
            // an MSPDI file, we must also set the assignment start dates and
            // the remaining work attribute. The assignment start dates will normally
            // be the same as the task start dates.
            //
            assignment1.RemainingWork = Duration.getInstance(40, TimeUnit.HOURS);
            assignment2.RemainingWork = Duration.getInstance(80, TimeUnit.HOURS);
            assignment1.Start         = ParseDate("2003-01-01");
            assignment2.Start         = ParseDate("2003-01-11");

            //
            // Write a 100% complete task
            //
            Task task5 = file.addTask();

            task5.Name               = "Last Task";
            task5.Duration           = Duration.getInstance(3, TimeUnit.DAYS);
            task5.Start              = ParseDate("2003-01-01");
            task5.PercentageComplete = NumberHelper.getDouble(100.0);
            task5.ActualStart        = ParseDate("2003-01-01");

            //
            // Write the file
            //
            ProjectWriter writer = ProjectWriterUtility.getProjectWriter(filename);

            writer.write(file, filename);
        }