blob: 9dfefc1037eb0b482b8a1687506ed7da20b39004 [file] [log] [blame]
[comment encoding = UTF-8 /]
[comment
/*******************************************************************************
* Copyright (c) 2014 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 code generator (422448)
* Matthieu Helleboid - Support for multiple Service Providers.
* Anass Radouani - Support for multiple Service Providers.
* Frédéric Loiret - Switch the template to Bootstrap (519699)
*******************************************************************************/
/]
[module generate('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::resourcePropertyServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::adaptorInterfaceServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::services::vocabularyServices/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateServiceProviderCatalogService/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateServiceProviderCatalogSingleton/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorServiceProviderFactory/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorManager/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorResourcesFactory/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorServletListener/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorApplication/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateClientOnlyMainApplication/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorPackageInfo/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateDomainSpecificationConstants/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateVocabularyConstants/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorConstants/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateServiceProviderService/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateServiceProviderInfo/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResource/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResourceInterface/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResourceService/]
[import org::eclipse::lyo::oslc4j::codegenerator::staticFiles::generateLicenseFiles/]
[import org::eclipse::lyo::oslc4j::codegenerator::staticFiles::generateCssAndJsFiles/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceCollectionJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateFilteredResourceCollectionJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateGetResourceJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateGetResourceSmallPreviewJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceCreatorJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceSelectorJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceSelectorClientJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceCreatorClientJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateServiceProviderCatalogHTML/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateServiceProviderHTML/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateDelegatedUIJavaScripts/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateIndexJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::jsp::generateResourceShapeJsp/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateAdaptorClient/]
[import org::eclipse::lyo::oslc4j::codegenerator::files::generateResourceShapeService/]
[template public generateCommon(anAdaptorInterface : AdaptorInterface)]
[anAdaptorInterface.generateLicenseFiles() /]
[anAdaptorInterface.generateAdaptorConstants() /]
[anAdaptorInterface.generateAdaptorPackageInfo() /]
[/template]
[template public generateForServiceProviderCatalog(anAdaptorInterface : AdaptorInterface)]
[if (not anAdaptorInterface.serviceProviderCatalog.oclIsUndefined())]
[anAdaptorInterface.generateAdaptorApplication() /]
[anAdaptorInterface.generateAdaptorServletListener() /]
[anAdaptorInterface.generateAdaptorManager() /]
[anAdaptorInterface.generateAdaptorResourcesFactory() /]
[anAdaptorInterface.serviceProviderCatalog.generateServiceProviderCatalogService() /]
[anAdaptorInterface.serviceProviderCatalog.generateServiceProviderCatalogSingleton() /]
[anAdaptorInterface.generateCssAndJsFiles() /]
[anAdaptorInterface.serviceProviderCatalog.generateServiceProviderCatalogHTML() /]
[anAdaptorInterface.generateIndexJsp() /]
[anAdaptorInterface.generateDelegatedUIJavaScripts() /]
[anAdaptorInterface.generateResourceSelectorClientJsp() /]
[anAdaptorInterface.generateResourceCreatorClientJsp() /]
[anAdaptorInterface.generateResourceShapeService() /]
[anAdaptorInterface.generateResourceShapeJsp() /]
[/if]
[/template]
[template public generateForRelevantDomainSpecifications(anAdaptorInterface : AdaptorInterface)]
[for (aDomainSpecification: DomainSpecification | relevantDomainSpecifications(anAdaptorInterface))]
[aDomainSpecification.generateDomainSpecificationConstants(anAdaptorInterface, null, null)/]
[/for]
[/template]
[template public generateForRelevantVocabularies(anAdaptorInterface : AdaptorInterface)]
[for (aVocabulary: Vocabulary | relevantVocabularies(anAdaptorInterface))]
[aVocabulary.generateVocabularyConstants(anAdaptorInterface, null, null)/]
[/for]
[/template]
[template public generateForRelevantResources(anAdaptorInterface : AdaptorInterface)]
[for (aResource: Resource | relevantResources(anAdaptorInterface))]
[aResource.generateResource(anAdaptorInterface, null, null) /]
[aResource.generateResourceInterface(anAdaptorInterface, anAdaptorInterface, null, null) /]
[/for]
[/template]
[template public generateForServiceProviders(anAdaptorInterface : AdaptorInterface)]
[for (aServiceProvider: ServiceProvider | anAdaptorInterface.serviceProviders())]
[aServiceProvider.generateServiceProviderInfo() /]
[aServiceProvider.generateServiceProviderService()/]
[aServiceProvider.generateAdaptorServiceProviderFactory() /]
[aServiceProvider.generateServiceProviderHTML() /]
[for (aService: Service | aServiceProvider.services)]
[aService.generateResourceService()/]
[for (aQueryCapability: QueryCapability | aService.queryCapabilities)]
[comment Produce one only jsp-file for each set of QueryCapabilities that have the same Sequence (not Set) of ResourceTypes. /]
[let allQueryCapabilities: Sequence(QueryCapability) = anAdaptorInterface.serviceProviderCatalog.serviceProviders.services.queryCapabilities]
[if not (allQueryCapabilities->excluding(aQueryCapability)->exists(anotherQueryCapability: QueryCapability |
(anotherQueryCapability.resourceTypes = aQueryCapability.resourceTypes).
_and(allQueryCapabilities->indexOf(anotherQueryCapability) > allQueryCapabilities->indexOf(aQueryCapability))))]
[aQueryCapability.generateResourceCollectionJsp() /]
[/if]
[/let]
[/for]
[for (aSelectionDialog: Dialog | aService.selectionDialogs)]
[comment Produce one only set of jsp-files for each set of selectionDialogs that have the same Sequence (not Set) of ResourceTypes. /]
[let allSelectionDialogs: Sequence(Dialog) = anAdaptorInterface.serviceProviderCatalog.serviceProviders.services.selectionDialogs]
[if not (allSelectionDialogs->excluding(aSelectionDialog)->exists(anotherSelectionDialog: Dialog |
(anotherSelectionDialog.resourceTypes = aSelectionDialog.resourceTypes).
_and(allSelectionDialogs->indexOf(anotherSelectionDialog) > allSelectionDialogs->indexOf(aSelectionDialog))))]
[aSelectionDialog.generateFilteredResourceCollectionJsp() /]
[aSelectionDialog.generateResourceSelectorJsp() /]
[/if]
[/let]
[/for]
[for (aCreationDialog: Dialog | aService.creationDialogs)]
[comment Produce one only jsp-file for each set of creationDialogs that have the same Sequence (not Set) of ResourceTypes. /]
[let allCreationDialogs: Sequence(Dialog) = anAdaptorInterface.serviceProviderCatalog.serviceProviders.services.creationDialogs]
[if not (allCreationDialogs->excluding(aCreationDialog)->exists(anotherCreationDialog: Dialog |
(anotherCreationDialog.resourceTypes = aCreationDialog.resourceTypes).
_and(allCreationDialogs->indexOf(anotherCreationDialog) > allCreationDialogs->indexOf(aCreationDialog))))]
[aCreationDialog.generateResourceCreatorJsp() /]
[/if]
[/let]
[/for]
[/for]
[/for]
[for (aResource: Resource | relevantResources(anAdaptorInterface))]
[if (not basicCapabilities(anAdaptorInterface, aResource)->isEmpty())]
[aResource.generateGetResourceJsp(anAdaptorInterface, anAdaptorInterface) /]
[aResource.generateGetResourceSmallPreviewJsp(anAdaptorInterface, anAdaptorInterface) /]
[/if]
[/for]
[/template]
[template public generateForRequiredAdaptors(anAdaptorInterface : AdaptorInterface)]
[for (aRequiredAdaptor: RequiredAdaptor | anAdaptorInterface.requiredAdaptors)]
[aRequiredAdaptor.generateAdaptorClient(anAdaptorInterface) /]
[/for]
[/template]
[template public generate(anAdaptorInterface : AdaptorInterface)]
[comment @main/]
[generateCommon(anAdaptorInterface)/]
[if (not anAdaptorInterface.serviceProviderCatalog.oclIsUndefined())]
[generateForServiceProviderCatalog(anAdaptorInterface)/]
[generateForServiceProviders(anAdaptorInterface)/]
[else]
[generateClientOnlyMainApplication(anAdaptorInterface)/]
[/if]
[generateForRelevantDomainSpecifications(anAdaptorInterface)/]
[generateForRelevantVocabularies(anAdaptorInterface)/]
[generateForRelevantResources(anAdaptorInterface)/]
[generateForRequiredAdaptors(anAdaptorInterface)/]
[/template]