QList<Utente*>* UtenteBasic::cercaUtenti(Database* db, QString str) {
    str = str.toLower();
    QList<Utente*>* utenti = db->getUtenti();

    QList<Utente*>* risultato = new QList<Utente*>();

    QList<Utente*>::iterator it;
    for (it = utenti->begin(); it != utenti->end(); ++it)
    {
        Utente* ut = *it;
        if(ut != this)
        {
            if(str == "")
                risultato->append(ut);
            else if(ut->getNome().toLower().contains(str) ||
                    ut->getCognome().toLower().contains(str) ||
                    ut->getUsername().toLower().contains(str))
                risultato->append(ut);
        }
    }
    return risultato;
}
Exemplo n.º 2
0
// METODO Database::saveUsersList
void Database::saveUsersList() const {

    QString path( "users.xml" );
    QFile file( path );
    file.open( QFile::WriteOnly );

    QXmlStreamWriter xmlWriter( &file );
    xmlWriter.setAutoFormatting( true );
    xmlWriter.writeStartDocument();
    xmlWriter.writeStartElement( "users" );

    QMapIterator<QString, SmartUtente> it( database_rapp->users_list );
    while( it.hasNext() ) {
        Utente* u = it.next().value().operator ->();

        // <user>
        xmlWriter.writeStartElement( "user" );
        xmlWriter.writeAttribute( "login", u->getUsername() );

        if( dynamic_cast<UtenteBasic*>( u ) )
            xmlWriter.writeAttribute( "type", "basic" );
        else if( dynamic_cast<UtenteExecutive*>( u ) )
            xmlWriter.writeAttribute( "type", "executive" );
        else if( dynamic_cast<UtenteBusiness*>( u ) )
            xmlWriter.writeAttribute( "type", "business" );

        // <profile>
        xmlWriter.writeStartElement( "profile" );
        xmlWriter.writeTextElement( "name", u->getName() );
        xmlWriter.writeTextElement( "surname", u->getSurname() );
        // <birthday>
        xmlWriter.writeStartElement( "birthday" );
        QDate birthday = u->getBirthday();
        if( birthday.isValid() ) {
            QStringList list = birthday.toString( "yyyy/MM/dd" ).split( "/" );
            xmlWriter.writeTextElement( "year", list[0] );
            xmlWriter.writeTextElement( "month", list[1] );
            xmlWriter.writeTextElement( "day", list[2] );
        }
        xmlWriter.writeEndElement();
        // </birthday>
        xmlWriter.writeTextElement( "maritialStatus", u->getMaritialStatus() );
        xmlWriter.writeEndElement();
        // </profile>

        // <net>
        xmlWriter.writeStartElement( "net" );
        QVectorIterator<SmartUtente> contacts_it( u->getContactsList() );
        while( contacts_it.hasNext() ) {
            xmlWriter.writeTextElement( "contact", contacts_it.next()->getUsername() );
        }
        xmlWriter.writeEndElement();
        // </net>

        // <educations>
        xmlWriter.writeStartElement( "educations" );
        Formazione::Iteratore educations_it( u->getEducationsIterator() );
        while( educations_it.hasNext() ) {
            // <title>
            SmartTitolo t = educations_it.next();
            xmlWriter.writeStartElement( "title" );
            xmlWriter.writeTextElement( "school", t->getSchool());

            // <dateAttended>
            xmlWriter.writeStartElement( "dateAttended" );
            QDate d = t->getDateAttended();
            if( d.isValid() ) {
                QStringList list = d.toString( "yyyy/MM/dd" ).split( "/" );
                xmlWriter.writeTextElement( "year", list[0] );
                xmlWriter.writeTextElement( "month", list[1] );
                xmlWriter.writeTextElement( "day", list[2] );
            }
            xmlWriter.writeEndElement();
            // </dateAttended>

            xmlWriter.writeTextElement( "fieldOfStudy", t->getFieldOfStudy() );
            xmlWriter.writeEndElement();
            // </title>
        }
        xmlWriter.writeEndElement();
        // </educations>

        // <experiences>
        xmlWriter.writeStartElement( "experiences" );
        Esperienza::Iteratore it_ex( u->getExperiencesIterator() );
        while( it_ex.hasNext() ) {
            // <job>
            SmartLavoro j = it_ex.next();
            xmlWriter.writeStartElement( "job" );
            xmlWriter.writeTextElement( "companyName", j->getCompanyName() );
            xmlWriter.writeTextElement( "title", j->getTitle() );
            // <begin>
            xmlWriter.writeStartElement( "begin" );
            QDate begin = j->getBegin();
            if( begin.isValid() ) {
                QStringList list = begin.toString( "yyyy/MM/dd" ).split( "/" );
                xmlWriter.writeTextElement( "year", list[0] );
                xmlWriter.writeTextElement( "month", list[1] );
                xmlWriter.writeTextElement( "day", list[2] );
            }
            xmlWriter.writeEndElement();
            // </begin>
            // <end>
            xmlWriter.writeStartElement( "end" );
            QDate end = j->getEnd();
            if( end.isValid() ) {
                QStringList list = end.toString( "yyyy/MM/dd" ).split( "/" );
                xmlWriter.writeTextElement( "year", list[0] );
                xmlWriter.writeTextElement( "month", list[1] );
                xmlWriter.writeTextElement( "day", list[2] );
            }
            xmlWriter.writeEndElement();
            // </end>
            xmlWriter.writeEndElement();
            // </job>
        }
        xmlWriter.writeEndElement();
        // </experiences>

        xmlWriter.writeEndElement();
        // </user>
    }

    // </users>
    xmlWriter.writeEndElement();
    xmlWriter.writeEndDocument();
}
Exemplo n.º 3
0
void DB::load()
{
    QFile* file = new QFile("../database.xml");
        if(file->exists()){
            if(!file->open(QFile::ReadOnly | QFile::Text)){
                QMessageBox err;
                err.setText("Errore nell'apertura del file");
                err.exec();
            }
            else{
                /*
                  The QDomDocument class represents an XML document.
                  The QDomDocument class represents the entire XML document.
                  Conceptually, it is the root of the document tree, and provides the
                  primary access to the document's data.
                */
                QDomDocument doc;
                /*
                  This is an overloaded function.
                  This function reads the XML document from the IO device dev,
                  returning true if the content was successfully parsed; otherwise returns false.
                */
                if(!doc.setContent(file)){
                    return;
                }
                //The QDomElement class represents one element in the DOM tree.
                QDomElement docElem = doc.documentElement();
                /*
                  The QDomNodeList class is a list of QDomNode objects.
                  Lists can be obtained by QDomDocument::elementsByTagName() and QDomNode::childNodes().
                  The Document Object Model (DOM) requires these lists to be "live": whenever you change
                  the underlying document, the contents of the list will get updated.
                */
                QDomNodeList nodes = docElem.elementsByTagName("utente");
                for(int i=0; i<nodes.count(); ++i)
                {
                    QDomElement el = nodes.at(i).toElement();
                    QDomNode nodo = el.firstChild();
                    QString n, c, u, e, esp, comp, l, tit, tu, cont;
                    while (!nodo.isNull()) {
                        QDomElement elemento = nodo.toElement();
                        QString tagName = elemento.tagName();

                        if(tagName=="nome")
                        {
                            n=elemento.text();
                        }
                        if(tagName=="cognome")
                        {
                            c=elemento.text();
                        }
                        if(tagName=="username")
                        {
                            u=elemento.text();
                        }
                        if(tagName=="email")
                        {
                            e=elemento.text();
                        }
                        if(tagName=="tipoutente")
                        {
                            tu=elemento.text();
                        }
                        if(tagName=="esperienze")
                        {
                            esp=elemento.text();
                        }
                        if(tagName=="competenze")
                        {
                            comp=elemento.text();
                        }
                        if(tagName=="lingue")
                        {
                            l=elemento.text();
                        }
                        if(tagName=="titolistudio")
                        {
                            tit=elemento.text();
                        }
                        if(tagName=="contatti")
                        {
                            cont=elemento.text();
                        }
                        nodo=nodo.nextSibling();
                    }
                    Utente* ut = 0;
                    if(tu == "Utente Basic")
                    {
                        Profilo prof(n.toStdString(), c.toStdString(), e.toStdString());
                        Username us(u.toStdString());
                        ut=new UtenteBasic(prof, us);

                        if(esp.size()!=0)
                           ut->loadEsperienze(esp.toStdString());
                        if(comp.size()!=0)
                           ut->loadCompetenze(comp.toStdString());
                        if(l.size()!=0)
                           ut->loadLingue(l.toStdString());
                        if(tit.size()!=0)
                           ut->loadTitoliStudio(tit.toStdString());
                        if(cont.size()!=0)
                           ut->loadContatti(cont.toStdString());
                    }
                    if( tu == "Utente Business")
                    {
                        Profilo prof(n.toStdString(), c.toStdString(), e.toStdString());
                        Username us(u.toStdString());
                        ut=new UtenteBusiness(prof, us);

                        if(esp.size()!=0)
                           ut->loadEsperienze(esp.toStdString());
                        if(comp.size()!=0)
                           ut->loadCompetenze(comp.toStdString());
                        if(l.size()!=0)
                           ut->loadLingue(l.toStdString());
                        if(tit.size()!=0)
                           ut->loadTitoliStudio(tit.toStdString());
                        if(cont.size()!=0)
                           ut->loadContatti(cont.toStdString());
                    }
                    if( tu == "Utente Executive")
                    {
                        Profilo prof(n.toStdString(), c.toStdString(), e.toStdString());
                        Username us(u.toStdString());
                        ut=new UtenteExecutive(prof, us);

                        if(esp.size()!=0)
                           ut->loadEsperienze(esp.toStdString());
                        if(comp.size()!=0)
                           ut->loadCompetenze(comp.toStdString());
                        if(l.size()!=0)
                           ut->loadLingue(l.toStdString());
                        if(tit.size()!=0)
                           ut->loadTitoliStudio(tit.toStdString());
                        if(cont.size()!=0)
                           ut->loadContatti(cont.toStdString());
                    }

                    db.push_back(ut);
                }
                file->close();
            }
      }
}