| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| */ |
| |
| grammar org.eclipse.osbp.xtext.datainterchange.DataDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations |
| |
| import "http://osbp.eclipse.org/xtext/datainterchange/DataDSL" |
| |
| import "http://osbp.eclipse.org/dsl/common/types/v1" as types |
| import "http://osbp.eclipse.org/dsl/entity/v1" as entity |
| import "http://www.eclipse.org/emf/2002/Ecore" as ecore |
| |
| DataInterchangeModel: |
| packages+=DataInterchangePackage*; |
| |
| DataInterchangePackage: |
| {DataInterchangePackage} 'package' name=QualifiedName 'title' title=TRANSLATABLESTRING |
| ('{' (imports+=DataInterchangeImport)* (datInts+=DataInterchange)* '}' )?; |
| |
| DataInterchange: |
| {DataInterchange} 'interchange' name=TRANSLATABLEID |
| (description?='described by' descriptionValue=TRANSLATABLESTRING)? |
| (createReport?='create report')? |
| ('averageElementSize' elementSize=INT)? |
| ('progressBarStyle' progressBarStyle=ProgressBarStylesEnum)? |
| (refreshEnabled?='refreshViewWhenFinished' refresh=STRING)? |
| 'file' fileEndpoint=DataInterchangeFile 'beans' '{' (path+=DataInterchangeBean)* '}'; |
| |
| DataInterchangeFile: |
| DataInterchangeFileXML | DataInterchangeFileCSV | DataInterchangeFileEDI; |
| |
| DataInterchangeFileXML: |
| {DataInterchangeFileXML} 'XML' fileURL=STRING; |
| |
| DataInterchangeFileCSV: |
| {DataInterchangeFileCSV} 'CSV' fileURL=STRING |
| ( |
| ('delimiter' delimiter=STRING)? & ('quoteCharacter' quoteCharacter=STRING)? & ('skipLines' skipLines=INT)? & |
| (indent?='indent')? & (strict?='strict')? & (validateHeader?='validateHeader')? & ('encoding' encoding=STRING)? |
| ); |
| |
| DataInterchangeFileEDI: |
| {DataInterchangeFileEDI} 'EDI' fileURL=STRING 'mappingModel' mappingModel=STRING (validate?='validate')?; |
| |
| DataInterchangeBean: |
| {DataInterchangeBean} |
| 'entity' entity=[entity::LEntity|LFQN] |
| ('createOn' elementMap=STRING)? |
| (markLatest?='marker' latestProperty=[entity::LEntityAttribute])? |
| ((recordElement?='recordElement') | |
| (recordList?='recordList'))? |
| ('expression' '{' (expression+=DataInterchangeExpression)* '}')? |
| ('lookup' '{' (lookup+=DataInterchangeLookup)* '}')? |
| ('format' '{' (format+=DataInterchangeFormat)* '}')? |
| ('mapping' '{' (mappings+=DataInterchangeMapping)* '}')? |
| ; |
| |
| DataInterchangeLookup: |
| {DataInterchangeLookup} |
| 'for' targetProperty=[entity::LEntityReference] |
| 'on' entity=[entity::LEntity] |
| ('createOn' elementMap=STRING)? |
| 'with' queryProperty=[entity::LEntityAttribute] |
| (cached?='cacheSize' cacheSize=INT)? |
| ('mapTo' dataMap=STRING)? |
| ( |
| (allowNoResult?='allowNoResult')? & |
| (allowNonuniqueResult?='allowNonuniqueResult')? & |
| (markerPath=DataInterchangeMarkerPath)? |
| ); |
| |
| DataInterchangeMarkerPath: |
| {DataInterchangeMarkerPath} |
| 'markerPath' '{' (path+=DataInterchangeMarkerEntity)* '}'; |
| |
| DataInterchangeMarkerEntity: |
| {DataInterchangeMarkerEntity} |
| 'markerEntity' markerEntity=[entity::LEntity|LFQN] |
| (markLatest?='markedBy' markerProperty=[entity::LEntityAttribute])?; |
| |
| DataInterchangeFormat: |
| {DataInterchangeFormat} 'for' targetProperty=[entity::LEntityAttribute] 'coding' format=STRING ('locale' locale=STRING)?; |
| |
| DataInterchangeExpression: |
| DataInterchangeEntityExpression | DataInterchangePredefinedExpression; |
| |
| DataInterchangeEntityExpression: |
| {DataInterchangeEntityExpression} 'copy' targetProperty=[entity::LEntityAttribute] 'from' entity=[entity::LEntity|LFQN] 'property' property=[entity::LEntityAttribute]; |
| |
| DataInterchangePredefinedExpression: |
| {DataInterchangePredefinedExpression} 'assign' targetProperty=[entity::LEntityAttribute] 'with' bean=PredefinedBeanEnum 'as' beanType=PredefinedBeanTypeEnum; |
| |
| DataInterchangeMapping: |
| {DataInterchangeMapping} 'map' property=[entity::LEntityAttribute] 'to' data=STRING; |
| |
| DataInterchangeImport returns types::LImport: |
| 'import' importedNamespace=DataInterchangeQualifiedNameWithWildCard; |
| |
| DataInterchangeQualifiedNameWithWildCard: |
| QualifiedName ('.' '*')?; |
| |
| QualifiedName: |
| ValidID (=>'.' ValidID)*; |
| |
| ValidID: |
| ID; |
| |
| LFQN: |
| ID ('.' ID)*; |
| |
| TRANSLATABLESTRING: |
| STRING; |
| |
| TRANSLATABLEID: |
| ID; |
| |
| enum PredefinedBeanEnum: |
| now = 'NowDate'| |
| start = 'StartDate'| |
| UUID = 'UniversallyUniqueIdentifier'; |
| |
| enum PredefinedBeanTypeEnum: |
| Date = 'Date'| |
| Millis = 'Milliseconds'| |
| Nanos = 'Nanoseconds'| |
| random = 'Random'| |
| execContext = 'ExecuteContext'; |
| |
| enum ProgressBarStylesEnum: |
| none = 'none'| |
| normal = 'normal'| |
| important = 'important'; |