public static Object getMainFacetValue(XSDConstrainingFacet facet) { Object rv = null; int facetClassifierID = facet.eClass().getClassifierID(); switch (facetClassifierID) { case XSDPackage.XSD_LENGTH_FACET: { XSDLengthFacet lf = (XSDLengthFacet) facet; rv = new Integer(lf.getValue()); } break; case XSDPackage.XSD_MAX_LENGTH_FACET: { XSDMaxLengthFacet mf = (XSDMaxLengthFacet) facet; rv = new Integer(mf.getValue()); } break; case XSDPackage.XSD_MIN_LENGTH_FACET: { XSDMinLengthFacet mf = (XSDMinLengthFacet) facet; rv = new Integer(mf.getValue()); } break; case XSDPackage.XSD_PATTERN_FACET: { XSDPatternFacet pf = (XSDPatternFacet) facet; List value = pf.getValue(); if (value.size() > 1) { // skip this, it is a multi-element rv = value; } else if (value.size() == 1) { // single entry, use it: rv = value.get(0); } else { // no elements; try the lex value: rv = pf.getLexicalValue(); } // endif } break; case XSDPackage.XSD_ENUMERATION_FACET: { XSDEnumerationFacet ef = (XSDEnumerationFacet) facet; List value = ef.getValue(); if (value.size() > 1) { // skip this, it is a multi-element rv = value; } else if (value.size() == 1) { // single entry, use it: rv = value.get(0); } else { // no elements; try the lex value: rv = ef.getLexicalValue(); } // endif } break; case XSDPackage.XSD_WHITE_SPACE_FACET: { XSDWhiteSpaceFacet wf = (XSDWhiteSpaceFacet) facet; rv = wf.getValue().getName(); } break; case XSDPackage.XSD_MIN_EXCLUSIVE_FACET: case XSDPackage.XSD_MIN_INCLUSIVE_FACET: { XSDMinFacet mf = (XSDMinFacet) facet; // defect 18279 - read as string, since the backing datatype can be in different value // spaces. int value; try { String lexicalValue = mf.getLexicalValue(); if (lexicalValue != null) { value = Integer.parseInt(lexicalValue); } else { // it is null, use invalid number: value = -Integer.MAX_VALUE; } // endif } catch (NumberFormatException ex) { value = DEFAULT_MIN_BOUNDS; } // endtry rv = new InclusiveInteger(value, mf.isInclusive()); } break; case XSDPackage.XSD_MAX_EXCLUSIVE_FACET: case XSDPackage.XSD_MAX_INCLUSIVE_FACET: { XSDMaxFacet mf = (XSDMaxFacet) facet; // defect 18279 - read as string, since the backing datatype can be in different value // spaces. int value; try { String lexicalValue = mf.getLexicalValue(); if (lexicalValue != null) { value = Integer.parseInt(lexicalValue); } else { // it is null, use zero: value = -Integer.MAX_VALUE; } // endif } catch (NumberFormatException ex) { value = DEFAULT_MAX_BOUNDS; } // endtry rv = new InclusiveInteger(value, mf.isInclusive()); } break; case XSDPackage.XSD_FRACTION_DIGITS_FACET: { XSDFractionDigitsFacet ff = (XSDFractionDigitsFacet) facet; rv = new Integer(ff.getValue()); } break; case XSDPackage.XSD_TOTAL_DIGITS_FACET: { XSDTotalDigitsFacet tf = (XSDTotalDigitsFacet) facet; rv = new Integer(tf.getValue()); } break; default: ModelerXsdUiConstants.Util.log( ModelerXsdUiConstants.Util.getString(ERROR_KEY_UNUSABLE_FACET, facet)); break; } // endswitch return rv; }