valid(shift, aula);
valid(shift, newLesson);
	public Object run(		KeyLesson aulaAntiga,		InfoLesson aulaNova,		InfoShift infoShift)		throws FenixServiceException {		IAula aula = null;		InfoLessonServiceResult result = null;		try {			ISuportePersistente sp = SuportePersistenteOJB.getInstance();			IAulaPersistente aulaPersistente = sp.getIAulaPersistente();			ISala salaAntiga =				sp.getISalaPersistente().readByName(					aulaAntiga.getKeySala().getNomeSala());			ISala salaNova =				sp.getISalaPersistente().readByName(					aulaNova.getInfoSala().getNome());			IExecutionPeriod executionPeriod =				Cloner.copyInfoExecutionPeriod2IExecutionPeriod(					aulaNova						.getInfoDisciplinaExecucao()						.getInfoExecutionPeriod());			aula =				aulaPersistente.readByDiaSemanaAndInicioAndFimAndSala(					aulaAntiga.getDiaSemana(),					aulaAntiga.getInicio(),					aulaAntiga.getFim(),					salaAntiga,					executionPeriod);			IAula newLesson =				new Aula(					aulaNova.getDiaSemana(),					aulaNova.getInicio(),					aulaNova.getFim(),					aulaNova.getTipo(),					salaNova,					null);			if (aula != null) {				result = valid(newLesson);				if (result.getMessageType() == 1) {					throw new InvalidTimeIntervalServiceException();				}				boolean resultB =					validNoInterceptingLesson(newLesson, aula, executionPeriod);				ITurno shift =					(ITurno) sp.getITurnoPersistente().readByOID(						Turno.class,						infoShift.getIdInternal());				InfoShiftServiceResult infoShiftServiceResult =					valid(shift, aula);				if (result.isSUCESS() && resultB && infoShiftServiceResult.isSUCESS()) {					// TODO: Temporary solution to lock object for write. In the future we'll use readByUnique()					aula = (IAula) aulaPersistente.readByOId(aula, true);					aula.setDiaSemana(aulaNova.getDiaSemana());					aula.setInicio(aulaNova.getInicio());					aula.setFim(aulaNova.getFim());					aula.setTipo(aulaNova.getTipo());					aula.setSala(salaNova);				} else if (!infoShiftServiceResult.isSUCESS()) {					throw new InvalidLoadException(infoShiftServiceResult.toString());				}			}		} catch (ExcepcaoPersistencia ex) {			throw new FenixServiceException(ex.getMessage());		}		return result;	}