#*************************** bolero codegeneration add-on ********************************

# default_pattern -> implementation pattern relations

codegen.java.default_pattern.class.Class =
\  if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\      "Default Inner Class",
\      "Default Class")

codegen.java.default_pattern.class.InnerClass =
\  if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\      "Default Inner Class",
\      "")

codegen.java.default_pattern.class.Interface =
\  if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\      "Default Inner Interface",
\      "Default Interface")

codegen.java.default_pattern.class.BoleroClass = "Default BoleroClass"
codegen.java.default_pattern.class.BoleroInterface = "Default BoleroInterface"
codegen.java.default_pattern.class.BoleroClassAdapter = "Default BoleroClassAdapter"
codegen.java.default_pattern.class.BoleroInterfaceAdapter = "Default BoleroInterfaceAdapter"

# Additionally do not add constructors to interface/class adapters
codegen.java.default_pattern.member.Constructor =
\  if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\      "Default Constructor",
\      "")

codegen.java.default_pattern.member.Attribute =
\  if (!%container%->hasProperty ("Bolero"),
\     if (!%container%->hasProperty("$interface"),
\        "Default Attribute",
\        "Default Attribute in Interface"),
\     "")
codegen.java.default_pattern.member.Operation =
\  if (!%container%->hasProperty ("Bolero"),
\     if (!%container%->hasProperty("$interface"),
\        "Default Operation",
\        "Default Operation in Interface"),
\     "")

codegen.java.default_pattern.member.BoleroConstructor =
\  if(%container%->isNode() && !%container%->hasProperty("$interface") && %container%->hasProperty ("Bolero") &&
\     !%container%->hasPropertyValue ("Class", "com.softwareag.repository.infomodel.bolero.BoleroClassAdapter") &&
\     !%container%->hasPropertyValue ("Class", "com.softwareag.repository.infomodel.bolero.BoleroInterfaceAdapter"),
\      "Default BoleroConstructor",
\      ""
\      )

codegen.java.default_pattern.member.BoleroField =
\  if (!%container%->hasProperty("$interface"),
\     if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\        "",
\        "Default BoleroField"),
\     if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\        "",
\        "Default BoleroInterfaceField")
\  )

codegen.java.default_pattern.member.BoleroMethod =
\  if (!%container%->hasProperty("$interface"),
\     if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\        "",
\        "Default BoleroMethod"),
\     if(%container%->isNode() && !%container%->hasProperty ("Bolero"),
\        "",
\        "Default BoleroInterfaceMethod")
\  )


# Implementation of patterns

########################################
# Classes
########################################

# If "extends Object" would be replaced by extending of another class, it will require modification of Export procedure (properties of ...bolero.Object are generating)
codegen.java.blueprint.class.Default BoleroClass =
\/**
\ * @Bolero
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroClass
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @language 0
\ * @kind 0
\ * @public
\ * @classProperty 0
\ * @withPopulation true
\ * @paramOfSuperClass_0
\ */
\public class %Name% extends Object {
\/**
\ * @Name Constructor
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroMethod
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 0
\ * @modifiability 2
\ * @boleroVisibility 0
\ * @typeName_0
\ * @initialValue_0
\ * @methodBody_0
\ * @kind 1
\ * @implicitParametersUnchecked true
\ * @thisModifiable 2
\ */
\    public void Constructor(){}
\}
codegen.java.blueprint.class.Default BoleroClass.property.defaultName = "NewClass"
codegen.java.blueprint.class.Default BoleroClass.property.hideInChooseList

codegen.java.blueprint.class.Default BoleroInterface =
\/**
\ * @Bolero
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroInterface
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @language 0
\ */
\public interface %Name% {
\}
codegen.java.blueprint.class.Default BoleroInterface.property.defaultName = "NewInterface"
codegen.java.blueprint.class.Default BoleroInterface.property.hideInChooseList

codegen.java.blueprint.class.Default BoleroClassAdapter =
\/**
\ * @Bolero
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroClassAdapter
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @language 0
\ * @kind 0
\ * @classProperty 0
\ * @withPopulation true
\ * @paramOfSuperClass_0
\ */
\public class %Name% extends Object {
\}
codegen.java.blueprint.class.Default BoleroClassAdapter.property.defaultName = "NewClassAdapter"
codegen.java.blueprint.class.Default BoleroClassAdapter.property.hideInChooseList

codegen.java.blueprint.class.Default BoleroInterfaceAdapter =
\/**
\ * @Bolero
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroInterfaceAdapter
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @language 0
\ */
\public interface %Name% {
\}
codegen.java.blueprint.class.Default BoleroInterfaceAdapter.property.defaultName = "NewInterfaceAdapter"
codegen.java.blueprint.class.Default BoleroInterfaceAdapter.property.hideInChooseList

########################################
# Methods
########################################

codegen.java.blueprint.member.Default BoleroConstructor =
\/**
\ * @Name Constructor
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroMethod
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 0
\ * @modifiability 2
\ * @boleroVisibility 0
\ * @typeName_0
\ * @initialValue_0
\ * @methodBody_0
\ * @kind 1
\ * @implicitParametersUnchecked true
\ * @thisModifiable 2
\ */
\    public void %Name% () {}
codegen.java.blueprint.member.Default BoleroConstructor.property.defaultName = "Constructor1"
codegen.java.blueprint.member.Default BoleroConstructor.property.hideInChooseList

codegen.java.blueprint.member.Default BoleroField =
\/**
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroField
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 0
\ * @modifiability 2
\ * @boleroVisibility 0
\ * @typeName_0
\ * @initialValue_0
\ * @implGet_0
\ * @implSet_0
\ */
\    private Object %Name%;
codegen.java.blueprint.member.Default BoleroField.property.defaultName = "NewField"
codegen.java.blueprint.member.Default BoleroField.property.hideInChooseList

codegen.java.blueprint.member.Default BoleroInterfaceField =
\/**
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroField
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 2
\ * @modifiability 2
\ * @boleroVisibility 3
\ * @typeName_0
\ * @initialValue_0
\ * @implGet_0
\ * @implSet_0
\ */
\    Object %Name% = 0;
codegen.java.blueprint.member.Default BoleroInterfaceField.property.defaultName = "NewField"
codegen.java.blueprint.member.Default BoleroInterfaceField.property.hideInChooseList

codegen.java.blueprint.member.Default BoleroMethod =
\/**
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroMethod
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 0
\ * @modifiability 2
\ * @boleroVisibility 0
\ * @typeName_0
\ * @initialValue_0
\ * @methodBody_0
\ * @kind 0
\ * @implicitParametersUnchecked true
\ * @thisModifiable 2
\ */
\    public void %Name% (){}
codegen.java.blueprint.member.Default BoleroMethod.property.defaultName = "NewMethod"
codegen.java.blueprint.member.Default BoleroMethod.property.hideInChooseList

codegen.java.blueprint.member.Default BoleroInterfaceMethod =
\/**
\ * @Name %Name%
\ * @Class com.softwareag.repository.infomodel.bolero.BoleroMethod
\ * @InfoModel com.softwareag.repository.infomodel.bolero.BoleroInfoModel
\ * @featureKind 2
\ * @modifiability 2
\ * @boleroVisibility 3
\ * @typeName_0
\ * @initialValue_0
\ * @methodBody_0
\ * @kind 0
\ * @implicitParametersUnchecked true
\ * @thisModifiable 2
\ */
\    void %Name%();
codegen.java.blueprint.member.Default BoleroInterfaceMethod.property.defaultName = "NewMethod"
codegen.java.blueprint.member.Default BoleroInterfaceMethod.property.hideInChooseList

#
