blob: edcecb6224be5e11dcb5a1187fa71f01d030622b [file] [log] [blame]
[comment encoding = UTF-8 /]
[comment
/*******************************************************************************
* Copyright (c) 2017 Jad El-khoury.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
*
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
*
* Jad El-khoury - initial implementation of specification generation
*******************************************************************************/
/]
[module generateSpecification('http://org.eclipse.lyo/oslc4j/adaptorInterface', 'http://org.eclipse.lyo/oslc4j/vocabulary')]
[import org::eclipse::lyo::oslc4j::codegenerator::services::services/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::resourceServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::domainSpecificationServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::vocabularyServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::resourcePropertyServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::adaptorInterfaceServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateDomainSpecificationConstants/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateVocabularyConstants/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResource/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResourceInterface/]
[import org::eclipse::lyo::oslc4j::codegenerator::staticFiles::generateLicenseFiles/]
[query public canGenerate(aSpecification : Specification) : Boolean =
not(
aSpecification.generationSetting.oclIsUndefined()
or(aSpecification.generationSetting.javaFilesPath.isNullOrEmpty())
or(aSpecification.generationSetting.javaClassPackageName.isNullOrEmpty())
)
/]
[query public relevantResources(aSpecification : Specification) : Set(Resource) =
(aSpecification.domainSpecifications.resources
->union(aSpecification.domainSpecifications.resources.allRelatedResources()))->flatten()->asSet()
/]
[query public relevantDomainSpecifications(aSpecification : Specification) : Set(DomainSpecification) =
relevantResources(aSpecification)->collectNested(aResource : Resource | aResource.definingDomainSpecification())->flatten()->asSet()
/]
[query public relevantVocabularies(aSpecification : Specification) : Set(Vocabulary) =
relevantDomainSpecifications(aSpecification)->collectNested(aDomainSpecification : DomainSpecification |
relevantVocabularies(aDomainSpecification)
)->flatten()->asSet()
/]
[template public generateSpecification(aSpecification : Specification)]
[comment @main/]
[if (canGenerate(aSpecification))]
[aSpecification.generateLicenseFiles() /]
[for (aDomainSpecification: DomainSpecification | aSpecification.relevantDomainSpecifications())]
[aDomainSpecification.generateDomainSpecificationConstants(null, aSpecification.generationSetting.javaFilesPath, aSpecification.generationSetting.javaClassPackageName)/]
[/for]
[for (aVocabulary: Vocabulary | aSpecification.relevantVocabularies())]
[aVocabulary.generateVocabularyConstants(null, aSpecification.generationSetting.javaFilesPath, aSpecification.generationSetting.javaClassPackageName)/]
[/for]
[for (aResource: Resource | aSpecification.relevantResources())]
[aResource.generateResource(null, aSpecification.generationSetting.javaFilesPath, aSpecification.generationSetting.javaClassPackageName) /]
[aResource.generateResourceInterface(null, null, aSpecification.generationSetting.javaFilesPath, aSpecification.generationSetting.javaClassPackageName) /]
[/for]
[/if]
[/template]