projects.jspf revision 52cdd45a95eb7c48af1c19ea6e401448a97545bf
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering<%--
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringCDDL HEADER START
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringThe contents of this file are subject to the terms of the
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringCommon Development and Distribution License (the "License").
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringYou may not use this file except in compliance with the License.
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringSee LICENSE.txt included in this distribution for the specific
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringlanguage governing permissions and limitations under the License.
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringWhen distributing Covered Code, include this CDDL HEADER in each
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringfile and include the License file at LICENSE.txt.
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringIf applicable, add the following below this CDDL HEADER, with the
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringfields enclosed by brackets "[]" replaced with your own identifying
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringinformation: Portions Copyright [yyyy] [name of copyright owner]
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringCDDL HEADER END
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringCopyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering--%><%@ page import="org.opensolaris.opengrok.configuration.*,
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringjava.util.ArrayList,java.util.List,java.util.Iterator" %><%
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering// Use UTF-8 if no encoding is specified in the request
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringif (request.getCharacterEncoding() == null) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering request.setCharacterEncoding("UTF-8");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering}
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringboolean hasProjects = false;
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering// watch for iterators for below in case you will want to change it to List<Project>
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering//TODO also deduplication at this point might be nice
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringList<String> project = new ArrayList<String>();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringList<Project> projects;
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringString context = request.getContextPath();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringRuntimeEnvironment env = RuntimeEnvironment.getInstance();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringenv.setUrlPrefix(context + "/s?");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringenv.register();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart PoetteringStringBuffer sproject=new StringBuffer("");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poetteringif (env.hasProjects()) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering hasProjects = true;
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering projects = env.getProjects();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering String pr[] = request.getParameterValues("project");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering // see if a new parameter(s) is passed...
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering // code bellow will accept more parameters project= and their format is either one by one, or separated by "," in one parameter
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (pr != null && pr[0].length() > 0) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering for (int midx = 0; midx < pr.length; midx++) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering //NOTE this means project name CANNOT have a "," char in it !!!
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering String p[] = pr[midx].split(",");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering for (int idx = 0; idx < p.length; idx++) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (Project.getByDescription(p[idx]) != null) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering project.add(p[idx]);
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering } else { //fill in from cookies
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering Cookie[] cookies = request.getCookies();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (cookies != null) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering for (Cookie cookie : cookies) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (cookie.getName().equals("OpenGrokProject")) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering for (String proj : cookie.getValue().split(",")) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (proj != "") {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (Project.getByDescription(proj) != null) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering project.add(proj);
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering //default project is only shown when no other project there (no cookie, empty project list)
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering Project defaultProject = env.getDefaultProject();
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering if (defaultProject != null && project.isEmpty()) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering project.add(defaultProject.getDescription());
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering //only save found projects into cookies
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering for (Iterator it = project.iterator(); it.hasNext();) {
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering sproject.append((String) it.next() + ",");
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering }
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering // update the cookie
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering Cookie cookie = new Cookie("OpenGrokProject", sproject.toString());
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering response.addCookie(cookie);
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering}
e9d21f240704f87c6bb5f7fca1c5e6d0f31c84cdLennart Poettering%>