/******************************************************************************* * This file is part of the Symfony eclipse plugin. * * (c) Robert Gruendler <r.gruendler@gmail.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. ******************************************************************************/ package com.dubture.symfony.core.codeassist; import java.util.LinkedList; import java.util.List; import org.eclipse.php.core.codeassist.ICompletionContext; import org.eclipse.php.core.codeassist.ICompletionStrategy; import org.eclipse.php.core.codeassist.ICompletionStrategyFactory; import com.dubture.symfony.core.codeassist.contexts.EntityCompletionContext; import com.dubture.symfony.core.codeassist.contexts.RouteCompletionContext; import com.dubture.symfony.core.codeassist.contexts.ServiceContainerContext; import com.dubture.symfony.core.codeassist.contexts.TemplateVariableContext; import com.dubture.symfony.core.codeassist.contexts.TransUnitCompletionContext; import com.dubture.symfony.core.codeassist.contexts.ViewPathArgumentContext; import com.dubture.symfony.core.codeassist.strategies.EntityCompletionStrategy; import com.dubture.symfony.core.codeassist.strategies.RouteCompletionStrategy; import com.dubture.symfony.core.codeassist.strategies.ServiceContainerCompletionStrategy; import com.dubture.symfony.core.codeassist.strategies.TemplateVariableStrategy; import com.dubture.symfony.core.codeassist.strategies.TransUnitCompletionStrategy; import com.dubture.symfony.core.codeassist.strategies.ViewPathCompletionStrategy; /** * Factory class for CompletionStrategies. * * @author Robert Gruendler <r.gruendler@gmail.com> * */ public class SymfonyCompletionStrategyFactory implements ICompletionStrategyFactory { @SuppressWarnings("rawtypes") @Override public ICompletionStrategy[] create(ICompletionContext[] contexts) { List<ICompletionStrategy> result = new LinkedList<ICompletionStrategy>(); for (ICompletionContext context : contexts) { Class contextClass = context.getClass(); if (contextClass == ServiceContainerContext.class) { result.add(new ServiceContainerCompletionStrategy(context)); } else if (contextClass == TemplateVariableContext.class) { result.add(new TemplateVariableStrategy(context)); } else if (contextClass == RouteCompletionContext.class) { result.add(new RouteCompletionStrategy(context)); } else if (contextClass == ViewPathArgumentContext.class) { result.add(new ViewPathCompletionStrategy(context)); } else if (contextClass == EntityCompletionContext.class) { result.add(new EntityCompletionStrategy(context)); } else if (contextClass == TransUnitCompletionContext.class) { result.add(new TransUnitCompletionStrategy(context)); } } return (ICompletionStrategy[]) result .toArray(new ICompletionStrategy[result.size()]); } }