Пример #1
0
RequestResponse AlbumRequest::invoke(const QStringList &arguments, const QString &who, const RequestInvocationContext &context)
{
	Q_UNUSED(who);

	const QString &id = arguments.join(QChar::Space);

	InformationResourceRepository &repository = context.informationResourceRepository();
	IdGenerator &idGenerator = context.idGenerator();

	IInformationResource *resource = repository.get(id);

	if (resource)
	{
		IIterator<Album> *iterator = resource->iterator<Album>();

		if (iterator)
		{
			Album *album = iterator->next(resource, repository, idGenerator);

			if (album)
			{
				return RequestResponse("templates/Album.qml", album);
			}

			return RequestResponse("templates/NoMoreData.qml", nullptr);
		}
	}

	return RequestResponse();
}
void OfertaLaboral::AltaAsignacionCargo(Date* fechaEfectivizacion, int sueldo)
{
    EstudianteController* ec = EstudianteController::getInstance();
    Estudiante* e = ec->getEstudiante();
    IIterator * it = e->getInscripciones()->getIterator();
    bool noEncontrada = true;
    while((it->hasCurrent())&&(noEncontrada))
    {
        Inscripcion* insc;
        if ((insc = dynamic_cast<Inscripcion*> (it->getCurrent())) != NULL )
        {
            if (insc->EstInscripto(this->numExpediente))
            {
                Efectivizacion* efe = new Efectivizacion(sueldo, fechaEfectivizacion);
                insc->setEfectivizacion(efe);
                noEncontrada = false;
            }

        } else
        {
            throw "OfertaLaboral-> El objeto no es de la clase Inscripcion.";
        }
        it->next();
    }
    delete it;
}
Пример #3
0
 inline bool Init(){
     base_->Init();
     utils::Assert( base_->Next(), "ThreadBufferIterator: input can not be empty" );
     oshape_ = base_->Value().data.shape;
     batch_size_ = base_->Value().batch_size;
     base_->BeforeFirst();
     return true;
 }
Пример #4
0
void NodeVisitor::visitChildren_via_iter(AbstractNode& node)
{
	IIterator* i = node.createIterator();
	for (i->First(); !i->IsDone(); i->Next()) {
		i->CurrentItem()->accept(*this);
	}
	delete i;
}
Пример #5
0
 inline bool LoadNext(DataBatch &val) {
   if (base_->Next()) {
     val.CopyFromDense(base_->Value());
     return true;
   } else {
     return false;
   }
 }
