0

I am exporting project in MS Project via MPXJ library and I have one question:
How to set specific date Saturday (or Sunday) as work day instead of weekend? (in ProjectCalendar or in another place)
For example 2014 oct 18 (it is Saturday) set as working day, but another Saturdays need to be weekend.

public ProjectCalendar initCalendar(ProjectFile projectfile, int calendarId, Date startDate, Date endDate) { 
        ProjectCalendar defaultCalendar = projectfile.addDefaultBaseCalendar();

        /*Setup standart working week*/
        defaultCalendar.setName("Standart");
        defaultCalendar.setWorkingDay(Day.MONDAY, DayType.WORKING);
        defaultCalendar.setWorkingDay(Day.THURSDAY, DayType.WORKING);
        defaultCalendar.setWorkingDay(Day.WEDNESDAY, DayType.WORKING);
        defaultCalendar.setWorkingDay(Day.TUESDAY, DayType.WORKING);
        defaultCalendar.setWorkingDay(Day.FRIDAY, DayType.WORKING); 
        defaultCalendar.setWorkingDay(Day.SATURDAY, DayType.NON_WORKING);
        defaultCalendar.setWorkingDay(Day.SUNDAY, DayType.NON_WORKING);


        ProjectCalendarHours pch;
        pch = defaultCalendar.addCalendarHours(Day.MONDAY);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);

        pch = defaultCalendar.addCalendarHours(Day.THURSDAY);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);

        pch = defaultCalendar.addCalendarHours(Day.WEDNESDAY);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);

        pch = defaultCalendar.addCalendarHours(Day.TUESDAY);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);

        pch = defaultCalendar.addCalendarHours(Day.FRIDAY);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);


        /* setup holydays*/
        List<Date> workingHollidays = DBHelper.getWorkingHolidays(ppmCalendarId, startDate, endDate);
        for (Date work : workingHollidays) {
            ProjectCalendarException ex = defaultCalendar.addCalendarException(work, work);
        }

        /*There is  I need change stendart week and setup 6-days working week (Saturday is work day) */
        /*something like that*/
        Date workindDay = new SimpleDateFormat("dd.MM.yyyy").parse("18.10.2014");
        defaultCalendar.setWorkingDay(workindDay, DayType.NON_WORKING); // This code not work
        pch = defaultCalendar.addCalendarHours(workindDay); // This code not work
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
        pch.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);
    }

and in ountput Microsoft Project xml will be tag like this:

<Calendar>
    ...
    <WeekDay>
        <DayType>
            0
        </DayType>
        <DayWorking>
            1
        </DayWorking>
        <TimePeriod>
            <FromDate>2014-10-18T00:00:00</FromDate>
            <ToDate>2014-10-18T23:59:00</ToDate>
        </TimePeriod>
        <WorkingTimes>
            <WorkingTime>
                <FromTime>09:00:00</FromTime> 
                <ToTime>13:00:00</ToTime>
            </WorkingTime>
            <WorkingTime>
                <FromTime>14:00:00</FromTime> 
                <ToTime>18:00:00</ToTime>
            </WorkingTime>
        </WorkingTimes>
    </WeekDay>
    ...
</Calendar>

Thanks.

theSemenov
  • 389
  • 4
  • 17

1 Answers1

1

I found answer.
There is the code to make custom date as working date:

Date workindDay = new SimpleDateFormat("dd.MM.yyyy").parse("18.10.2014"); 
ProjectCalendarException ex = defaultCalendar.addCalendarException(workindDay, workindDay);
ex.addRange(ProjectCalendar.DEFAULT_WORKING_MORNING);
ex.addRange(ProjectCalendar.DEFAULT_WORKING_AFTERNOON);

Order of range is important.

theSemenov
  • 389
  • 4
  • 17