/** * Copyright (c) 2011 committers of YAKINDU and others. * 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: * committers of YAKINDU - initial API and implementation */ package org.yakindu.sct.generator.core.library; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EcoreUtil; import org.yakindu.sct.generator.core.GeneratorActivator; import org.yakindu.sct.generator.core.filesystem.ISCTWorkspaceAccess; import org.yakindu.sct.model.sgen.FeatureConfiguration; import org.yakindu.sct.model.sgen.FeatureParameter; import org.yakindu.sct.model.sgen.FeatureParameterValue; import org.yakindu.sct.model.sgen.FeatureType; import org.yakindu.sct.model.sgen.SGenFactory; import com.google.inject.Inject; /** * * @author andreas muelder - Initial contribution and API * */ public abstract class AbstractDefaultFeatureValueProvider implements IDefaultFeatureValueProvider { protected static final SGenFactory factory = SGenFactory.eINSTANCE; @Inject protected ISCTWorkspaceAccess access; protected abstract void setDefaultValue(FeatureType featureType, FeatureParameterValue parameterValue, EObject contextElement); public final FeatureConfiguration createDefaultFeatureConfiguration(FeatureType type, EObject contextElement) { FeatureConfiguration config = createConfiguration(type); EList<FeatureParameter> parameters = type.getParameters(); for (FeatureParameter parameter : parameters) { FeatureParameterValue parameterValue = createParameterValue(type, parameter, contextElement); if (parameterValue != null && parameterValue.getExpression() != null) { config.getParameterValues().add(parameterValue); } } return config; } protected FeatureParameterValue createParameterValue(FeatureType featureType, FeatureParameter parameter, EObject contextElement) { FeatureParameterValue parameterValue = factory.createFeatureParameterValue(); parameterValue.setParameter(parameter); setDefaultValue(featureType, parameterValue, contextElement); return parameterValue; } protected FeatureConfiguration createConfiguration(FeatureType type) { FeatureConfiguration result = factory.createFeatureConfiguration(); result.setType(type); return result; } protected String getProjectName(EObject contextElement) { URI uri = EcoreUtil.getURI(contextElement); if (uri.isPlatformResource() && uri.segmentCount() > 1) { return uri.segment(1); // 0 is resource } return "ProjectName"; } protected IStatus error(String msg) { return new Status(IStatus.ERROR, GeneratorActivator.PLUGIN_ID, msg); } protected IStatus warning(String msg) { return new Status(IStatus.WARNING, GeneratorActivator.PLUGIN_ID, msg); } }