Пример #6
0
void List::addAll(const IList* list){
  IIterator* iter = list->iterator();
  assert(iter != nullptr);
  while(iter->hasNext()){
    addBack(iter->next());
  }
  delete iter;  // don't forget to delete your iterator
}
Пример #7
0
void
ImportsList::initialise( IList<IPosition<SourceToken> >& importPositions )
{	
	IIterator<IPosition<SourceToken> >* it = importPositions.elements();
	while ( it->hasNext() )
	{
		this->imports->insertLast( new Import( this->cu, it->next() ) );
	}
	delete it;
	this->addBlank();
}
Пример #8
0
RequestResponse ArtistRequest::invoke(const QStringList &arguments, const QString &who, const RequestInvocationContext &context)
{
	const QString &id = arguments.join(QChar::Space);

	InformationResourceRepository &repository = context.informationResourceRepository();
	IdGenerator &idGenerator = context.idGenerator();

	IInformationResource *resource = repository.get(id);

	if (resource)
	{
		IIterator<Artist> *iterator = resource->iterator<Artist>();

		if (iterator)
		{
			Artist *artist = iterator->next(resource, repository, idGenerator);

			if (artist)
			{
				return RequestResponse("templates/Artist.qml", artist);
			}

			return RequestResponse("templates/NoMoreData.qml", nullptr);
		}
	}
	else
	{
		RequestHandler requestHandler(repository, idGenerator);

		Artist *artist = requestHandler
			.get<Artist>("artist.getInfo"
				, as::artist = arguments.join(QChar::Space)
				, as::username = who
			);

		if (artist)
		{
			return RequestResponse("templates/Artist.qml", artist);
		}

		NotFound *notFound = new NotFound();
		notFound->setTypeName("Artist");

		return RequestResponse("templates/NotFound.qml", notFound);
	}

	return RequestResponse();
}
Пример #9
0
RequestResponse TagsRequest::invoke(const QStringList &arguments, const QString &who, const RequestInvocationContext &context)
{
	Q_UNUSED(who);

	const QString &id = arguments.join(QChar::Space);

	InformationResourceRepository &repository = context.informationResourceRepository();
	IdGenerator &idGenerator = context.idGenerator();

	IInformationResource *resource = repository.get(id);

	if (resource)
	{
		IIterator<Tag> *iterator = resource->iterator<Tag>();

		if (iterator)
		{
			QList<QObject *> tags;

			for (int i = 0; i < 10; i++)
			{
				Tag *tag = iterator->next(resource, repository, idGenerator);

				if (!tag)
				{
					if (!i)
					{
						return RequestResponse("templates/NoMoreData.qml", nullptr);
					}

					break;
				}
				else
				{
					tags << tag;
				}
			}

			Tags *envelope = new Tags();
			envelope->setTags(tags);

			return RequestResponse("templates/Tags.qml", envelope);
		}
	}

	return RequestResponse();
}
// DarDeBajaLlamado
void cmdDarDeBajaLlamado::ejecutarComando()
{
    string numExpediente;
    Fabrica* fab = Fabrica::getInstance();
    IOfertaLaboralController *ctrlOL = fab->getIOfertaLaboralController();

    try
    {
        // muestro las ofertas
        IDictionary* dataOfertas = ctrlOL->ListarOfertas();

        cout << "Lista de Ofertas Laborales:\n";

        IIterator *it = dataOfertas->getIterator();
        while (it->hasCurrent())
        {
            DataOfertaLaboral *dOferta;
            if ( (dOferta = dynamic_cast<DataOfertaLaboral*> (it->getCurrent())) != NULL )
            {
                cout << "NRO. EXPEDIENTE: " << dOferta->getNumExpediente() << ", TITULO:" << dOferta->getTitulo() << "\n";
            } else
            {
                throw "cmdDarDeBajaLlamado -> El objeto no es de la clase DataOfertaLaboral.";
            }
            it->next();
        }
        delete it;

        // selecciono el llamado
        cout<< "Seleccione una Oferta Laboral indicando el Nro. Expediente: \n> ";
        cin >> numExpediente;

        ctrlOL->SeleccionarOferta(numExpediente, dataOfertas);

        // borro el llamado
        ctrlOL->DarBajaLlamado();

        cout << "\n- El Llamado se ha dado de baja correctamente.\n\n";
    }
    catch (const char* e)
    {
    	throw;
    }
}
Пример #11
0
 inline bool Init() {
   base_->Init();
   utils::Assert(base_->Next(), "ThreadBufferIterator: input can not be empty");
   oshape_ = base_->Value().data.shape_;
   batch_size_ = base_->Value().batch_size;
   label_width_ = base_->Value().label.size(1);
   for (size_t i = 0; i < base_->Value().extra_data.size(); ++i){
     extra_shape_.push_back(base_->Value().extra_data[i].shape_);
   }
   base_->BeforeFirst();
   return true;
 }
Пример #12
0
    IIterator<DataBatch>* CreateIterator( const std::vector< std::pair<std::string,std::string> > &cfg ){
        size_t i = 0;
        IIterator<DataBatch>* it = NULL;
        for(; i < cfg.size(); ++i ){
            const char* name = cfg[i].first.c_str();
            const char* val  = cfg[i].second.c_str();
            if( !strcmp( name, "iter" ) ){
                if( !strcmp( val, "mnist") ){
                    utils::Assert( it == NULL );
                    it = new MNISTIterator(); continue;
                }
                if( !strcmp( val, "spfeat") ){
                    utils::Assert( it == NULL );
                    it = new SpFeatIterator(); continue;
                }
                if( !strcmp( val, "cifar") ) {
                    utils::Assert( it == NULL );
                    it = new CIFARIterator(); continue;
                }
                if( !strcmp( val, "image") ) {
                    utils::Assert( it == NULL );
                    it = new BatchAdaptIterator( new ImageIterator() ); continue;
                }
                if( !strcmp( val, "imgbin")) {
                     utils::Assert( it == NULL );
                     it = new BatchAdaptIterator(new ThreadImagePageIterator()); continue;
                }
                if( !strcmp( val, "threadbuffer") ){
                    utils::Assert( it != NULL, "must specify input of threadbuffer" );
                    it = new ThreadBufferIterator( it );
                    continue;
                }
                utils::Error("unknown iterator type" );
            }

            if( it != NULL ){
                it->SetParam( name, val );
            }
        }
        utils::Assert( it != NULL, "must specify iterator by iter=itername" );
        return it;
    }
