private IConstraint createConstraint(Constraint constraint, final Map<String, Integer> dimensionIndex) {
        ConstraintTypeEnum type = constraint.type();
        final String[] constraintSequence = new String[dimensionIndex.size()];
        final ConstraintDimension[] combination = constraint.combination();
        for ( ConstraintDimension constraintDimension : combination ) {
            Integer index = dimensionIndex.get(constraintDimension.name());
            constraintSequence[index] = constraintDimension.value();
        }
        if ( ConstraintTypeEnum.Inclusion == type ) {
            for ( int i = 0; i < constraintSequence.length; i++ ) {
                if ( null == constraintSequence[i] ) {
                    constraintSequence[i] = IConstraint.INCLUSION_PLACEHOLDER;
                }
            }
            return new InclusionConstraint(constraintSequence);
        } else {
            for ( int i = 0; i < constraintSequence.length; i++ ) {
                if ( null == constraintSequence[i] ) {
                    constraintSequence[i] = IConstraint.EXCLUSION_PLACEHOLDER;
                }
            }
            return new ExclusionConstraint(constraintSequence);
        }
    }