Algoritmo generazione UserID

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
mesillo
Linux 1.x
Linux 1.x
Messaggi: 169
Iscritto il: ven 4 feb 2005, 0:00
Località: Adria (RO)

Algoritmo generazione UserID

Messaggio da mesillo »

Ciao raga!.... scusate se non mi faccio più vivo ma sono oberato di lavoro!!!
<BR>Non ne posso più!.... ora mi leggo per bene tutti i messaggi e tento di capire come siamo messi!
<BR>P.S. scusa MDS se ti hò dato il nome di un programma Microsoft... stò diventando discrittico!<br>

MDS
Linux 1.x
Linux 1.x
Messaggi: 178
Iscritto il: gio 20 mag 2004, 0:00

Algoritmo generazione UserID

Messaggio da MDS »

Ohpss... grazie a tutti ragazzi!!!!
<BR>Avevo perso di vista Slacky per un po´
<BR>Poi vi posto il mio codice!!! (Ce l´ho al lavor e ora sono in malattia)
<BR>Comunque la mia capa aveva sottovalutato il problema anche lei....
<BR>Alla fine sono arrivato ad una cosetta che le stava bene, ma non era proprio quello hce avevo descritto.
<BR>Ho usato la ricorsività ed il codice è anche abbastanza compatto.
<BR>
<BR>Comunque GRAZIE A TUTTI<br>

MDS
Linux 1.x
Linux 1.x
Messaggi: 178
Iscritto il: gio 20 mag 2004, 0:00

Algoritmo generazione UserID

Messaggio da MDS »

