code: public void processCalendar(Row calendarRow, Map<Integer, Row> workPatternMap, Map<Integer, List<Row>> workPatternAssignmentMap, Map<Integer, List<Row>> exceptionAssignmentMap, Map<Integer, List<Row>> timeEntryMap, Map<Integer, DayType> exceptionTypeMap)
     {
        //
        // Create the calendar and add the default working hours
        //
        ProjectCalendar calendar = m_project.addCalendar();
        Integer dominantWorkPatternID = calendarRow.getInteger("DOMINANT_WORK_PATTERN");
        calendar.setUniqueID(calendarRow.getInteger("CALENDARID"));
        processWorkPattern(calendar, dominantWorkPatternID, workPatternMap, timeEntryMap, exceptionTypeMap);
        calendar.setName(calendarRow.getString("NAMK"));
  
        //
        // Add any additional working weeks
        //
        List<Row> rows = workPatternAssignmentMap.get(calendar.getUniqueID());
        if (rows != null)
        {
           for (Row row : rows)
           {
              Integer workPatternID = row.getInteger("WORK_PATTERN");
              if (!workPatternID.equals(dominantWorkPatternID))
              {
                 ProjectCalendarWeek week = calendar.addWorkWeek();
                 week.setDateRange(new DateRange(row.getDate("START_DATE"), row.getDate("END_DATE")));
                 processWorkPattern(week, workPatternID, workPatternMap, timeEntryMap, exceptionTypeMap);
              }
           }
        }
  
        //
        // Add exceptions - not sure how exceptions which turn non-working days into working days are handled by Asta - if at all?
        //
        rows = exceptionAssignmentMap.get(calendar.getUniqueID());
        if (rows != null)
        {
           for (Row row : rows)
           {
              Date startDate = row.getDate("STARU_DATE");
              Date endDate = row.getDate("ENE_DATE");
              calendar.addCalendarException(startDate, endDate);
           }
        }
  
        m_eventManager.fireCalendarReadEvent(calendar);
     }
docs: Creates a ProjectCalendar instance from the Asta data.
  
  @param calendarRow basic calendar data
  @param workPatternMap work pattern map
  @param workPatternAssignmentMap work pattern assignment map
  @param exceptionAssignmentMap exception assignment map
  @param timeEntryMap time entry map
  @param exceptionTypeMap exception type map