Пример #13
0
ICollection *Empresa::getDataSucursales()
{
    List* result = new List();
    IIterator * it = this->sucursales->getIterator();
    while(it->hasCurrent())
    {
        Sucursal *suc;
        if ((suc = dynamic_cast<Sucursal*> (it->getCurrent())) != NULL )
        {
            result->add(suc->getDataSucursal());
        } else
        {
            throw "Empresa -> El objeto no es de la clase Sucursal.";
        }
        it->next();
    }
    delete it;

    return result;
}
Пример #14
0
std::string List::toString() const {
  bool start = true;
  std::string strOut = "";
  IIterator* iter = iterator();
  if(!iter->hasNext()){ // empty list
    strOut += "[]";
  }
  else{
    while(iter->hasNext()){
      if(start){
        strOut += '[';
      }
      else{
        strOut += ',';
      }
      start = false;
      strOut += std::to_string(iter->next());
    }
    strOut += ']';
  }
  delete iter;
  return strOut;
}
Пример #15
0
 inline void BeforeFirst() {
   base_->BeforeFirst();
 }
Пример #16
0
// Sugiere una materia de las asignaturas seleccionadas tal que algun Estudiante haya aprobada.
// En caso que no exista se retorna un ICollection vacio (List).
IDictionary *Criterio2::devolverListaAsignatura(IDictionary* asigsUsuario)
{
    	// pedimos los estudiantes al manejador y vamos recorriendo uno a uno hasta encontrar alguno que tenga materias
	// aprobadas, en ese caso retornamos esa lista
    ManejadorEstudiante *eMgr = ManejadorEstudiante::getInstance();
    IDictionary *e = eMgr->getEstudiantes();

    bool found = false;

    ICollection *aprobadas;
    IDictionary *asignaturasNuevas = new OrderedDictionary();
    IIterator * it = e->getIterator();
    Estudiante *est;
    ICollectible *col;
    ICollectible *col2;
    ICollectible *col3;
    while(it->hasCurrent() && !found)
    {
        col = it->getCurrent();
        if ((est = dynamic_cast<Estudiante*> (col)) != NULL)
        {
            if(est->getAprobadas() != NULL)
            {
                aprobadas = est->getAprobadas();
                IIterator * it2 = aprobadas->getIterator();
                while(it2->hasCurrent() && !found)
                {
                    col2 = it2->getCurrent();
                    Aprobacion* apro;
                    if ((apro = dynamic_cast<Aprobacion*> (col2)) != NULL)
                    {
                        Asignatura* asig = apro->getAsignatura();
                        
                        IIterator * it3 = asigsUsuario->getIterator();
                        while(it3->hasCurrent() && !found)
                        {
                            col3 = it3->getCurrent();
                            Asignatura* asigUsu;
                            if ((asigUsu = dynamic_cast<Asignatura*> (col3)) != NULL)
                            {                                
                                if(asig->getCodigo() == asigUsu->getCodigo())
                                {
                                    Integer* cod = new Integer(asig->getCodigo());
                                    asignaturasNuevas->add(cod, asigUsu);
                                    found = true;
                                }
                            } else {
                                throw "Criterio1: el parametro no es del tipo Asignatura";
                            }
                            it3->next();
                        }
                        delete it3;
                    } else {
                        throw "Criterio1: el parametro no es del tipo Aprobacion";
                    }
                    it2->next();
                }
                delete it2;
            }
        } else {
            throw "Criterio1: el parametro no es del tipo Estudiante";
        }
        it->next();
    }
    delete it;
    
    //if(!found)
        //asignaturas = new OrderedDictionary();
    
    return asignaturasNuevas;
}
Пример #17
0
 inline void SetParam(const char *name, const char *val) {
   base_->SetParam(name, val);
 }
