All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.harmony.kotlin.data.validator.vastra.ValidationService.kt Maven / Gradle / Ivy

package com.harmony.kotlin.data.validator.vastra

import com.harmony.kotlin.data.validator.vastra.strategies.ValidationStrategy
import com.harmony.kotlin.data.validator.vastra.strategies.ValidationStrategyEntity
import com.harmony.kotlin.data.validator.vastra.strategies.ValidationStrategyResult

interface ValidationService {

  fun  isValid(t: T?, strategies: List): Boolean {
    if (t == null) {
      return false
    }

    // Default value set to false;
    var isValid = false

    loop@ for (strategy in strategies) {
      when (strategy.isValid(t)) {
        ValidationStrategyResult.VALID -> {
          isValid = true
          break@loop
        }
        ValidationStrategyResult.INVALID -> {
          isValid = false
          break@loop
        }
        else -> { /*result is ValidationStrategyResult.UNKNOWN, lets iterate to next strategy */
        }
      }
    }

    return isValid
  }

  fun  isValid(values: List, strategies: List): Boolean {
    if (values.isEmpty()) {
      return false
    }

    for (value in values) {
      if (!isValid(value, strategies)) {
        return false
      }
    }

    return true
  }

  fun  isValid(t: T?): Boolean

  fun  isValid(values: List): Boolean
}

class ValidationServiceManager(private val strategies: List) : ValidationService {

  override fun  isValid(values: List): Boolean {
    if (values.isEmpty()) {
      return false
    }

    for (value in values) {
      if (!isValid(value)) {
        return false
      }
    }

    return true
  }

  override fun  isValid(t: T?): Boolean {
    return isValid(t, strategies)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy