/******************************************************************************* * 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.index; import java.sql.Connection; import java.util.List; import org.eclipse.core.runtime.IPath; import com.dubture.symfony.index.dao.IParameterDao; import com.dubture.symfony.index.dao.IResourceDao; import com.dubture.symfony.index.dao.IRouteDao; import com.dubture.symfony.index.dao.IServiceDao; import com.dubture.symfony.index.dao.ITransUnitDao; import com.dubture.symfony.index.handler.IResourceHandler; import com.dubture.symfony.index.handler.IServiceHandler; import com.dubture.symfony.index.handler.ITranslationHandler; import com.dubture.symfony.index.log.Logger; import com.dubture.symfony.index.model.Parameter; import com.dubture.symfony.index.model.Route; import com.dubture.symfony.index.model.RoutingResource; import com.dubture.symfony.index.model.TransUnit; /** * * {@link SymfonyIndexer} is the main class to index * Symfony2 services and routes in a local H2 SQL * database. * * * @author Robert Gruendler <r.gruendler@gmail.com> * */ public class SymfonyIndexer { private static SymfonyIndexer instance = null; private SymfonyDbFactory factory; private IServiceDao serviceDao; private IRouteDao routeDao; private IResourceDao resourceDao; private ITransUnitDao transDao; private IParameterDao paramDao; private Connection connection; private SymfonyIndexer() throws Exception { factory = SymfonyDbFactory.getInstance(); serviceDao = factory.getServiceDao(); routeDao = factory.getRouteDao(); transDao = factory.getTransDao(); resourceDao = factory.getResourceDao(); paramDao = factory.getParamDao(); connection = SymfonyDbFactory.getInstance().createConnection(); } public static SymfonyIndexer getInstance() throws Exception { if (instance == null) { instance = new SymfonyIndexer(); } return instance; } public void addRoute(Route route, IPath path) { addRoute(route.name, route.pattern, route.controller, route.bundle, route.action, path); } public void addRoute(String name, String pattern, String controller, String bundle, String action, IPath path) { try { routeDao.deleteRoutesByPath(name, path); routeDao.insert(connection, name, pattern, controller, bundle, action, path); } catch (Exception e) { Logger.logException(e); } } public void addService(String id, String phpClass, String _public, List<String> tags, String path, int timestamp) { try { serviceDao.delete(id, path); serviceDao.insert(connection, id, phpClass, _public, tags, path, timestamp); } catch (Exception e) { Logger.logException(e); } } public void deleteServices(String path) { serviceDao.deleteServices(path); } public void enterServices(String path) { serviceDao.deleteServices(path); paramDao.deleteParameters(path); } public void exitServices() { try { serviceDao.commitInsertions(); paramDao.commitInsertions(); } catch (Exception e) { Logger.logException(e); } } public void findServices(String string, IServiceHandler iServiceHandler) { serviceDao.findServicesByPath(string, iServiceHandler); } public void findServicesByClassName(String className, String path, IServiceHandler iServiceHandler) { serviceDao.findServicesByClassName(className, path, iServiceHandler); } public void findService(String id, String path, IServiceHandler iServiceHandler) { serviceDao.findService(id, path, iServiceHandler); } public List<String> findTags(IPath path) { return serviceDao.findTags(path); } public void exitRoutes() { try { routeDao.commitInsertions(); } catch (Exception e) { Logger.logException(e); } } public List<Route> findRoutes(IPath path) { try { return routeDao.findRoutes(path); } catch (Exception e) { Logger.logException(e); return null; } } public List<Parameter> findParameters(IPath path) { try { return paramDao.findParameters(path); } catch (Exception e) { Logger.logException(e); return null; } } public List<Route> findRoutes(IPath path, String prefix) { try { return routeDao.findRoutes(prefix, path); } catch (Exception e) { Logger.logException(e); return null; } } public Route findRoute(String route, IPath path) { try { return routeDao.findRoute(route, path); } catch (Exception e) { Logger.logException(e); return null; } } public void addTranslation(TransUnit unit, String path, int timestamp) { try { transDao.deleteRoutesByPath(unit.name, unit.language, path); transDao.insert(connection, path, unit.name, unit.value, unit.language, timestamp); } catch (Exception e) { Logger.logException(e); } } public void addParameter(String key, String value, IPath path) { try { paramDao.insert(connection, key, value, path); } catch (Exception e) { Logger.logException(e); } } public void exitTranslations() { try { transDao.commitInsertions(); } catch (Exception e) { Logger.logException(e); } } public void findTranslations(String path, ITranslationHandler iTranslationHandler) { transDao.findTranslations(path, iTranslationHandler); } public void findTranslations(String name, String path, ITranslationHandler handler) { transDao.findTranslations(name, path, handler); } public List<Route> findRoutesByBundle(String bundleAlias, IPath path) { return routeDao.findRoutesByBundle(bundleAlias, path); } public List<Route> findRoutesByController(String bundleAlias, String controller, IPath path) { return routeDao.findRoutesByController(bundleAlias, controller, path); } public void addResource(RoutingResource resource, IPath fullPath) { try { // routeDao.deleteRoutesByPath(name, path); resourceDao.insert(connection, resource.getPath(), resource.getType(), resource.getPrefix(), fullPath); } catch (Exception e) { Logger.logException(e); } } public void exitResources() { try { resourceDao.commitInsertions(); } catch (Exception e) { Logger.logException(e); } } public void findResources(IPath path, IResourceHandler iResourceHandler) { resourceDao.findResource(path, iResourceHandler); } }