001/* Copyright (C) 2014 konik.io
002 *
003 * This file is part of the Konik library.
004 *
005 * The Konik library is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * The Konik library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>.
017 */
018package io.konik.validator;
019
020import static io.konik.util.Strings.isNotEmpty;
021import io.konik.validator.annotation.ValidFinancialAccount;
022import io.konik.zugferd.entity.FinancialAccount;
023
024import javax.validation.ConstraintValidator;
025import javax.validation.ConstraintValidatorContext;
026
027/**
028 *  
029 * The Valid Financial Account Validator will check if a Financial Account 
030 * has a not empty {@link FinancialAccount#getIban()} or {@link FinancialAccount#getProprietaryId()}.
031 */
032public class ValidFinancialAccountValidator implements  ConstraintValidator<ValidFinancialAccount, FinancialAccount> {
033
034   /**
035    * Initialize.
036    *
037    * @param constraintAnnotation the constraint annotation
038    */
039   @Override
040   public void initialize(ValidFinancialAccount constraintAnnotation) {
041   }
042
043   /**
044    * Checks if is valid.
045    *
046    * @param contact the contact
047    * @param context the context
048    * @return true, if is valid
049    */
050   @Override
051   public boolean isValid(FinancialAccount account, ConstraintValidatorContext context) {
052      if (account != null) {
053         return isNotEmpty(account.getProprietaryId()) || isNotEmpty(account.getIban());           
054      }
055      return true;
056   }
057}