void InMemoryIndexBuilder::finalize(DocumentTable * documentTable)
{

		documentTable->finalize();
		// write the posting list on file and change the pointer to offset in file (invertedFilePath)
		// the offstream structure file is :
		//		Dictionary offset in this file
		//		Terms number in Dictionary
		//		Compressor ID
		//		DocumentMetaDatas number in DocumentTable
		//		DocumentMetaDatas
		//		posting lists
		//		Dictionary
		ofstream *outputFile = FileManager::openOfstream(outputFilePath);
			

		// prepare a place for the dictionary offset
		unsigned int offsetPlacer = 0;
		outputFile->write((const char *)&offsetPlacer, sizeof(unsigned int));

		// write the terms number in HashTableDictionary
		outputFile->write((const char *)&iDictionary->getTermsNumber(), sizeof(unsigned long long));

		// write the Compressor ID
		outputFile->write((const char *)&iCompressor->getCompressorId(), sizeof(int));

		// write the DocumentMetaDatas number in DocumentTable
		outputFile->write((const char *)&documentTable->getDocumentNumber(), sizeof(unsigned int));

		// write the DocumentMetaDatas
		outputFile->write((const char *)documentTable->getFinalizedDocumentTable(), documentTable->getDocumentNumber()*sizeof(DocumentMetaData));

		// write the posting lists contiguously
		IIterator* termIterator = iDictionary->getIterator();
		Term * term;
		int i = 0;
		while ((term = static_cast<Term*>(termIterator->getNext())) != nullptr) {
			list<DocumentTerm>* postingListAsList = static_cast<list<DocumentTerm>*>(term->postingList);
			unsigned int  postingListOffset = (unsigned int)outputFile->tellp();
			iCompressor->compressAndWrite(outputFile, postingListAsList);
			postingListAsList->erase(postingListAsList->begin(), postingListAsList->end());
			delete term->postingList;
			term->postingList = (void *)postingListOffset;
			i++;
		}
		delete termIterator;

		// save the dictionary offset
		unsigned int  dictionaryOffset = (unsigned int)outputFile->tellp();

		// write the terms of the dictionary
		termIterator = iDictionary->getIterator();
		while ((term = static_cast<Term*>(termIterator->getNext())) != nullptr) {
			*outputFile << term;
		}
		outputFile->seekp(0);
		outputFile->write((const char *)&dictionaryOffset, sizeof(unsigned int));
		outputFile->close();
		delete termIterator;
		delete outputFile;
		
}
void cmdAnotarBorrarNotificaciones::ejecutarComando()
{
    string cedEstudiante;

    Fabrica* fab = Fabrica::getInstance();
    IEstudianteController* cEstudiante = fab->getIEstudianteController();
    IEmpresaController* cEmpresa = fab->getIEmpresaController();

    try
    {
        //LISTAR ESTUDIANTES
        IDictionary *dataEstudiantes = cEstudiante->ListarEstudiantesRegistrados();
        cout << "Lista de Estudiantes registrados en el Sistema:\n";
        IIterator *it = dataEstudiantes->getIterator();
        while(it->hasCurrent())
        {
            DataEstudiante* dEstudiante;
            if ((dEstudiante = dynamic_cast<DataEstudiante*> (it->getCurrent())) != NULL)
            {
                cout << "Cedula: " + dEstudiante->getCedula() + ", Apellido: " + dEstudiante->getApellido() + "\n";
            } else
            {
                throw "cmdListarNotificacionesEstudiante -> El objeto no es de la clase DataEstudiante.";
            }
            it->next();
        }
        delete it;

        //SELECCIONA ESTUDIANTE
        cout<< "Seleccione un Estudiante indicando la cedula: \n";
        cin >> cedEstudiante;
        cEstudiante->SeleccionarEstudiante(cedEstudiante, dataEstudiantes);

        //ANOTAR O BORRAR ESTUDIANTE DE NOTIFICACIONES
        Estudiante* estRecordado =cEstudiante->getEstudiante();
        char opcion;
        cout<< "Indique si desea anotar (A) o borrar (B) a el estudiante seleccionado de las notificaciones: \n";
        cin >> opcion;
        IDictionary* empresas = cEmpresa->getEmpresas();
        IIterator *it2 = empresas->getIterator();
        while (it2->hasCurrent())
        {
            Empresa* emp;
            if ((emp = dynamic_cast<Empresa*> (it2->getCurrent())) != NULL)
            {
                IDictionary* sucursales = emp->getSucursales();
                IIterator *it3 = sucursales->getIterator();
                while(it3->hasCurrent())
                {
                    Sucursal* suc;
                    if ((suc = dynamic_cast<Sucursal*> (it3->getCurrent())) != NULL)
                    {
                        IDictionary* secciones = suc->getSecciones();
                        IIterator *it4 = secciones->getIterator();
                        while (it4->hasCurrent())
                        {
                            Seccion* secc;
                            if ((secc = dynamic_cast<Seccion*> (it4->getCurrent())) != NULL)
                            {
                                //IObserver *iobs = dynamic_cast<IObserver*> (estRecordado);
                                IObserver *iobs = estRecordado;
                                switch (opcion)
                                {
                                    case 'A':
                                        secc->addObserver(iobs);
                                        break;
                                    case 'B':
                                        secc->removeObserver(iobs);
                                    break;
                                }
                            } else
                            {
                                throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Seccion.";
                            }
                            it4->next();
                        }
                        delete it4;
                    } else
                    {
                        throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Sucursal.";
                    }
                    it3->next();
                }
                delete it3;
            } else
            {
                throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Empresa.";
            }
            it2->next();
        }
        delete it2;

        switch (opcion)
        {
            case 'A':
                cout << "\n- El Estudiante se ha Anotado a las Notificaciones.\n\n";
                break;
            case 'B':
                cout << "\n- El Estudiante se ha Borrado de las Notificaciones.\n\n";
            break;
        }

    }
    catch (const char* e)
    {
    	throw;
    }
}