En las condiciones de nombre, condicion, precio, etc... estas comprobando que no son nulos, aun podrian ser vacios. No se si eso es lo que quieres comprobar.
Ademas tendrias que añadir aislar las comprobaciones sobre ean e ISBN con un parenteis porque el operador && tiene mayor precedencia que el ||.
Tal como esta ahora, si Ean contiene algo, el resultado de todo el if es true independientemente del resto de campos porque la condicion a evaluar sera tipo "(True or ....)" y eso siempre da true
Código:
if (
((this.getEan()!=null && !"".equals(this.getEan()))
||
(this.getISBN()!=null && !"".equals(this.getISBN())))
&& brand==true
&& this.getId() != null
&& this.getName(locale) != null
&& this.getProduct().getSummary().get(locale) != null
&& this.getCondition() != null
&& this.getConvenientCurrentPrice() != null
&& this.getConvenientFirstDocument() != null
&& this.getConvenientFirstDocument().getBinaryId() != null
&& this.getConvenientFirstDocument().getFilename() != null
&& this.rest(locale) != null
) { return true; }
return false;