Ciao a tutti ecco il mio codice<br />--code------<br /><strong>import</strong> java.util.ArrayList; <br /><div>/*</div><br /><div>* Creato il 2-mar-05</div><br /><div>*</div><br /><div>* Per modificare il modello associato a questo file generato, aprire</div><br /><div>* Finestra>Preferenze>Java>Generazione codice>Codice e commenti</div><br /><div>*/</div><br /><div>/**</div><br /><div>* <strong>@author</strong> MDS</div><br /><div>*</div><br /><div>* Per modificare il modello associato al commento di questo tipo generato, aprire</div><br /><div>* Finestra>Preferenze>Java>Generazione codice>Codice e commenti</div><br /><div>*/</div><br /><strong>public</strong> <strong>class</strong> GeneraUserID <div>{</div><br /><strong>private</strong> <strong>int</strong> iProfonditaMax; <div><strong>private</strong> ArrayList aListaId = <strong>new</strong> ArrayList();</div><br /><strong>private</strong> String cognome; <br />/* <div>* ***************************************************************************************************************</div><br /><div>* ********************* METODI PUBBLICI **********************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><div>/**</div><br /><div>* Metodo pubblico richiamabile dall´esterno:</div><br /><div>* Gestisce gli altri metodi di generazione</div><br /><div>* <strong>@param</strong> sNome</div><br /><div>* <strong>@param</strong> iProfonditaMassima</div><br /><div>*/</div><br /><br /><strong>public</strong> String gestoreGenerazione (String sNome, String sCognome, <strong>int</strong> iProfonditaMassima, <strong>boolean</strong> bBatch) <div>{</div><br /><strong>this</strong>.iProfonditaMax=iProfonditaMassima; <div><strong>this</strong>.cognome=sCognome;String nome = </div><br /><strong>this</strong>.eliminaLettereRipetute(sNome); <div>String sUser=<strong>this</strong>.generazioneNomeIniziale(sNome.toLowerCase(), <strong>this</strong>.iProfonditaMax, bBatch);</div><br /><strong>if</strong> (sUser== <strong>null</strong>) <div>{</div><br />sUser=<strong>this</strong>.generazioneCombinazioni(nome, nome.substring(0,1), 1, bBatch); <div>}</div><br /><strong>return</strong> sUser; <div>}</div><br /><br /><div>/**</div><br /><div>* Metodo pubblico richiamabile dall´esterno:</div><br /><div>* Restituisce la lista degli utenti strutturata come un ArrayList</div><br /><div>* <strong>@return</strong> aListaId</div><br /><div>*/</div><br /><strong>public</strong> ArrayList getAListaId() <div>{</div><br /><strong>return</strong> <strong>this</strong>.aListaId; <div>}</div><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ********************* FINE METODI PUBBLICI ******************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ********************* INIZIO METODI PRIVATI ******************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ******************** METODI DI GENERAZIONE **********************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><div>/**</div><br /><div>* Genera id in modo facile da ricordare</div><br /><div>* aggiunge via via lettere del nome</div><br /><div>* al suo interno richiama 2 metodi</div><br /><div>* 1) Nel caso l´id non sia in lista lo aggiunge tramite il metodo inserisciIdInLista</div><br /><div>* 2) Nel caso tutti gli id generati già esistano chiama un metodo di generazione id con l´ausilio dei numeri (tramite il metodo generazioneNomeNumerico)</div><br /><div>* <strong>@param</strong> sNome</div><br /><div>*/</div><br /><br /><strong>private</strong> String generazioneNomeIniziale (String sNome, <strong>int</strong> iProf, <strong>boolean</strong> bBatch) <div>{</div><br />String sRitorno=""; <br /><strong>for</strong> (<strong>int</strong> i=0; i{ <div><br /><div>sRitorno=sRitorno+sNome.substring(i,i+1);</div><br /><div>//System.out.println("sRitorno: "+sRitorno);</div><br /><div>String sUser = inserisciIdInLista(sRitorno);</div><br /><div>// Se batch false e inserisciInLista ritorna true allora usciamo </div><br /><strong>if</strong> (sUser!= <strong>null</strong> && bBatch) <div>{</div><br /><strong>return</strong> sUser; <div>}</div><br /><div>}</div><br /><br />sRitorno=<strong>this</strong>.generazioneNomeNumerico(sRitorno, bBatch);<strong>return</strong> sRitorno; <div>}</div><br /><br /><div>/**</div><br /><div>* Genera una combinazione di id con aggiunta di numeri</div><br /><div>* <strong>@param</strong> sNome</div><br /><div>* <strong>@param</strong> bBatch</div><br /><div>* <strong>@return</strong></div><br /><div>*/</div><br /><strong>private</strong> String generazioneNomeNumerico (String sNome, <strong>boolean</strong> bBatch) <div>{</div><br /><div>String sAppoggio;</div><br /><strong>for</strong> (<strong>int</strong> j=1; j<10; j++) <div>{</div><br /><div>sAppoggio=sNome+j;</div><br /><div>//System.out.println("sRitorno: "+sAppoggio);</div><br /><div>String sUser = inserisciIdInLista(sAppoggio);</div><br />sAppoggio="";<strong>if</strong> (sUser!= <strong>null</strong> && bBatch) <div>{</div><br /><strong>return</strong> sUser; <div>}</div><br /><div>}</div><br /><br /><strong>return</strong> <strong>null</strong>; <div>}</div><br /><br /><br /><br /><div>/**</div><br />* Crea id attraverso combinazioni delle lettere del nome immesso <div>* l´algoritmo è ricorsivo</div><br /><div>* <strong>@param</strong> nome</div><br /><div>* <strong>@param</strong> sInString : stringa che man mano viene complicata</div><br /><div>* <strong>@param</strong> iProfondita : profondità di ricorsione a cui mi trovo</div><br /><div>*/</div><br /><br /><strong>private</strong> String generazioneCombinazioni (String nome, String sInString, <strong>int</strong> iProfondita, <strong>boolean</strong> bBatch) <div>{</div><br /><br /><div>String sRitorno = sInString;</div><br />String sAppoggio=""; <br /><strong>for</strong> (<strong>int</strong> i= 1; i{ <div><br /><div>sAppoggio=nome.substring(i,i+1);</div><br /><div>sRitorno = sInString+sAppoggio;</div><br /><div>//System.out.println("sRitorno "+ sRitorno);</div><br /><div>String sUser = inserisciIdInLista(sRitorno);</div><br /><div>sRitorno=sRitorno.substring(0,sRitorno.length()-1);</div><br /><strong>if</strong> (sUser!= <strong>null</strong> && bBatch) <div>{</div><br /><strong>return</strong> sUser; <div>} </div><br /><div>}</div><br /><br /><div>iProfondita++;</div><br /><br /><strong>if</strong> (iProfondita< iProfonditaMax && iProfondita{ <div><br /><strong>for</strong> (<strong>int</strong> j=1; j< nome.length(); j++) <div>{</div><br /><div>sAppoggio=nome.substring(j,j+1);</div><br /><div>sRitorno = sInString+sAppoggio;</div><br /><div>generazioneCombinazioni(nome, sRitorno, iProfondita, bBatch);</div><br /><div>//System.out.println("sRitorno "+ sRitorno);</div><br /><div>String sUser = inserisciIdInLista(sRitorno);</div><br /><div>sRitorno=sRitorno.substring(0,sRitorno.length()-1);</div><br /><strong>if</strong> (sUser!= <strong>null</strong> && bBatch) <div>{</div><br /><strong>return</strong> sUser; <div>}</div><br /><br /><div>}</div><br /><div>}</div><br /><br /><strong>return</strong> <strong>null</strong>; <div>}</div><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ******************* FINE METODI DI GENERAZIONE ******************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ******************* METODI DI UTILITA´ *****************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><br /><div>/**</div><br /><div>* Pulisce il nome eliminando le lettere che si ripetono all´interno del nome</div><br /><div>* ottimizza le combinazioni di id minimizzando la probabilità di combinazioni uguali</div><br /><div>* <strong>@param</strong> sStringaDaPulire</div><br /><div>* <strong>@return</strong></div><br /><div>*/</div><br /><br /><strong>private</strong> String eliminaLettereRipetute (String sStringaDaPulire) <div>{</div><br /><br /><div>String sAppoggio=sStringaDaPulire.toLowerCase();</div><br />String sPulita="";<strong>for</strong> (<strong>int</strong> i=0; i{ <div><br /><strong>if</strong> ( sPulita.indexOf(sAppoggio.substring(i,i+1)) == -1 ) <div>{</div><br /><div>sPulita=sPulita+sAppoggio.substring(i,i+1);</div><br /><div>}</div><br /><div>//System.out.println("sPulita: "+sPulita);</div><br /><div>}</div><br /><br /><strong>return</strong> sPulita; <div>}</div><br /><br /><div>/**</div><br /><div>* Restituisce lo userid composto dalla parte iniziale generata automaticamente e il cognome in minuscolo</div><br /><div>* <strong>@param</strong> sParteInizialeId</div><br /><div>* <strong>@return</strong></div><br /><div>*/</div><br /><br /><strong>private</strong> String restituisciId (String sParteInizialeId) <div>{</div><br /><strong>return</strong> sParteInizialeId.toLowerCase()+"."+<strong>this</strong>.cognome.toLowerCase(); <div>}</div><br /><br /><div>/**</div><br /><div>* inserisce l´id generato nella lista da restituire</div><br /><div>* <strong>@param</strong> sIdDaInserire</div><br /><div>*/</div><br /><br /><strong>private</strong> String inserisciIdInLista (String sIdDaInserire) <div>{</div><br />String sUser=<strong>this</strong>.restituisciId(sIdDaInserire);<strong>int</strong> i=0; <br /><strong>for</strong> (i=0; i<<strong>this</strong>.aListaId.size(); i++) <div>{</div><br /><div><strong>if</strong> (<strong>this</strong>.aListaId.get(i).equals(sUser)) </div><br /><strong>break</strong>; <div>}</div><br /><strong>if</strong> (i==aListaId.size()) <div>{ </div><br /><strong>this</strong>.aListaId.add(sUser);<strong>if</strong> (<strong>this</strong>.ricercaUserSuDb (sUser)) <div>{</div><br /><strong>return</strong> <strong>null</strong>; <div>}</div><br /><br /><strong>return</strong> sUser; <div>}</div><br /><div>// Ricerca sul db se c´è return null se no return sUser</div><br /><br /><strong>return</strong> <strong>null</strong>; <div>}</div><br /><br /><div>/**</div><br /><div>* Metodo da implementare che ricerca sul db la presenza di un utente</div><br /><div>* <strong>@param</strong> sUser</div><br /><div>* <strong>@return</strong></div><br /><div>*/</div><br /><strong>private</strong> <strong>boolean</strong> ricercaUserSuDb (String sUser) <div>{</div><br /><strong>return</strong> <strong>false</strong>; <div>}</div><br /><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ******************* FINE METODI DI UTILITA´ **************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br />/* <div>* ***************************************************************************************************************</div><br /><div>* ********************* FINE METODI PRIVATI ******************************************</div><br /><div>* ***************************************************************************************************************</div><br /><div>*/</div><br /><br /><br />/* <div>* Main di prova eliminare quando l´applicazione sarà completa e sufficientemente testata</div><br /><div>*/</div><br /><br /><strong>public</strong> <strong>static</strong> <strong>void</strong> main (String[] args) <div>{</div><br />GeneraUserID userId = <strong>new</strong> GeneraUserID(); <br />System.out.println("gestoreGene: "+userId.gestoreGenerazione("Mario","Rossi",3, <strong>false</strong>));<strong>for</strong> (<strong>int</strong> i=0; i{ <div><br />System.out.println("Lista: "+userId.getAListaId().get(i)); <div>}</div><br /><div>}</div><br /><div>}</div><br /><br /><br />-----/code<br /><br /><br />ed ecco l´output<br /><br />-----------code--<br /><div>gestoreGene: null</div><br /><div>Lista: m.rossi</div><br /><div>Lista: ma.rossi</div><br /><div>Lista: mar.rossi</div><br /><div>Lista: mar1.rossi</div><br /><div>Lista: mar2.rossi</div><br /><div>Lista: mar3.rossi</div><br /><div>Lista: mar4.rossi</div><br /><div>Lista: mar5.rossi</div><br /><div>Lista: mar6.rossi</div><br /><div>Lista: mar7.rossi</div><br /><div>Lista: mar8.rossi</div><br /><div>Lista: mar9.rossi</div><br /><div>Lista: mr.rossi</div><br /><div>Lista: mi.rossi</div><br /><div>Lista: mo.rossi</div><br /><div>Lista: maa.rossi</div><br /><div>Lista: mai.rossi</div><br /><div>Lista: mao.rossi</div><br /><div>Lista: mra.rossi</div><br /><div>Lista: mrr.rossi</div><br /><div>Lista: mri.rossi</div><br /><div>Lista: mro.rossi</div><br /><div>Lista: mia.rossi</div><br /><div>Lista: mir.rossi</div><br /><div>Lista: mii.rossi</div><br /><div>Lista: mio.rossi</div><br /><div>Lista: moa.rossi</div><br /><div>Lista: mor.rossi</div><br /><div>Lista: moi.rossi</div><br /><div>Lista: moo.rossi</div><br /><br />---------/code-------------<br /><br /><br />Grazie a tutti.<br /><br />Ps: Ditemi che ne pensate ;-)<br /><br />Ps2: Scusate ma non riesco ad indentarlo qui sul forum... e tra l´altro mi svalvola quando uso il tag code [ Questo Messaggio è stato Modificato da: MDS il 12-05-2005 15:24 ] </div></div></div></div></div><BR><BR>[ Questo Messaggio è stato Modificato da: MDS il 12-05-2005 15:25 ]<br>

Rispondi