blob: 1740be9505f6c2a9fe39c540f4b3c24f59a18d14 [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')]
[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::resourcePropertyServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::adaptorInterfaceServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateDomainSpecificationConstants/]
[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()
/]
[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 (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]