blob: fda6dd5a05564aafda29ac71e6d498dec6cf1db5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Oracle - initial API and implementation
* Vadim Dmitriev
*
********************************************************************************/
package org.eclipse.jst.jsf.taglibprocessing.attributevalues;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jst.jsf.common.internal.types.CompositeType;
import org.eclipse.jst.jsf.metadataprocessors.AbstractRootTypeDescriptor;
import org.eclipse.jst.jsf.metadataprocessors.features.ELIsNotValidException;
import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
import org.eclipse.jst.jsf.metadataprocessors.features.IValidELValues;
import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
/**
* Abstract meta-data processing type representing an enumeration attribute value runtime type
* <p><b>Provisional API - subject to change</b></p>
*/
public abstract class AbstractEnumerationType extends AbstractRootTypeDescriptor implements IValidValues, IDefaultValue, IValidELValues{
private List validationMessages;
/**
* An empty list
*/
protected static List EMPTY_LIST = new ArrayList(0);
/* (non-Javadoc)
* @see org.eclipse.jst.jsf.metadataprocessors.features.IValidValues#getValidationMessages()
*/
public List getValidationMessages() {
if (validationMessages == null){
validationMessages = new ArrayList();
}
return validationMessages;
}
/* (non-Javadoc)
* @see org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue#getDefaultValue()
*/
public String getDefaultValue() {
return getTraitValueAsString(IDefaultValue.DEFAULT_VALUE_PROP_NAME);
}
/**
* @return possible values of type as list of Strings using
* {@link IPossibleValues}.POSSIBLE_VALUES_PROP_NAME trait name
*/
protected List getMDPossibleValues() {
return getTraitValueAsListOfStrings(IPossibleValues.POSSIBLE_VALUES_PROP_NAME);
}
/**
* @return possible values of type to dislay as list of Strings using
* {@link IPossibleValues}.POSSIBLE_VALUES_FOR_DISPLAY_PROP_NAME trait name
*/
protected List getMDPossibleValuesForDisplay() {
return getTraitValueAsListOfStrings(IPossibleValues.POSSIBLE_VALUES_FOR_DISPLAY_PROP_NAME);
}
/**
* @return list of valid values as list of Strings using
* {@link IValidValues}.VALID_VALUES_PROP_NAME trait name
*/
protected List getMDValidValues() {
return getTraitValueAsListOfStrings(IValidValues.VALID_VALUES_PROP_NAME);
}
/**
* @return Validation message for type using
* {@link IValidValues}.VALID_VALUES_MESSAGE_PROP_NAME trait name
*/
protected String getMDValidationMessage() {
return getTraitValueAsString(IValidValues.VALID_VALUES_MESSAGE_PROP_NAME);
}
/**
* @return Validation severity int value for type using
* {@link IValidValues}.VALID_VALUES_SEVERITY_PROP_NAME trait name
*/
protected int getMDValidationSeverity() {
String val = getTraitValueAsString(IValidValues.VALID_VALUES_SEVERITY_PROP_NAME);
if (val == null)
return IStatus.WARNING;
int severity = Integer.valueOf(val).intValue();
return severity;
}
/**
* @return Validation code as String value for type using
* {@link IValidValues}.VALID_VALUES_CODE_PROP_NAME trait name
*/
protected String getMDValidationCode() {
return getTraitValueAsString(IValidValues.VALID_VALUES_CODE_PROP_NAME);
}
/**
* Create a {@link ValidationMessage} from metadata or use default message
* and add it to the collection of validation messages
* @param defaultMsg
*/
protected void addNewValidationMessage(String defaultMsg) {
String msg = getMDValidationMessage();
if (msg == null || msg.equals("")) //$NON-NLS-1$
msg = defaultMsg;
String code = getMDValidationCode();
int severity = getMDValidationSeverity();
ValidationMessage val = new ValidationMessage(msg, code, severity);
getValidationMessages().add(val);
}
/**
* @return the value of {@link org.eclipse.jst.jsf.common.internal.types.IAssignable}.ASSIGNMENT_TYPE_NONE. Subclasses to override.
*/
protected int getAssignmentType(){
return 0;
}
/* (non-Javadoc)
* @see org.eclipse.jst.jsf.metadataprocessors.features.IValidELValues#getExpectedRuntimeType()
*/
public abstract CompositeType getExpectedRuntimeType() throws ELIsNotValidException;
}