blob: dd6f85c0636b9f2bfda1b782e39880882a46ec9a [file] [log] [blame]
package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.impl;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.IdentifiableLangStringValue;
/**
* A private utility class for use by Facelet Taglib model impls.
*
* @author cbateman
*
*/
class Util
{
public static String concat(final EObject listOwner,
final EList<? extends IdentifiableLangStringValue> list,
final String filterString,
final String separationString)
{
if (filterString == null)
{
throw new NullPointerException("language must not be null"); //$NON-NLS-1$
}
String retString = ""; //$NON-NLS-1$
for (final IdentifiableLangStringValue obj : list)
{
if (obj != null
&& passesFilter(filterString.length() == 0 ? null
: filterString, obj))
{
String value = obj.getValue();
if (value != null)
{
value = value.trim();
if (retString.length() != 0)
{
retString += separationString;
}
retString += value;
}
}
}
return retString;
}
private static boolean passesFilter(final String expectedLang,
final IdentifiableLangStringValue langOwner)
{
final Object lang = langOwner.getLang();
return ((expectedLang == null && lang == null) || (expectedLang != null && expectedLang
.equals(lang)));
}
public static Object getSimplifiedNestedField(final EObject owner,
final EReference firstLevelFeature, EAttribute simplifiedFeature)
{
Object complexObject = owner.eGet(firstLevelFeature);
if (complexObject instanceof EObject)
{
return ((EObject) complexObject).eGet(simplifiedFeature);
}
return null;
}
public static void setSimplifiedNestedField(final EObject owner,
final EReference firstLevelFeature, EAttribute simplifiedFeature,
final Object newSimpleValue)
{
Object complexObject = owner.eGet(firstLevelFeature);
if (complexObject == null)
{
complexObject = EcoreUtil.create((EClass) firstLevelFeature.getEType());
((EObject) complexObject).eSet(simplifiedFeature, newSimpleValue);
owner.eSet(firstLevelFeature, complexObject);
} else
{
((EObject) complexObject).eSet(simplifiedFeature, newSimpleValue);
}
}
}