Search in sources :

Example 1 with ITicketService

use of com.gitblit.tickets.ITicketService in project gitblit by gitblit.

the class MigrateTickets method migrate.

/**
 * Migrate all tickets
 *
 * @param baseFolder
 * @param settings
 * @param outputServiceName
 */
protected void migrate(File baseFolder, IStoredSettings settings, String outputServiceName) {
    // disable some services
    settings.overrideSetting(Keys.web.allowLuceneIndexing, false);
    settings.overrideSetting(Keys.git.enableGarbageCollection, false);
    settings.overrideSetting(Keys.git.enableMirroring, false);
    settings.overrideSetting(Keys.web.activityCacheDays, 0);
    settings.overrideSetting(ITicketService.SETTING_UPDATE_DIFFSTATS, false);
    XssFilter xssFilter = new AllowXssFilter();
    IRuntimeManager runtimeManager = new RuntimeManager(settings, xssFilter, baseFolder).start();
    IRepositoryManager repositoryManager = new RepositoryManager(runtimeManager, null, null).start();
    String inputServiceName = settings.getString(Keys.tickets.service, BranchTicketService.class.getSimpleName());
    if (StringUtils.isEmpty(inputServiceName)) {
        System.err.println(MessageFormat.format("Please define a ticket service in \"{0}\"", Keys.tickets.service));
        System.exit(1);
    }
    ITicketService inputService = null;
    ITicketService outputService = null;
    try {
        inputService = getService(inputServiceName, runtimeManager, repositoryManager);
        outputService = getService(outputServiceName, runtimeManager, repositoryManager);
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(1);
    }
    if (!inputService.isReady()) {
        System.err.println(String.format("%s INPUT service is not ready, check config.", inputService.getClass().getSimpleName()));
        System.exit(1);
    }
    if (!outputService.isReady()) {
        System.err.println(String.format("%s OUTPUT service is not ready, check config.", outputService.getClass().getSimpleName()));
        System.exit(1);
    }
    // migrate tickets
    long start = System.nanoTime();
    long totalTickets = 0;
    long totalChanges = 0;
    for (RepositoryModel repository : repositoryManager.getRepositoryModels()) {
        Set<Long> ids = inputService.getIds(repository);
        if (ids == null || ids.isEmpty()) {
            // nothing to migrate
            continue;
        }
        // delete any tickets we may have in the output ticket service
        outputService.deleteAll(repository);
        for (long id : ids) {
            List<Change> journal = inputService.getJournal(repository, id);
            if (journal == null || journal.size() == 0) {
                continue;
            }
            TicketModel ticket = outputService.createTicket(repository, id, journal.get(0));
            if (ticket == null) {
                System.err.println(String.format("Failed to migrate %s #%s", repository.name, id));
                System.exit(1);
            }
            totalTickets++;
            System.out.println(String.format("%s #%s: %s", repository.name, ticket.number, ticket.title));
            for (int i = 1; i < journal.size(); i++) {
                TicketModel updated = outputService.updateTicket(repository, ticket.number, journal.get(i));
                if (updated != null) {
                    System.out.println(String.format("   applied change %d", i));
                    totalChanges++;
                } else {
                    System.err.println(String.format("Failed to apply change %d:\n%s", i, journal.get(i)));
                    System.exit(1);
                }
            }
        }
    }
    inputService.stop();
    outputService.stop();
    repositoryManager.stop();
    runtimeManager.stop();
    long end = System.nanoTime();
    System.out.println(String.format("Migrated %d tickets composed of %d journal entries in %d seconds", totalTickets, totalTickets + totalChanges, TimeUnit.NANOSECONDS.toSeconds(end - start)));
}
Also used : ITicketService(com.gitblit.tickets.ITicketService) BranchTicketService(com.gitblit.tickets.BranchTicketService) IRuntimeManager(com.gitblit.manager.IRuntimeManager) RuntimeManager(com.gitblit.manager.RuntimeManager) IRepositoryManager(com.gitblit.manager.IRepositoryManager) TicketModel(com.gitblit.models.TicketModel) RepositoryModel(com.gitblit.models.RepositoryModel) Change(com.gitblit.models.TicketModel.Change) CmdLineException(org.kohsuke.args4j.CmdLineException) IRuntimeManager(com.gitblit.manager.IRuntimeManager) AllowXssFilter(com.gitblit.utils.XssFilter.AllowXssFilter) XssFilter(com.gitblit.utils.XssFilter) AllowXssFilter(com.gitblit.utils.XssFilter.AllowXssFilter) IRepositoryManager(com.gitblit.manager.IRepositoryManager) RepositoryManager(com.gitblit.manager.RepositoryManager)

Example 2 with ITicketService

use of com.gitblit.tickets.ITicketService in project gitblit by gitblit.

the class ReindexTickets method reindex.

/**
 * Reindex all tickets
 *
 * @param settings
 */
protected void reindex(File baseFolder, IStoredSettings settings) {
    // disable some services
    settings.overrideSetting(Keys.web.allowLuceneIndexing, false);
    settings.overrideSetting(Keys.git.enableGarbageCollection, false);
    settings.overrideSetting(Keys.git.enableMirroring, false);
    settings.overrideSetting(Keys.web.activityCacheDays, 0);
    XssFilter xssFilter = new AllowXssFilter();
    IRuntimeManager runtimeManager = new RuntimeManager(settings, xssFilter, baseFolder).start();
    IRepositoryManager repositoryManager = new RepositoryManager(runtimeManager, null, null).start();
    String serviceName = settings.getString(Keys.tickets.service, BranchTicketService.class.getSimpleName());
    if (StringUtils.isEmpty(serviceName)) {
        System.err.println(MessageFormat.format("Please define a ticket service in \"{0}\"", Keys.tickets.service));
        System.exit(1);
    }
    ITicketService ticketService = null;
    try {
        Class<?> serviceClass = Class.forName(serviceName);
        if (RedisTicketService.class.isAssignableFrom(serviceClass)) {
            // Redis ticket service
            ticketService = new RedisTicketService(runtimeManager, null, null, null, repositoryManager).start();
        } else if (BranchTicketService.class.isAssignableFrom(serviceClass)) {
            // Branch ticket service
            ticketService = new BranchTicketService(runtimeManager, null, null, null, repositoryManager).start();
        } else if (FileTicketService.class.isAssignableFrom(serviceClass)) {
            // File ticket service
            ticketService = new FileTicketService(runtimeManager, null, null, null, repositoryManager).start();
        } else {
            System.err.println("Unknown ticket service " + serviceName);
            System.exit(1);
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(1);
    }
    ticketService.reindex();
    ticketService.stop();
    repositoryManager.stop();
    runtimeManager.stop();
}
Also used : ITicketService(com.gitblit.tickets.ITicketService) BranchTicketService(com.gitblit.tickets.BranchTicketService) IRuntimeManager(com.gitblit.manager.IRuntimeManager) RuntimeManager(com.gitblit.manager.RuntimeManager) IRepositoryManager(com.gitblit.manager.IRepositoryManager) CmdLineException(org.kohsuke.args4j.CmdLineException) IRuntimeManager(com.gitblit.manager.IRuntimeManager) RedisTicketService(com.gitblit.tickets.RedisTicketService) AllowXssFilter(com.gitblit.utils.XssFilter.AllowXssFilter) XssFilter(com.gitblit.utils.XssFilter) FileTicketService(com.gitblit.tickets.FileTicketService) AllowXssFilter(com.gitblit.utils.XssFilter.AllowXssFilter) IRepositoryManager(com.gitblit.manager.IRepositoryManager) RepositoryManager(com.gitblit.manager.RepositoryManager)

Example 3 with ITicketService

use of com.gitblit.tickets.ITicketService in project gitblit by gitblit.

the class ITicketServiceProvider method get.

@Override
public synchronized ITicketService get() {
    if (service != null) {
        return service;
    }
    IStoredSettings settings = runtimeManager.getSettings();
    String clazz = settings.getString(Keys.tickets.service, NullTicketService.class.getName());
    if (StringUtils.isEmpty(clazz)) {
        clazz = NullTicketService.class.getName();
    }
    try {
        Class<? extends ITicketService> serviceClass = (Class<? extends ITicketService>) Class.forName(clazz);
        service = runtimeManager.getInjector().getInstance(serviceClass);
    } catch (Exception e) {
        logger.error("failed to create ticket service", e);
        service = runtimeManager.getInjector().getInstance(NullTicketService.class);
    }
    return service;
}
Also used : ITicketService(com.gitblit.tickets.ITicketService) NullTicketService(com.gitblit.tickets.NullTicketService) IStoredSettings(com.gitblit.IStoredSettings)

Example 4 with ITicketService

use of com.gitblit.tickets.ITicketService in project gitblit by gitblit.

the class MigrateTickets method getService.

protected ITicketService getService(String serviceName, IRuntimeManager runtimeManager, IRepositoryManager repositoryManager) throws Exception {
    ITicketService service = null;
    Class<?> serviceClass = Class.forName(serviceName);
    if (RedisTicketService.class.isAssignableFrom(serviceClass)) {
        // Redis ticket service
        service = new RedisTicketService(runtimeManager, null, null, null, repositoryManager).start();
    } else if (BranchTicketService.class.isAssignableFrom(serviceClass)) {
        // Branch ticket service
        service = new BranchTicketService(runtimeManager, null, null, null, repositoryManager).start();
    } else if (FileTicketService.class.isAssignableFrom(serviceClass)) {
        // File ticket service
        service = new FileTicketService(runtimeManager, null, null, null, repositoryManager).start();
    } else {
        System.err.println("Unknown ticket service " + serviceName);
    }
    return service;
}
Also used : ITicketService(com.gitblit.tickets.ITicketService) RedisTicketService(com.gitblit.tickets.RedisTicketService) BranchTicketService(com.gitblit.tickets.BranchTicketService) FileTicketService(com.gitblit.tickets.FileTicketService)

Aggregations

ITicketService (com.gitblit.tickets.ITicketService)4 BranchTicketService (com.gitblit.tickets.BranchTicketService)3 IRepositoryManager (com.gitblit.manager.IRepositoryManager)2 IRuntimeManager (com.gitblit.manager.IRuntimeManager)2 RepositoryManager (com.gitblit.manager.RepositoryManager)2 RuntimeManager (com.gitblit.manager.RuntimeManager)2 FileTicketService (com.gitblit.tickets.FileTicketService)2 RedisTicketService (com.gitblit.tickets.RedisTicketService)2 XssFilter (com.gitblit.utils.XssFilter)2 AllowXssFilter (com.gitblit.utils.XssFilter.AllowXssFilter)2 CmdLineException (org.kohsuke.args4j.CmdLineException)2 IStoredSettings (com.gitblit.IStoredSettings)1 RepositoryModel (com.gitblit.models.RepositoryModel)1 TicketModel (com.gitblit.models.TicketModel)1 Change (com.gitblit.models.TicketModel.Change)1 NullTicketService (com.gitblit.tickets.NullTicketService)1