From e41e8f8c3bc9f5edab1d271464364f95620ece8c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 19 Nov 2015 17:55:38 -0500 Subject: [PATCH] Create filestore directory on startup --- src/main/java/com/gitblit/tickets/ITicketService.java | 68 ++++++++++++++++++++++++++++++---- 1 files changed, 60 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java index 3261ca9..5e3e372 100644 --- a/src/main/java/com/gitblit/tickets/ITicketService.java +++ b/src/main/java/com/gitblit/tickets/ITicketService.java @@ -36,6 +36,7 @@ import com.gitblit.IStoredSettings; import com.gitblit.Keys; import com.gitblit.extensions.TicketHook; +import com.gitblit.manager.IManager; import com.gitblit.manager.INotificationManager; import com.gitblit.manager.IPluginManager; import com.gitblit.manager.IRepositoryManager; @@ -63,7 +64,9 @@ * @author James Moger * */ -public abstract class ITicketService { +public abstract class ITicketService implements IManager { + + public static final String SETTING_UPDATE_DIFFSTATS = "migration.updateDiffstats"; private static final String LABEL = "label"; @@ -106,6 +109,8 @@ private final Map<String, List<TicketLabel>> labelsCache; private final Map<String, List<TicketMilestone>> milestonesCache; + + private final boolean updateDiffstats; private static class TicketKey { final String repository; @@ -164,18 +169,22 @@ this.labelsCache = new ConcurrentHashMap<String, List<TicketLabel>>(); this.milestonesCache = new ConcurrentHashMap<String, List<TicketMilestone>>(); + + this.updateDiffstats = settings.getBoolean(SETTING_UPDATE_DIFFSTATS, true); } /** * Start the service. * @since 1.4.0 */ + @Override public abstract ITicketService start(); /** * Stop the service. * @since 1.4.0 */ + @Override public final ITicketService stop() { indexer.close(); ticketsCache.invalidateAll(); @@ -245,6 +254,7 @@ */ public boolean isAcceptingTicketUpdates(RepositoryModel repository) { return isReady() + && repository.hasCommits && repository.isBare && !repository.isFrozen && !repository.isMirror; @@ -663,21 +673,24 @@ Repository db = null; try { db = repositoryManager.getRepository(repository.name); - TicketMilestone milestone = getMilestone(repository, oldName); + TicketMilestone tm = getMilestone(repository, oldName); + if (tm == null) { + return false; + } StoredConfig config = db.getConfig(); config.unsetSection(MILESTONE, oldName); - config.setString(MILESTONE, newName, STATUS, milestone.status.name()); - config.setString(MILESTONE, newName, COLOR, milestone.color); - if (milestone.due != null) { + config.setString(MILESTONE, newName, STATUS, tm.status.name()); + config.setString(MILESTONE, newName, COLOR, tm.color); + if (tm.due != null) { config.setString(MILESTONE, newName, DUE, - new SimpleDateFormat(DUE_DATE_PATTERN).format(milestone.due)); + new SimpleDateFormat(DUE_DATE_PATTERN).format(tm.due)); } config.save(); milestonesCache.remove(repository.name); TicketNotifier notifier = createNotifier(); - for (QueryResult qr : milestone.tickets) { + for (QueryResult qr : tm.tickets) { Change change = new Change(createdBy); change.setField(Field.milestone, newName); TicketModel ticket = updateTicket(repository, qr.number, change); @@ -731,6 +744,9 @@ Repository db = null; try { TicketMilestone tm = getMilestone(repository, milestone); + if (tm == null) { + return false; + } db = repositoryManager.getRepository(repository.name); StoredConfig config = db.getConfig(); config.unsetSection(MILESTONE, milestone); @@ -760,6 +776,15 @@ } return false; } + + /** + * Returns the set of assigned ticket ids in the repository. + * + * @param repository + * @return a set of assigned ticket ids in the repository + * @since 1.6.0 + */ + public abstract Set<Long> getIds(RepositoryModel repository); /** * Assigns a new ticket id. @@ -823,7 +848,7 @@ ticket = getTicketImpl(repository, ticketId); // if ticket exists if (ticket != null) { - if (ticket.hasPatchsets()) { + if (ticket.hasPatchsets() && updateDiffstats) { Repository r = repositoryManager.getRepository(repository.name); try { Patchset patchset = ticket.getCurrentPatchset(); @@ -856,6 +881,33 @@ */ protected abstract TicketModel getTicketImpl(RepositoryModel repository, long ticketId); + + /** + * Returns the journal used to build a ticket. + * + * @param repository + * @param ticketId + * @return the journal for the ticket, if it exists, otherwise null + * @since 1.6.0 + */ + public final List<Change> getJournal(RepositoryModel repository, long ticketId) { + if (hasTicket(repository, ticketId)) { + List<Change> journal = getJournalImpl(repository, ticketId); + return journal; + } + return null; + } + + /** + * Retrieves the ticket journal. + * + * @param repository + * @param ticketId + * @return a ticket, if it exists, otherwise null + * @since 1.6.0 + */ + protected abstract List<Change> getJournalImpl(RepositoryModel repository, long ticketId); + /** * Get the ticket url * -- Gitblit v1.9.1