diff.jsp revision 55ca23edd10d48a1f4683d6071955db3683a3b69
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCDDL HEADER START
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncThe contents of this file are subject to the terms of the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCommon Development and Distribution License (the "License").
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncYou may not use this file except in compliance with the License.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncSee LICENSE.txt included in this distribution for the specific
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynclanguage governing permissions and limitations under the License.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncWhen distributing Covered Code, include this CDDL HEADER in each
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfile and include the License file at LICENSE.txt.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncIf applicable, add the following below this CDDL HEADER, with the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfields enclosed by brackets "[]" replaced with your own identifying
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncinformation: Portions Copyright [yyyy] [name of copyright owner]
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCDDL HEADER END
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCopyright 2009 Sun Microsystems, Inc. All rights reserved.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncUse is subject to license terms.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPortions Copyright 2011 Jens Elkner.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync--%><%@page import="
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncprivate String getAnnotateRevision(DiffData data) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (data.type == DiffType.OLD || data.type == DiffType.NEW) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync return "<script type=\"text/javascript\">/* <![CDATA[ */ "
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync + "document.rev = 'r=" + data.rev[data.type == DiffType.NEW ? 1 : 0]
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync + "'; /* ]]> */</script>";
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncinclude file="mast.jsp"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/* ---------------------- diff.jsp start --------------------- */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync cfg = PageConfig.get(request);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DiffData data = cfg.getDiffData();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (data.errorMsg != null) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<div class="src">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <h3 class="error">Error:</h3>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String link = request.getContextPath() + Prefix.DOWNLOAD_P
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<div id="difftable">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <table class="image">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <tr><th><%= data.filename %> (revision <%= data.rev[0] %>)</th>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <th><%= data.filename %> (revision <%= data.rev[1] %>)</th>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <tr><td><img src="<%= link %>?r=<%= data.rev[0] %>"/></td>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <td><img src="<%= link %>?r=<%= data.rev[1] %>"/></td>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } else if (data.genre != Genre.PLAIN && data.genre != Genre.HTML) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String link = request.getContextPath() + Prefix.DOWNLOAD_P
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<div id="src">Diffs for binary files cannot be displayed! Files are <a
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync href="<%= link %>?r=<%= data.rev[0] %>"><%=
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync data.filename %>(revision <%= data.rev[0] %>)</a> and <a
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync href="<%= link %>?r=<%= data.rev[1] %>"><%=
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } else if (data.revision.size() == 0) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <%= getAnnotateRevision(data) %>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <b>No differences found!</b><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync //-------- Do THE DIFFS ------------
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ln1 = 0;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ln2 = 0;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String rp1 = data.param[0];
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String rp2 = data.param[1];
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String reqURI = request.getRequestURI();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String[] file1 = data.file[0];
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String[] file2 = data.file[1];
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync DiffType type = data.type;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync boolean full = data.full;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<%= getAnnotateRevision(data) %>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<div id="diffbar">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <div class="legend">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span class="d">Deleted</span>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span class="a">Added</span>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <div class="tabs"><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync for (DiffType t : DiffType.values()) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (type == t) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> <span class="active"><%= t.toString() %><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> ( <%= data.rev[0] %> )<%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } else if (t == DiffType.NEW) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> ( <%= data.rev[1] %> )<%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %></span><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> <span><a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %>&format=<%= t.getAbbrev() %>&full=<%= full ? '1' : '0'
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %>"><%= t.toString() %><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> ( <%= data.rev[0] %> )<%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } else if (t == DiffType.NEW) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %> ( <%= data.rev[1] %> )<%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %></a></span><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <div class="ctype"><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (!full) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span><a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %>&format=<%= type.getAbbrev() %>&full=1">full</a></span>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span class="active">compact</span><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span class="active">full</span>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <span> <a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %>&format=<%= type.getAbbrev() %>&full=0">compact</a></span><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync<div id="difftable">
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <div class="pre"><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (type == DiffType.SIDEBYSIDE || type == DiffType.UNIFIED) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync %><table class="plain"><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync <thead><tr>
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync </tr></thead><%
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync for (int i=0; i < data.revision.size(); i++) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync if (type == DiffType.TEXT) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync Chunk c2 = d.getRevised();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int cn1 = c1.first();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int cl1 = c1.last();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int cn2 = c2.first();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int cl2 = c2.last();
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int i1 = cn1, i2 = cn2;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync StringBuilder bl1 = new StringBuilder(80);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync StringBuilder bl2 = new StringBuilder(80);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync for (; i1 <= cl1 && i2 <= cl2; i1++, i2++) {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync String[] ss = Util.diffline(
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"