All Downloads are FREE. Search and download functionalities are using the official Maven repository.

extensions.Validation.ext Maven / Gradle / Ivy

The newest version!
import guidesign;
import guidesign::types;
import pom;
import core;
import dom;

extension extensions::Expression;
extension org::openxma::dsl::common::extensions::LogUtil;

String getValueAsString(ParameterValue pv):

    (pv.isNull)
        ? null
        : ((IntegerParameterValue.isInstance(pv))
                ? ((IntegerParameterValue)pv).intValue.toString()
                : ((StringParameterValue.isInstance(pv))
                    ? ((StringParameterValue)pv).stringValue
                    : ((BooleanParameterValue.isInstance(pv))
                        ? ((BooleanParameterValue)pv).booleanValue.toString()
                        : null)))
;

String toCustomString(ParameterDefinition pd):
    let str = pd.name+"("+pd.type.toString()+")":
    str;

String toCustomString(ParameterValue pv):

    let str = (pv.referencedParameter == null)
        ? pv.getValueAsString()
        : "->"+pv.referencedParameter.name:
    str;

/*
 * Create an informative string for DataTypeAndTypeParameter for logging
 *
 */
String toCustomString(DataTypeAndTypeParameter tp):

    let bt = ((SimpleType)tp.dataType).typeDefinition.definition.dataType:
    let bv = ((SimpleType)tp.dataType).validatorReference.validator:

    let str = tp.dataType.id()+
        " PDef: "+((SimpleType)tp.dataType).typeParameter.toCustomString()+
        " PVal: "+tp.parameterValues.toCustomString()+
        ((bt != null) ? " >>(DataType) "+bt.id(): "" )+
        ((bv != null) ? " >>(Validator) "+bv.id(): ""):

    str;

//
String getParameterValue(ParameterValue pv, List[ReferenceWithParameter] definitionStack, Integer stackIndex):

    //log("ParameterValue: value="+pv.getValueAsString()+", ref="+pv.referencedParameter.name)->

    (pv.referencedParameter == null)
        ? pv.getValueAsString()
        : pv.referencedParameter.getValueOfReferencedParameter(definitionStack,stackIndex)
    ;


String getValueOfReferencedParameter(ParameterDefinition pd, List[ReferenceWithParameter] definitionStack, Integer stackIndex):

    let currentDefinition = definitionStack.get(stackIndex):

    let parameters = currentDefinition.parameterValues:
    let parameterDefs = currentDefinition.getParameterDefinitions():

    let def = parameterDefs.selectFirst(e|e.name == pd.name):
    let index = parameterDefs.indexOf(def):

    //log("Parent-definition found: "+def.name+", index: "+index.toString())->

    (def != null)
        ? parameters.getParameterValueForIndex(index,definitionStack,stackIndex-1)
        : getValueOfReferencedParameter(pd,definitionStack,stackIndex-1)
;

String getParameterValueForIndex(List[ParameterValue] parameters, Integer index,List[ReferenceWithParameter] definitionStack, Integer stackIndex):

    (index > -1 && parameters.size > index)
        ? parameters.get(index).getParameterValue(definitionStack,stackIndex)
        : null;

//
String getValueForIndex(List[String] stringList, Integer index):

    (stringList.size>index && stringList.get(index) != null)
        ? stringList.get(index)
        : ""
;


/*
 * See: validator I18NEnumerationValidator(string dataSourcePrefix, string dataSourceName)
 */
cached String getXMADomainSpezification(DataTypeAndTypeParameter dataTypeAndTypeParameter):

    let definitionStack = dataTypeAndTypeParameter.getDefinitionStack():
    let validatorReference = dataTypeAndTypeParameter.getValidatorReferenceDefinition():

    let parameterValues = validatorReference.parameterValues.getParameterValue(definitionStack,definitionStack.size-1):

    let dataSourcePrefix = parameterValues.getValueForIndex(0):
    let dataSourceName = parameterValues.getValueForIndex(1):

    let spezification = (dataSourceName.length != 0)
        ? dataSourcePrefix+dataSourceName
        : null:

    spezification;

/**
 * Get the information whether the SimpleType is a isI18NEnumeration.
 * This means that it is a "domain"-type in XMA.
 */
cached boolean isI18NEnumeration(DataTypeAndTypeParameter dataTypeAndTypeParameter):

    let validatorReference = getValidatorReferenceDefinition(dataTypeAndTypeParameter):
    let validatorName = validatorReference.validator.name:

    (validatorName == "I18NEnumerationValidator")
        ? true
        : false;

cached boolean isBoolean(DataTypeAndTypeParameter dataTypeAndTypeParameter):

    let validatorReference = dataTypeAndTypeParameter.getValidatorReferenceDefinition():
    let validatorName = validatorReference.validator.name:

    (validatorName == "BooleanValidator")
        ? true
        : false;

cached boolean isDate(DataTypeAndTypeParameter dataTypeAndTypeParameter):

    let validatorReference = dataTypeAndTypeParameter.getValidatorReferenceDefinition():
    let validatorName = validatorReference.validator.name:

    (validatorName == "DateValidator")
        ? true
        : false;


String id(emf::EObject x) :
    let p = x.metaType.getProperty("name") :
        p==null?
            null :
            p.get(x);

String getPrecision(DataTypeAndTypeParameter type):
    type.hasNumberValidator() ?
    (let xmaValidator = ((BcdValidator)type.getValidatorReferenceDefinition().createXMAValidator(type.getDefinitionStack())) :
    xmaValidator.cntBeforeComma.asInteger() + (xmaValidator.cntAfterComma.length>0 ? xmaValidator.cntAfterComma.asInteger() : 0 ))
    : null
;

String getScale(DataTypeAndTypeParameter type):
    type.hasNumberValidator() ?
    (let xmaValidator = ((BcdValidator)type.getValidatorReferenceDefinition().createXMAValidator(type.getDefinitionStack())) :
     xmaValidator.cntAfterComma.asInteger())
    : null
;

/**
 * JAVA extensions
 */
boolean isDateValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isDateValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean isTimestampValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isTimestampValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean isNumberValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isNumberValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean isStringValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isStringValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean isCustomValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isCustomValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean isUserDefinedValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.isUserDefinedValidator(org.openxma.dsl.core.model.ValidatorReference);

boolean hasDateValidator(DataTypeAndTypeParameter dataTypeAndTypeParameter):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.hasDateValidator(org.openxma.dsl.core.model.DataTypeAndTypeParameter);

boolean hasTimeStampValidator(DataTypeAndTypeParameter dataTypeAndTypeParameter):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.hasTimeStampValidator(org.openxma.dsl.core.model.DataTypeAndTypeParameter);

boolean hasDateOrTimeStampValidator(DataTypeAndTypeParameter dataTypeAndTypeParameter):
 dataTypeAndTypeParameter.hasDateValidator() || dataTypeAndTypeParameter.hasTimeStampValidator();

boolean hasNumberValidator(DataTypeAndTypeParameter dataTypeAndTypeParameter):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.hasNumberValidator(org.openxma.dsl.core.model.DataTypeAndTypeParameter);

boolean hasStringValidator(DataTypeAndTypeParameter dataTypeAndTypeParameter):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.hasStringValidator(org.openxma.dsl.core.model.DataTypeAndTypeParameter);

boolean hasStringValidator(SimpleType simpleType):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.hasStringValidator(org.openxma.dsl.core.model.SimpleType);

guidesign::Validator createXMAValidator(ValidatorReference validatorReference):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.createXMAValidator(org.openxma.dsl.core.model.ValidatorReference);

guidesign::Validator createXMAValidator(ValidatorReference validatorReference, List[DataTypeAndTypeParameter] definitionStack):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.createXMAValidator(org.openxma.dsl.core.model.ValidatorReference, java.util.List);

guidesign::Validator createStringValidator(List[String] parameters):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.createStringValidator(java.util.List);

List[ReferenceWithParameter] getDefinitionStack(ReferenceWithParameter typeAndParameter):
JAVA org.openxma.dsl.generator.helper.SimpleTypeExtension.getDefinitionStack(org.openxma.dsl.core.model.ReferenceWithParameter);

List[ParameterDefinition] getParameterDefinitions(ReferenceWithParameter referenceWithParameter):
JAVA org.openxma.dsl.generator.helper.SimpleTypeExtension.getParameterDefinitions(org.openxma.dsl.core.model.ReferenceWithParameter);

String getMaxLength(DataTypeAndTypeParameter type):
JAVA org.openxma.dsl.generator.helper.ValidatorExtension.getMaxLength(org.openxma.dsl.core.model.DataTypeAndTypeParameter);

/**
 * Get the ValidatorReference definition and determine the definition-stack.
 * (Use this method in all cases where the definition-stack in not already
  * available.)
 */
cached ValidatorReference getValidatorReferenceDefinition(DataTypeAndTypeParameter dataTypeAndTypeParameter):
JAVA org.openxma.dsl.generator.helper.SimpleTypeExtension.getValidatorReferenceDefinition(org.openxma.dsl.core.model.DataTypeAndTypeParameter);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy