diff.jsp revision d8371503c60e1f6933455e25b1cc47e4858a3a43
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoCDDL HEADER START
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoThe contents of this file are subject to the terms of the
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoCommon Development and Distribution License (the "License").
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoYou may not use this file except in compliance with the License.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoSee LICENSE.txt included in this distribution for the specific
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanolanguage governing permissions and limitations under the License.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoWhen distributing Covered Code, include this CDDL HEADER in each
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanofile and include the License file at LICENSE.txt.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoIf applicable, add the following below this CDDL HEADER, with the
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanofields enclosed by brackets "[]" replaced with your own identifying
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoinformation: Portions Copyright [yyyy] [name of copyright owner]
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoCDDL HEADER END
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoCopyright 2009 Sun Microsystems, Inc. All rights reserved.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoUse is subject to license terms.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoPortions Copyright 2011 Jens Elkner.
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano--%><%@page import="
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoprivate String getAnnotateRevision(DiffData data) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano if (data.type == DiffType.OLD || data.type == DiffType.NEW) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano return "<script type=\"text/javascript\">/* <![CDATA[ */ "
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano + "document.rev = 'r=" + data.rev[data.type == DiffType.NEW ? 1 : 0]
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano + "'; /* ]]> */</script>";
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano/* ---------------------- diff.jsp start --------------------- */
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano cfg = PageConfig.get(request);
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano DiffData data = cfg.getDiffData();
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano if (data.errorMsg != null) {
6a22713f648be8bd21297f57d9b631eb4c537ffeDaniel Lezcano<div class="src">
6a22713f648be8bd21297f57d9b631eb4c537ffeDaniel Lezcano <h3 class="error">Error:</h3>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String link = request.getContextPath() + Prefix.DOWNLOAD_P
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano<div id="difftable">
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <table class="image">
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <tr><th><%= data.filename %> (revision <%= data.rev[0] %>)</th>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <th><%= data.filename %> (revision <%= data.rev[1] %>)</th>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <tr><td><img src="<%= link %>?r=<%= data.rev[0] %>"/></td>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <td><img src="<%= link %>?r=<%= data.rev[1] %>"/></td>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano } else if (data.genre != Genre.PLAIN && data.genre != Genre.HTML) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String link = request.getContextPath() + Prefix.DOWNLOAD_P
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano<div id="src">Diffs for binary files cannot be displayed! Files are <a
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano href="<%= link %>?r=<%= data.rev[0] %>"><%=
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano data.filename %>(revision <%= data.rev[0] %>)</a> and <a
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand href="<%= link %>?r=<%= data.rev[1] %>"><%=
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand data.filename %>(revision <%= data.rev[1] %>)</a>.
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand } else if (data.revision.size() == 0) {
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand <%= getAnnotateRevision(data) %>
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand <b>No differences found!</b><%
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand //-------- Do THE DIFFS ------------
0bb4f8cf3b3b984dc150a11cb2e4d83ba4c49970Michel Normand String rp1 = data.param[0];
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String rp2 = data.param[1];
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String reqURI = request.getRequestURI();
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String[] file1 = data.file[0];
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano String[] file2 = data.file[1];
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano DiffType type = data.type;
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano boolean full = data.full;
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano<%= getAnnotateRevision(data) %>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano<div id="diffbar">
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <div class="legend">
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span class="d">Deleted</span>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span class="a">Added</span>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <div class="tabs"><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano for (DiffType t : DiffType.values()) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano if (type == t) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> <span class="active"><%= t.toString() %><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> ( <%= data.rev[0] %> )<%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano } else if (t == DiffType.NEW) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> ( <%= data.rev[1] %> )<%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %></span><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> <span><a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
99e4008cad9e959b683c6f48411fcf15a92be3b5Michel Normand %>&format=<%= t.getAbbrev() %>&full=<%= full ? '1' : '0'
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %>"><%= t.toString() %><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> ( <%= data.rev[0] %> )<%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano } else if (t == DiffType.NEW) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %> ( <%= data.rev[1] %> )<%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %></a></span><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <div class="ctype"><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano if (!full) {
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span><a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %>&format=<%= type.getAbbrev() %>&full=1">full</a></span>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span class="active">compact</span><%
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span class="active">full</span>
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano <span> <a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano %>&format=<%= type.getAbbrev() %>&full=0">compact</a></span><%
if (type == DiffType.SIDEBYSIDE) {
for (int i=0; i < data.revision.size(); i++) {
Delta d = data.revision.getDelta(i);
if (type == DiffType.TEXT) {
Chunk c1 = d.getOriginal();
Chunk c2 = d.getRevised();
int cn1 = c1.first();
int cl1 = c1.last();
int cn2 = c2.first();
int cl2 = c2.last();
Util.htmlize(file1[i1], bl1);
Util.htmlize(file2[i2], bl2);
String[] ss = Util.diffline(bl1, bl2);
bl1.setLength(0);
bl2.setLength(0);
bl1.setLength(0);
bl1.append("<span class=\"d\">");
Util.htmlize(file1[i1], bl1);
file1[i1] = bl1.append("</span>").toString();
bl2.setLength(0);
bl2.append("<span class=\"a\">");
Util.htmlize(file2[i2], bl2);
file2[i2] = bl2.append("</span>").toString();
if (type == DiffType.UNIFIED) {
Util.htmlize(file2[j]) %><br/><%
Util.htmlize(file2[j]) %><br/><%
%>&format=<%= type.getAbbrev()
%><i><%= ++ln2 %></i><%= Util.htmlize(file2[j]) %><br/><%
} else if (type == DiffType.SIDEBYSIDE) {
Util.htmlize(file1[j]) %><br/><%
Util.htmlize(file2[j]) %><br/><%
Util.htmlize(file1[j]) %><br/><%
%>&format=<%= type.getAbbrev()
Util.htmlize(file1[j]) %><br/><%
Util.htmlize(file2[j]) %><br/><%
%>&format=<%= type.getAbbrev()
Util.htmlize(file2[j]) %><br/><%
} else if (type == DiffType.OLD) {
Util.htmlize(file1[j]) %><br/><%
Util.htmlize(file1[j]) %><br/><%
%>&format=<%= type.getAbbrev()
Util.htmlize(file1[j]) %><br/><%
} else if (type == DiffType.NEW) {
Util.htmlize(file2[j]) %><br/><%
Util.htmlize(file2[j]) %><br/><%
%>&format=<%= type.getAbbrev()
Util.htmlize(file2[j]) %><br/><%
if (file1.length >= ln1) {
if (type == DiffType.SIDEBYSIDE) {
if (full || file1.length - ln1 < 20) {
for (int j = ln1; j < file1.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
for (int j = ln2; j < file2.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
%><br/> --- <b><%= file1.length - ln1 - 8
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
%><br/>--- <b><%= file1.length - ln1 - 8
} else if (type == DiffType.UNIFIED) {
if (full || file2.length - ln2 < 20) {
for (int j = ln2; j < file2.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
%><br/>--- <b><%= file2.length - ln2 - 8
} else if (type == DiffType.OLD) {
if (full || file1.length - ln1 < 20) {
for (int j = ln1; j < file1.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
%><br/> --- <b><%= file1.length - ln1 - 8
} else if (type == DiffType.NEW) {
if (full || file2.length - ln2 < 20) {
for (int j = ln2; j < file2.length ; j++) {
%><i><%= j+1 %></i><%=Util.htmlize(file2[j])%><br/><%
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
%><br/> --- <b><%= file2.length - ln2 - 8
/* ---------------------- diff.jsp end --------------------- */
include file="foot.jspf"