###############################################################################
# Copyright (c) 2009, 2019 Mia-Software and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
#    Gregoire DUPE (Mia-Software) - initial API and implementation
###############################################################################
pluginName = MoDisco Facet Meta Model Implementation (Deprecated, will be replaced by EMF Facet)
providerName = Eclipse Modeling Project

category.name = MoDisco Facet Constraints
constraint.name = Non-Empty Names
constraint.description = All items must be named.
constraint.message = A {0} has been found with an empty name.
constraint.name.0 = Only one FacetSet
constraint.description.0 = FacetSet resource must have only one FacetSet root.
constraint.message.0 = FacetSet resource must have only one FacetSet root, {0} roots found.
constraint.name.1 = FacetSet name equal file name
constraint.description.1 = FacetSet name and file name must be equal.
constraint.message.1 = FacetSet name differs from file name (fileName={0}, FacetSetName={1})
constraint.name.2 = Extended class contained into declared meta-models
constraint.description.2 = Facet extended class must be contained into the meta-models declared by the FacetSet
constraint.message.2 = Wrong extended class: {0} is not contained in declared meta-models. (see {1})
constraint.name.3 = Facet unique name
constraint.description.3 = Facet names must be unique.
constraint.message.3 = More than one facet is named {0}.
constraint.name.4 = Facet in query scope
constraint.message.4 = The {0} facet is not in its query's scope.
constraint.description.4 = context Facet inv: self.conditionQuery.scope->exists(scopeClass|self.eSuperTypes->exists(f|scopeClass.isSuperTypeOf(f)))
constraint.name.5 = Boolean facet query
constraint.message.5 = The {0} facet query must return a boolean.
constraint.description.5 = context Facet inv: self.conditionQuery.returnType.instanceClassName = 'java.lang.Boolean'
constraint.name.6 = Facets only contain FacetStructuralFeatures
constraint.message.6 = The {0} facet must only contain FacetStructuralFeature.
constraint.description.6 = context Facet inv: self.eStructuralFeatures->forAll(e|e.oclIsKindOf(facet::FacetStructuralFeature))
constraint.name.7 = FacetAttribute queries must return a instance of a DataType
constraint.message.7 = The {0} facet query must return a data type.
constraint.description.7 = context FacetAttribute inv: self.valueQuery.returnType.oclIsKindOf(ecore::EDataType)
constraint.name.8 = FacetAttribute queries must return a instance of an EClass
constraint.message.8 = The {0} facet query must return an instance of an EClass.
constraint.description.8 = context FacetReference inv: self.valueQuery.returnType.oclIsKindOf(ecore::EClass)
constraint.name.9 = Facet must be abstract.
constraint.message.9 = The "{0}" facet must be abstract.
constraint.description.9 = context Facet inv: self.abstract
constraint.name.10 = The extended package must not be the current facet set
constraint.message.10 = The extended package must not be the current facet set: {0}
constraint.description.10 = context FacetSet inv: self.extendedPackage != self
constraint.name.11 = FacetAttribute type must be equal to the query type
constraint.message.11 = FacetAttribute type must be equal to the query type. cf. "{0}"
constraint.description.11 = context Facet inv: self.abstract
constraint.name.12 = FacetReference type must be equal to the query type
constraint.message.12 = FacetReference type must be equal to the query type. cf. "{0}"
constraint.description.12 = context Facet inv: self.abstract
constraint.name.13 = FacetAttribute multiplicity must be equal to the query multiplicity
constraint.message.13 = FacetAttribute multiplicity must be equal to the query multiplicity. cf. "{0}"
constraint.description.13 = FacetAttribute multiplicity must be equal to the query multiplicity.
constraint.name.14 = FacetReference multiplicity must be equal to the query multiplicity
constraint.message.14 = FacetReference multiplicity must be equal to the query multiplicity. cf. "{0}"
constraint.description.14 = FacetReference multiplicity must be equal to the query multiplicity.
constraint.name.15 = FacetReference must not be changeable.
constraint.message.15 = FacetReference must not be changeable. cf. "{0}"
constraint.description.15 = FacetReference must not be changeable.
constraint.name.16 = FacetReference must be derived.
constraint.message.16 = FacetReference must be derived. cf. "{0}"
constraint.description.16 = FacetReference must be derived.
constraint.name.17 = FacetReference be volatile.
constraint.message.17 = FacetReference must be volatile. cf. "{0}"
constraint.description.17 = FacetReference must be volatile.
constraint.name.18 = FacetReference must be unsettable.
constraint.message.18 = FacetReference must be unsettable. cf. "{0}"
constraint.description.18 = FacetReference must be unsettable.
constraint.name.19 = FacetReference must be not be a container.
constraint.message.19 = FacetReference must be not be a container. cf. "{0}"
constraint.description.19 = FacetReference must be not be a container.
constraint.name.20 = FacetAttribute must not be changeable.
constraint.message.20 = AttributeReference must not be changeable. cf. "{0}"
constraint.description.20 = AttributeReference must not be changeable.
constraint.name.21 = FacetAttribute must be derived.
constraint.message.21 = AttributeReference must be derived. cf. "{0}"
constraint.description.21 = AttributeReference must be derived.
constraint.name.22 = FacetAttribute be volatile.
constraint.message.22 = FacetAttribute must be volatile. cf. "{0}"
constraint.description.22 = FacetAttribute must be volatile.
constraint.name.23 = FacetAttribute must be unsettable.
constraint.message.23 = AttributeReference must be unsettable. cf. "{0}"
constraint.description.23 = AttributeReference must be unsettable.
constraint.name.24 = Facet must have a super type.
constraint.message.24 = Facets must have a superType. cf. "{0}"
constraint.description.24 = self.eSuperTypes->size() > 0
content-type.name = MoDisco FacetSet model

constraint.name.25 = FacetSet must have a nsURI
constraint.message.25 = FacetSets must have a NsURI
constraint.description.25 = self.nsURI->notEmpty() and self.nsURI <> ''
constraint.name.26 = FacetSet must have a NsPrefix
constraint.message.26 = FacetSets must have a NsPrefix
constraint.description.26 = self.nsPrefix->notEmpty() and self.nsPrefix <> ''
constraint.name.27 = FacetSet must define extended packages
constraint.message.27 = FacetSets must define extended packages
constraint.description.27 = self.extendedPackage->notEmpty()