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

com.innoq.codeyourmodel.core.ModelReader.groovy Maven / Gradle / Ivy

package com.innoq.codeyourmodel.core

import com.innoq.codeyourmodel.core.dsl.ModelSpec
import com.innoq.codeyourmodel.core.meta2.Element
import groovy.util.logging.Log

/**
 * The ModelReader is used to read the model definition into a ModelRepository.
 */
@Log
class ModelReader {
  final ModelRepository modelRepository

  ModelSpec modelSpec = new ModelSpec()

  ModelReader(ModelRepository modelRepository) {
    this.modelRepository = modelRepository
  }

  def registerElementType(Class elementType) {
    modelSpec.registerElementType(elementType)
    this
  }

  def read(Closure closure) {
    log.info("init model")
    modelSpec.initWith(closure)
    modelRepository.addElements(modelSpec.initElements())
  }

  def read(List files) {
    read(files.collect { it.toURI() } as URI[])
  }

  def read(File... files) {
    read(files.collect { it.toURI() } as URI[])
  }

  def read(URI... uris) {
    log.info("init model from ${uris}")
    modelSpec.initFrom(uris)
    modelRepository.addElements(modelSpec.initElements())
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy