From e4ffebc567f84d6ac730c1f3b044db65832f8f73 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 01 Jan 2012 09:19:13 -0500 Subject: [PATCH] Fixed daysback on repositories page --- src/com/gitblit/GitBlit.java | 182 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 144 insertions(+), 38 deletions(-) diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index f012279..6271a0d 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -25,13 +25,15 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -447,8 +449,18 @@ */ public List<String> getAllUsernames() { List<String> names = new ArrayList<String>(userService.getAllUsernames()); - Collections.sort(names); return names; + } + + /** + * Returns the list of all users available to the login service. + * + * @see IUserService.getAllUsernames() + * @return list of all usernames + */ + public List<UserModel> getAllUsers() { + List<UserModel> users = userService.getAllUsers(); + return users; } /** @@ -531,7 +543,17 @@ */ public List<String> getAllTeamnames() { List<String> teams = new ArrayList<String>(userService.getAllTeamNames()); - Collections.sort(teams); + return teams; + } + + /** + * Returns the list of available teams that a user or repository may be + * assigned to. + * + * @return the list of teams + */ + public List<TeamModel> getAllTeams() { + List<TeamModel> teams = userService.getAllTeams(); return teams; } @@ -743,8 +765,8 @@ "gitblit", null, "preReceiveScript"))); model.postReceiveScripts = new ArrayList<String>(Arrays.asList(config.getStringList( "gitblit", null, "postReceiveScript"))); - model.mailRecipients = new ArrayList<String>(Arrays.asList(config.getStringList( - "gitblit", null, "mailRecipient"))); + model.mailingLists = new ArrayList<String>(Arrays.asList(config.getStringList( + "gitblit", null, "mailingList"))); } r.close(); return model; @@ -904,6 +926,11 @@ .format("Can not rename repository ''{0}'' to ''{1}'' because ''{1}'' already exists.", repositoryName, repository.name)); } + File parentFile = destFolder.getParentFile(); + if (!parentFile.exists() && !parentFile.mkdirs()) { + throw new GitBlitException(MessageFormat.format( + "Failed to create folder ''{0}''", parentFile.getAbsolutePath())); + } if (!folder.renameTo(destFolder)) { throw new GitBlitException(MessageFormat.format( "Failed to rename repository ''{0}'' to ''{1}''.", repositoryName, @@ -971,8 +998,8 @@ config.setStringList("gitblit", null, "postReceiveScript", repository.postReceiveScripts); } - if (repository.mailRecipients != null) { - config.setStringList("gitblit", null, "mailRecipient", repository.mailRecipients); + if (repository.mailingLists != null) { + config.setStringList("gitblit", null, "mailingList", repository.mailingLists); } try { config.save(); @@ -1438,13 +1465,12 @@ } /** - * Returns the list of all available Groovy push hook scripts that are not - * already specified globally for all repositories. Script files must have + * Returns the list of all Groovy push hook scripts. Script files must have * .groovy extension * * @return list of available hook scripts */ - public List<String> getAvailableScripts() { + public List<String> getAllScripts() { File groovyFolder = getGroovyScriptsFolder(); File[] files = groovyFolder.listFiles(new FileFilter() { @Override @@ -1452,28 +1478,112 @@ return pathname.isFile() && pathname.getName().endsWith(".groovy"); } }); - - Set<String> globals = new HashSet<String>(); - String[] keys = { Keys.groovy.preReceiveScripts, Keys.groovy.postReceiveScripts }; - for (String key : keys) { - for (String script : getStrings(key)) { - if (script.endsWith(".groovy")) { - globals.add(script.substring(0, script.lastIndexOf('.'))); - } else { - globals.add(script); - } - } - } - - // create list of available scripts by excluding scripts that are - // globally specified List<String> scripts = new ArrayList<String>(); if (files != null) { for (File file : files) { String script = file.getName().substring(0, file.getName().lastIndexOf('.')); - if (!globals.contains(script)) { - scripts.add(script); - } + scripts.add(script); + } + } + return scripts; + } + + /** + * Returns the list of pre-receive scripts the repository inherited from the + * global settings and team affiliations. + * + * @param repository + * if null only the globally specified scripts are returned + * @return a list of scripts + */ + public List<String> getPreReceiveScriptsInherited(RepositoryModel repository) { + Set<String> scripts = new LinkedHashSet<String>(); + // Globals + for (String script : getStrings(Keys.groovy.preReceiveScripts)) { + if (script.endsWith(".groovy")) { + scripts.add(script.substring(0, script.lastIndexOf('.'))); + } else { + scripts.add(script); + } + } + + // Team Scripts + if (repository != null) { + for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { + TeamModel team = userService.getTeamModel(teamname); + scripts.addAll(team.preReceiveScripts); + } + } + return new ArrayList<String>(scripts); + } + + /** + * Returns the list of all available Groovy pre-receive push hook scripts + * that are not already inherited by the repository. Script files must have + * .groovy extension + * + * @param repository + * optional parameter + * @return list of available hook scripts + */ + public List<String> getPreReceiveScriptsUnused(RepositoryModel repository) { + Set<String> inherited = new TreeSet<String>(getPreReceiveScriptsInherited(repository)); + + // create list of available scripts by excluding inherited scripts + List<String> scripts = new ArrayList<String>(); + for (String script : getAllScripts()) { + if (!inherited.contains(script)) { + scripts.add(script); + } + } + return scripts; + } + + /** + * Returns the list of post-receive scripts the repository inherited from + * the global settings and team affiliations. + * + * @param repository + * if null only the globally specified scripts are returned + * @return a list of scripts + */ + public List<String> getPostReceiveScriptsInherited(RepositoryModel repository) { + Set<String> scripts = new LinkedHashSet<String>(); + // Global Scripts + for (String script : getStrings(Keys.groovy.postReceiveScripts)) { + if (script.endsWith(".groovy")) { + scripts.add(script.substring(0, script.lastIndexOf('.'))); + } else { + scripts.add(script); + } + } + // Team Scripts + if (repository != null) { + for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { + TeamModel team = userService.getTeamModel(teamname); + scripts.addAll(team.postReceiveScripts); + } + } + return new ArrayList<String>(scripts); + } + + /** + * Returns the list of unused Groovy post-receive push hook scripts that are + * not already inherited by the repository. Script files must have .groovy + * extension + * + * @param repository + * optional parameter + * @return list of available hook scripts + */ + public List<String> getPostReceiveScriptsUnused(RepositoryModel repository) { + Set<String> inherited = new TreeSet<String>(getPostReceiveScriptsInherited(repository)); + + // create list of available scripts by excluding inherited scripts + List<String> scripts = new ArrayList<String>(); + for (String script : getAllScripts()) { + if (!inherited.contains(script)) { + scripts.add(script); } } return scripts; @@ -1485,7 +1595,7 @@ * @param subject * @param message */ - public void sendEmailToAdministrators(String subject, String message) { + public void sendMailToAdministrators(String subject, String message) { try { Message mail = mailExecutor.createMessageForAdministrators(); if (mail != null) { @@ -1505,8 +1615,8 @@ * @param message * @param toAddresses */ - public void sendEmail(String subject, String message, ArrayList<String> toAddresses) { - this.sendEmail(subject, message, toAddresses.toArray(new String[0])); + public void sendMail(String subject, String message, Collection<String> toAddresses) { + this.sendMail(subject, message, toAddresses.toArray(new String[0])); } /** @@ -1516,7 +1626,7 @@ * @param message * @param toAddresses */ - public void sendEmail(String subject, String message, String... toAddresses) { + public void sendMail(String subject, String message, String... toAddresses) { try { Message mail = mailExecutor.createMessage(toAddresses); if (mail != null) { @@ -1542,7 +1652,7 @@ setting.currentValue = settings.getString(key, ""); } } - settingsModel.pushScripts = getAvailableScripts(); + settingsModel.pushScripts = getAllScripts(); return settingsModel; } @@ -1634,11 +1744,7 @@ loginService = (IUserService) realmClass.newInstance(); } } catch (Throwable t) { - loginService = new UserServiceWrapper() { - @Override - public void setupService(IStoredSettings settings) { - } - }; + loginService = new GitblitUserService(); } setUserService(loginService); mailExecutor = new MailExecutor(settings); -- Gitblit v1.9.1