Integer weekOfQuinzenalStart, InfoRoomOccupation infoRoomOccupation, InfoShift infoShift)
Integer weekOfQuinzenalStart, InfoRoomOccupationEditor infoRoomOccupation, InfoShift infoShift)
    public InfoLessonServiceResult run(DiaSemana weekDay, Calendar begin, Calendar end, Integer frequency,     		Integer weekOfQuinzenalStart, InfoRoomOccupation infoRoomOccupation, InfoShift infoShift)            throws FenixServiceException {    	        final ExecutionPeriod executionPeriod = rootDomainObject.readExecutionPeriodByOID(                        infoShift.getInfoDisciplinaExecucao().getInfoExecutionPeriod().getIdInternal());        final Shift shift = rootDomainObject.readShiftByOID(infoShift.getIdInternal());        InfoLessonServiceResult result = validTimeInterval(begin, end);        if (result.getMessageType() == 1) {            throw new InvalidTimeIntervalServiceException();        }                boolean resultB = true;        if(infoRoomOccupation != null) {             resultB = validNoInterceptingLesson(infoRoomOccupation);        }                if (result.isSUCESS() && resultB) {        	                InfoShiftServiceResult infoShiftServiceResult = valid(shift, begin, end);                if (infoShiftServiceResult.isSUCESS()) {                                        RoomOccupation roomOccupation = null;                    if(infoRoomOccupation != null) {                         roomOccupation = new RoomOccupation();                        roomOccupation.setDayOfWeek(infoRoomOccupation.getDayOfWeek());                        roomOccupation.setStartTime(infoRoomOccupation.getStartTime());                        roomOccupation.setEndTime(infoRoomOccupation.getEndTime());                                           }                                       OldRoom sala = null;                    if(infoRoomOccupation.getInfoRoom() != null) {                        sala = OldRoom.findOldRoomByName(infoRoomOccupation.getInfoRoom().getNome());                                           }                                        if(roomOccupation != null) {                        roomOccupation.setRoom(sala);                                                final OccupationPeriod period = rootDomainObject.readOccupationPeriodByOID(infoRoomOccupation.getInfoPeriod().getIdInternal());                        roomOccupation.setPeriod(period);                    }                    Lesson aula2 = new Lesson(weekDay, begin, end, infoShift.getTipo(), sala,                            roomOccupation, shift, weekOfQuinzenalStart, frequency);                    aula2.setExecutionPeriod(executionPeriod);                } else {                    throw new InvalidLoadException(infoShiftServiceResult.toString());                }        } else {            if (!resultB) {                throw new InterceptingLessonException();            } else {                result.setMessageType(2);                            }        }        return result;    }