diff.jsp revision d8371503c60e1f6933455e25b1cc47e4858a3a43
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<%--
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria$Id$
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCDDL HEADER START
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
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 Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaSee LICENSE.txt included in this distribution for the specific
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakarialanguage governing permissions and limitations under the License.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
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 Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCDDL HEADER END
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaCopyright 2009 Sun Microsystems, Inc. All rights reserved.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaUse is subject to license terms.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid ZakariaPortions Copyright 2011 Jens Elkner.
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria--%><%@page import="
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.io.BufferedReader,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.io.FileNotFoundException,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.io.InputStream,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.io.InputStreamReader,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.io.UnsupportedEncodingException,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.net.URLDecoder,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariajava.util.ArrayList,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.apache.commons.jrcs.diff.Chunk,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.apache.commons.jrcs.diff.Delta,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.apache.commons.jrcs.diff.Diff,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.apache.commons.jrcs.diff.Revision,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.analysis.AnalyzerGuru,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.web.DiffData,
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariaorg.opensolaris.opengrok.web.DiffType"
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%><%!
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 }
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria return "";
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria}
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%><%@
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakariainclude file="mast.jsp"
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria/* ---------------------- diff.jsp start --------------------- */
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria{
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria cfg = PageConfig.get(request);
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria DiffData data = cfg.getDiffData();
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria if (data.errorMsg != null) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div class="src">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <h3 class="error">Error:</h3>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <p><%= data.errorMsg %></p>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria</div><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (data.genre == Genre.IMAGE) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String link = request.getContextPath() + Prefix.DOWNLOAD_P
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria + Util.htmlize(cfg.getPath());
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria<div id="difftable">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <table class="image">
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <thead>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <tr><th><%= data.filename %> (revision <%= data.rev[0] %>)</th>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <th><%= data.filename %> (revision <%= data.rev[1] %>)</th>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria </tr>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria </thead>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <tbody>
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 </tr>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria </tbody>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria </table>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria</div><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (data.genre != Genre.PLAIN && data.genre != Genre.HTML) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria String link = request.getContextPath() + Prefix.DOWNLOAD_P
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria + Util.htmlize(cfg.getPath());
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%>
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</div><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (data.revision.size() == 0) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <%= getAnnotateRevision(data) %>
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria <b>No differences found!</b><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria //-------- Do THE DIFFS ------------
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria int ln1 = 0;
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria int ln2 = 0;
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
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria DiffType type = data.type;
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria boolean full = data.full;
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria%>
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>
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 if (t == DiffType.OLD) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[0] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (t == DiffType.NEW) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[1] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria }
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %></span><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> <span><a href="<%= reqURI %>?r1=<%= rp1 %>&amp;r2=<%= rp2
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %>&amp;format=<%= t.getAbbrev() %>&amp;full=<%= full ? '1' : '0'
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %>"><%= t.toString() %><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria if (t == DiffType.OLD) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[0] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria } else if (t == DiffType.NEW) {
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %> ( <%= data.rev[1] %> )<%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria }
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria %></a></span><%
d69d2e025b2dbe63dda1853449f935e1efc2cd5dFarid Zakaria }
}
%></div>
<div class="ctype"><%
if (!full) {
%>
<span><a href="<%= reqURI %>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev() %>&amp;full=1">full</a></span>
<span class="active">compact</span><%
} else {
%>
<span class="active">full</span>
<span> <a href="<%= reqURI %>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev() %>&amp;full=0">compact</a></span><%
}
%></div>
</div>
<div id="difftable">
<div class="pre"><%
if (type == DiffType.SIDEBYSIDE || type == DiffType.UNIFIED) {
%><table class="plain"><%
if (type == DiffType.SIDEBYSIDE) {
%>
<thead><tr>
<th><%= data.filename %> (<%= data.rev[0] %>)</th>
<th><%= data.filename %> (<%= data.rev[1] %>)</th>
</tr></thead><%
}
%>
<tbody><%
}
for (int i=0; i < data.revision.size(); i++) {
Delta d = data.revision.getDelta(i);
if (type == DiffType.TEXT) {
%><%= Util.htmlize(d.toString()) %><%
} else {
Chunk c1 = d.getOriginal();
Chunk c2 = d.getRevised();
int cn1 = c1.first();
int cl1 = c1.last();
int cn2 = c2.first();
int cl2 = c2.last();
int i1 = cn1, i2 = cn2;
StringBuilder bl1 = new StringBuilder(80);
StringBuilder bl2 = new StringBuilder(80);
for (; i1 <= cl1 && i2 <= cl2; i1++, i2++) {
Util.htmlize(file1[i1], bl1);
Util.htmlize(file2[i2], bl2);
String[] ss = Util.diffline(bl1, bl2);
file1[i1] = ss[0];
file2[i2] = ss[1];
bl1.setLength(0);
bl2.setLength(0);
}
// deleted
for (; i1 <= cl1; i1++) {
bl1.setLength(0);
bl1.append("<span class=\"d\">");
Util.htmlize(file1[i1], bl1);
file1[i1] = bl1.append("</span>").toString();
}
// added
for (; i2 <= cl2; i2++) {
bl2.setLength(0);
bl2.append("<span class=\"a\">");
Util.htmlize(file2[i2], bl2);
file2[i2] = bl2.append("</span>").toString();
}
if (type == DiffType.UNIFIED) {
// UDIFF
if (cn1 > ln1 || cn2 > ln2) {
%>
<tr class="k"><td><%
if (full || (cn2 - ln2 < 20)) {
for (int j = ln2; j < cn2; j++) {
%><i><%= ++ln2 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
} else {
for (int j = ln2; j < ln2 + 8; j++) {
%><i><%= j+1 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
%><br/>--- <b><%= cn2 - ln2 - 16
%> unchanged lines hidden</b> (<a href="<%= reqURI
%>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev()
%>&amp;full=1#<%= ln2 %>">view full</a>) --- <br/><br/><%
ln2 = cn2 - 8;
for (int j = ln2; j < cn2; j++) {
%><i><%= ++ln2 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
}
%></td>
</tr><%
ln1 = cn1;
}
if (cn1 <= cl1) {
%>
<tr><td><%
for (int j = cn1; j <= cl1 ; j++) {
%><del class="d"><%= ++ln1 %></del><%= file1[j]
%><br/><%
}
%></td>
</tr><%
}
if (cn2 <= cl2) {
%>
<tr class="k"><td><%
for (int j = cn2; j < cl2; j++) {
%><i class="a"><%= ++ln2 %></i><%= file2[j]
%><br/><%
}
%><i class="a"><%= ++ln2 %></i><%= file2[cl2] %><%
if(full) {
%><a name="<%= ln2 %>" /><%
}
%></td>
</tr><%
}
} else if (type == DiffType.SIDEBYSIDE) {
// SDIFF
if (cn1 > ln1 || cn2 > ln2) {
%>
<tr class="k"><td><%
if (full || cn2 - ln2 < 20) {
for (int j = ln1; j < cn1; j++) {
%><i><%= ++ln1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
%></td><td><%
for (int j = ln2; j < cn2 ; j++) {
%><i><%= ++ln2 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
} else {
for (int j = ln1; j < ln1 + 8; j++) {
%><i><%= j+1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
%><br/>--- <b><%= cn1 - ln1 - 16
%> unchanged lines hidden</b> (<a href="<%= reqURI
%>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev()
%>&amp;full=1#<%= ln2 %>">view full</a>) --- <br/><br/><%
ln1 = cn1 - 8;
for (int j = ln1; j < cn1; j++) {
%><i><%= ++ln1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
%></td><td><%
for (int j = ln2; j < ln2 + 8; j++) {
%><i><%= j+1 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
%><br/>--- <b><%= cn2 - ln2 - 16
%> unchanged lines hidden</b> (<a href="<%= reqURI
%>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev()
%>&amp;full=1#<%= ln2 %>">view full</a>) --- <br/><br/><%
ln2 = cn2 - 8;
for (int j = ln2; j < cn2; j++) {
%><i><%= ++ln2 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
}
%></td>
</tr><%
}
%>
<tr class="k"><td><%
for (int j = cn1; j <= cl1; j++) {
%><i><%= ++ln1 %></i><%= file1[j] %><br/><%
}
%></td><td><%
for (int j = cn2; j <= cl2; j++) {
%><i><%= ++ln2 %></i><a name="<%= ln2 %>"></a><%=
file2[j] %><br/><%
}
%></td>
</tr><%
// OLD
} else if (type == DiffType.OLD) {
// OLD
if (cn1 > ln1) {
if (full || cn1 - ln1 < 20) {
for (int j = ln1; j < cn1; j++) {
%><i><%= ++ln1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
} else {
for (int j = ln1; j < ln1 + 8; j++) {
%><i><%= j+1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
%><br/>--- <b><%= cn1 - ln1 - 16
%> unchanged lines hidden</b> (<a href="<%= reqURI
%>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev()
%>&amp;full=1#<%=ln1%>">view full</a>) --- <br/><br/><%
ln1 = cn1 - 8;
for (int j = ln1; j < cn1; j++) {
%><i><%= ++ln1 %></i><%=
Util.htmlize(file1[j]) %><br/><%
}
}
}
for (int j = cn1; j <= cl1 ; j++) {
%><i><%= ++ln1 %></i><%= file1[j] %><br/><%
}
if (full) {
%><a name="<%=ln1%>" ></a><%
}
// NEW
} else if (type == DiffType.NEW) {
if (cn2 > ln2) {
if (full || cn2 - ln2 < 20) {
for (int j = ln2; j < cn2 ; j++) {
%><i><%= ++ln2 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
} else {
for (int j = ln2; j < ln2 + 8; j++) {
%><i><%= j+1 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
%><br/>--- <b><%= cn2 - ln2 - 16
%> unchanged lines hidden</b> (<a href="<%= reqURI
%>?r1=<%= rp1 %>&amp;r2=<%= rp2
%>&amp;format=<%= type.getAbbrev()
%>&amp;full=1#<%= ln2 %>">view full</a>) --- <br/><br/><%
ln2 = cn2 - 8;
for (int j = ln2; j < cn2; j++) {
%><i><%= ++ln2 %></i><%=
Util.htmlize(file2[j]) %><br/><%
}
}
}
for (int j = cn2; j <= cl2 ; j++) {
%><i><%= ++ln2 %></i><%= file2[j] %><br/><%
}
if (full) {
%><a name="<%= ln2 %>"></a><%
}
}
} // else
} // for
// deltas done, dump the remaining
if (file1.length >= ln1) {
if (type == DiffType.SIDEBYSIDE) {
if (full || file1.length - ln1 < 20) {
%>
<tr><td><%
for (int j = ln1; j < file1.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
}
%></td><td><%
for (int j = ln2; j < file2.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
%></td>
</tr>
</tbody>
</table><%
} else {
%>
<tr><td><%
for (int j = ln1; j < ln1 + 8 ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
}
%><br/> --- <b><%= file1.length - ln1 - 8
%> unchanged lines hidden</b> --- </td><td><%
for (int j = ln2; j < ln2 + 8 ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
%><br/>--- <b><%= file1.length - ln1 - 8
%> unchanged lines hidden</b> ---</td>
</tr>
</tbody>
</table><%
}
} else if (type == DiffType.UNIFIED) {
if (full || file2.length - ln2 < 20) {
%>
<tr><td><%
for (int j = ln2; j < file2.length ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
%></td>
</tr>
</tbody>
</table><%
} else {
%>
<tr><td><%
for (int j = ln2; j < ln2 + 8 ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
%><br/>--- <b><%= file2.length - ln2 - 8
%> unchanged lines hidden</b> ---</td>
</tr>
</tbody>
</table><%
}
} 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/><%
}
} else {
for (int j = ln1; j < ln1 + 8 ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file1[j]) %><br/><%
}
%><br/> --- <b><%= file1.length - ln1 - 8
%> unchanged lines hidden</b> ---<br/><%
}
} 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/><%
}
} else {
for (int j = ln2; j < ln2 + 8 ; j++) {
%><i><%= j+1 %></i><%= Util.htmlize(file2[j]) %><br/><%
}
%><br/> --- <b><%= file2.length - ln2 - 8
%> unchanged lines hidden</b> ---<br/><%
}
}
}
//----DIFFS Done--------
%></div>
</div><%
}
}
/* ---------------------- diff.jsp end --------------------- */
%><%@
include file="foot.jspf"
%>