Java tutorial
/* * ==================================================================== * Copyright (c) 2005-2012 sventon project. All rights reserved. * * This software is licensed as described in the file LICENSE, which * you should have received as part of this distribution. The terms * are also available at http://www.sventon.org. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.sventon.web.ctrl.template; import org.springframework.validation.BindException; import org.springframework.web.bind.ServletRequestUtils; import org.springframework.web.servlet.ModelAndView; import org.sventon.SVNConnection; import org.sventon.model.DirEntry; import org.sventon.model.DirEntrySorter; import org.sventon.model.FileExtensionList; import org.sventon.util.FileExtensionFilter; import org.sventon.web.UserRepositoryContext; import org.sventon.web.command.BaseCommand; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; /** * RepoBrowserController. * * @author patrik@sventon.org * @author jesper@sventon.org */ public final class RepoBrowserController extends ListDirectoryContentsController { @Override protected ModelAndView svnHandle(final SVNConnection connection, final BaseCommand command, final long headRevision, final UserRepositoryContext userRepositoryContext, final HttpServletRequest request, final HttpServletResponse response, final BindException exception) throws Exception { final ModelAndView modelAndView = super.svnHandle(connection, command, headRevision, userRepositoryContext, request, response, exception); final Map<String, Object> model = modelAndView.getModel(); final boolean bypassEmpty = ServletRequestUtils.getBooleanParameter(request, "bypassEmpty", false); final String filterExtension = ServletRequestUtils.getStringParameter(request, "filterExtension", "all"); logger.debug("filterExtension: " + filterExtension); List<DirEntry> entries = (List<DirEntry>) model.get("dirEntries"); if (bypassEmpty && entries.size() == 1) { final DirEntry entry = entries.get(0); if (DirEntry.Kind.DIR == entry.getKind()) { logger.debug("Bypassing empty directory: " + command.getPath()); command.setPath(command.getPath() + entry.getName() + "/"); final ModelAndView bypassedModelAndView = svnHandle(connection, command, headRevision, userRepositoryContext, request, response, exception); bypassedModelAndView.getModel().put("bypassed", true); return bypassedModelAndView; } } if (!"all".equals(filterExtension)) { final FileExtensionFilter fileExtensionFilter = new FileExtensionFilter(filterExtension); entries = fileExtensionFilter.filter(entries); } logger.debug("Sort params: " + userRepositoryContext.getSortType().name() + ", " + userRepositoryContext.getSortMode()); new DirEntrySorter(userRepositoryContext.getSortType(), userRepositoryContext.getSortMode()).sort(entries); logger.debug("Adding data to model"); model.put("dirEntries", entries); model.put("locks", getRepositoryService().getLocks(connection, command.getPath(), false)); model.put("existingExtensions", new FileExtensionList(entries).getExtensions()); model.put("filterExtension", filterExtension); modelAndView.setViewName(getViewName()); return modelAndView; } }