Google Website Translator Gadget

jueves, 28 de marzo de 2013

Java 7: TreeSet add error

Quan programes, qualsevol detall es molt important.

Si detectes que al afegir un objecte a la llista, aquest no s'afegeix, revisa els següents punts:


TreeSet (http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html) permet la creació de conjunts ordenats d'objectes. Amb la funció add es permet afegir objectes al conjunt.

add(E e)
Adds the specified element to this set if it is not already present.

En el cas que sigui un objecte creat per tu, cal generar una funció CompareTo (http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html) que permeti saber si l'objecte existeix o no.

int compareTo(T o)
Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

En el meu cas particular, he perdut 1 dia de feina per un error en la implementació de la funció de comparació d'un objecte. A veure si descobreixes on es l'error d'implementació:


if (IDUsuari!=null && pUsuari.IDUsuari!=null)
{ IDUsuari.compareToIgnoreCase(pUsuari.IDUsuari);}

Un cop revisat les diferents funcionalitats, t'adonaràs que el resultat de la comparació no es retorna!! . Vet aquí! l'error que tant va costar trobar!

Assegura't que la funció de comparació retorna correctament el valor de comparació.



miércoles, 6 de marzo de 2013

Eclipse - Oracle 28001 Error - password expired

www.oracle.com

Eclipse - Oracle 28001 Error

Marxes a casa desprès d'un dia dur de programació, i al dia següent quan intentes connectar-te a la BB.DD. Oracle des de el teu entorn Eclipse... zasca!!!! Error!!!
 "Creating connection to " has encountered a problem.
Could not connect to DDBB


Però si ahir funcionava!!! Es la teva exclamació.... si revisem atentament observem un detall del error:
28001-ORA: The password has expired.

Que està passant?

La solució es simple, Oracle 11 presenta unes caducitats per defecte dels usuaris i passwords.
Per a solventar-ho només cal connectar-se com a sysdba i revisar el següent:

select profile, limit from dba_profiles where RESOURCE_NAME='PASSWORD_LIFE_TIME';

Ens tornarà la expiració actual. Pots canviar-la a ilimitada amb:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

I per a recuperar els usuaris verifiques l'estat amb:
select username, account_status from dba_users;

I canviar-ho amb la sentència:
alter user HR identified by test;
alter user HR account unlock;