diff.jsp revision d8371503c60e1f6933455e25b1cc47e4858a3a43
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCDDL HEADER START
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaThe contents of this file are subject to the terms of the
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCommon Development and Distribution License (the "License").
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaYou may not use this file except in compliance with the License.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaSee LICENSE.txt included in this distribution for the specific
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakarialanguage governing permissions and limitations under the License.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaWhen distributing Covered Code, include this CDDL HEADER in each
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariafile and include the License file at LICENSE.txt.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaIf applicable, add the following below this CDDL HEADER, with the
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariafields enclosed by brackets "[]" replaced with your own identifying
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariainformation: Portions Copyright [yyyy] [name of copyright owner]
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCDDL HEADER END
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCopyright 2009 Sun Microsystems, Inc. All rights reserved.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaUse is subject to license terms.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaPortions Copyright 2011 Jens Elkner.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria--%><%@page import="
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.analysis.AnalyzerGuru,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaprivate String getAnnotateRevision(DiffData data) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria if (data.type == DiffType.OLD || data.type == DiffType.NEW) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria return "<script type=\"text/javascript\">/* <![CDATA[ */ "
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria + "document.rev = 'r=" + data.rev[data.type == DiffType.NEW ? 1 : 0]
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria + "'; /* ]]> */</script>";
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria/* ---------------------- diff.jsp start --------------------- */
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria cfg = PageConfig.get(request);
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria DiffData data = cfg.getDiffData();
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div class="src">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <h3 class="error">Error:</h3>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String link = request.getContextPath() + Prefix.DOWNLOAD_P
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div id="difftable">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <table class="image">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <tr><th><%= data.filename %> (revision <%= data.rev[0] %>)</th>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <th><%= data.filename %> (revision <%= data.rev[1] %>)</th>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <tr><td><img src="<%= link %>?r=<%= data.rev[0] %>"/></td>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <td><img src="<%= link %>?r=<%= data.rev[1] %>"/></td>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (data.genre != Genre.PLAIN && data.genre != Genre.HTML) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String link = request.getContextPath() + Prefix.DOWNLOAD_P
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div id="src">Diffs for binary files cannot be displayed! Files are <a
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria href="<%= link %>?r=<%= data.rev[0] %>"><%=
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria data.filename %>(revision <%= data.rev[0] %>)</a> and <a
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria href="<%= link %>?r=<%= data.rev[1] %>"><%=
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria data.filename %>(revision <%= data.rev[1] %>)</a>.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (data.revision.size() == 0) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <%= getAnnotateRevision(data) %>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <b>No differences found!</b><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria //-------- Do THE DIFFS ------------
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String rp1 = data.param[0];
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String rp2 = data.param[1];
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String reqURI = request.getRequestURI();
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String[] file1 = data.file[0];
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String[] file2 = data.file[1];
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria DiffType type = data.type;
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria boolean full = data.full;
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<%= getAnnotateRevision(data) %>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div id="diffbar">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <div class="legend">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <span class="d">Deleted</span>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <span class="a">Added</span>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <div class="tabs"><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria for (DiffType t : DiffType.values()) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria if (type == t) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> <span class="active"><%= t.toString() %><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[0] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (t == DiffType.NEW) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[1] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> <span><a href="<%= reqURI %>?r1=<%= rp1 %>&r2=<%= rp2
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %>&format=<%= t.getAbbrev() %>&full=<%= full ? '1' : '0'
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %>"><%= t.toString() %><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[0] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (t == DiffType.NEW) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[1] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %></a></span><%
%>&format=<%= type.getAbbrev() %>&full=1">full</a></span>
%>&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"