|
What this is
Other links
The source code
/*
* $Header: /cvsroot/mvnforum/mvnforum/i18n/tool/ConvertURL.java,v 1.11 2005/01/28 08:06:02 minhnn Exp $
* $Author: minhnn $
* $Revision: 1.11 $
* $Date: 2005/01/28 08:06:02 $
*
* ====================================================================
*
* Copyright (C) 2002-2005 by MyVietnam.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* All copyright notices regarding MyVietnam and MyVietnam CoreLib
* MUST remain intact in the scripts and source code.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Correspondence and Marketing Questions can be sent to:
* info@MyVietnam.net
*
* @author: Minh Nguyen minhnn@MyVietnam.net
* @author: Mai Nguyen mai.nh@MyVietnam.net
*/
//package test;
import java.io.*;
import java.util.*;
public class ConvertURL {
static String convertURL(String href) {
StringBuffer output = new StringBuffer();
if (href.startsWith("http") == false &&
href.startsWith("javascript:") == false &&
href.startsWith("mailto:") == false &&
href.startsWith("aim:") == false &&
href.startsWith("<%=response.encodeURL") == false) {
href = href.replaceAll("<%=", "\" + ");
href = href.replaceAll("%>", " + \"");
boolean redundantEnd = false;
if (href.endsWith(" + \"")) {
redundantEnd = true;
//System.out.println("redundantEnd = true");
href = href.substring(0, href.length()-4);
}
boolean redundantBegin = false;
if (href.startsWith("\" + ")) {
redundantBegin = true;
//System.out.println("redundantBegin = true");
href = href.substring(4);
}
if (redundantBegin) {
output.append("<%=response.encodeURL(");
}
else {
output.append("<%=response.encodeURL(\"");
}
output.append(href);
if (redundantEnd) {
output.append(")%>");
} else {
output.append("\")%>");
}
} else {
return href;
}
return output.toString();
}
static String convertTagA(String tagA) throws IllegalArgumentException {
String output = "";
if (tagA.startsWith("<a ") == false) {
throw new IllegalArgumentException();
}
if (tagA.endsWith(">") == false) {
throw new IllegalArgumentException();
}
if (tagA.indexOf('>') != tagA.lastIndexOf('>')) {
//throw new IllegalArgumentException();
}
int firstIndex = tagA.indexOf("href=\"");
if (firstIndex == -1) {
System.out.println("WARNING: TagA does not have href: " + tagA);
return tagA;
}
int lastIndex = tagA.indexOf("\"", firstIndex + 6);
String begin = tagA.substring(0, firstIndex + 6);
String href = tagA.substring(firstIndex + 6, lastIndex);
String end = tagA.substring(lastIndex);
// System.out.println("begin = " + begin);
// System.out.println("href = " + href);
// System.out.println("end = " + end);
output = begin + convertURL(href) + end;
return output;
}
static String convertTagForm(String tagForm) throws IllegalArgumentException {
String output = "";
if (tagForm.startsWith("<form ") == false) {
throw new IllegalArgumentException();
}
if (tagForm.endsWith(">") == false) {
throw new IllegalArgumentException();
}
if (tagForm.indexOf('>') != tagForm.lastIndexOf('>')) {
//throw new IllegalArgumentException();
}
int firstIndex = tagForm.indexOf("action=\"");
if (firstIndex == -1) {
System.out.println("WARNING: TagForm does not have action: " + tagForm);
return tagForm;
}
int lastIndex = tagForm.indexOf("\"", firstIndex + 8);
String begin = tagForm.substring(0, firstIndex + 8);
String href = tagForm.substring(firstIndex + 8, lastIndex);
String end = tagForm.substring(lastIndex);
// System.out.println("begin = " + begin);
// System.out.println("action = " + href);
// System.out.println("end = " + end);
output = begin + convertURL(href) + end;
return output;
}
static String convertTagMeta(String tagMeta) throws IllegalArgumentException {
String output = "";
if (tagMeta.startsWith("<meta ") == false) {
throw new IllegalArgumentException();
}
if (tagMeta.endsWith(">") == false) {
throw new IllegalArgumentException();
}
if (tagMeta.indexOf('>') != tagMeta.lastIndexOf('>')) {
//throw new IllegalArgumentException();
}
int firstIndex = tagMeta.indexOf("url=");
if (firstIndex == -1) {
System.out.println("WARNING: TagMeta does not have url=: " + tagMeta);
return tagMeta;
}
int lastIndex = tagMeta.indexOf("'", firstIndex + 4);
String begin = tagMeta.substring(0, firstIndex + 4);
String href = tagMeta.substring(firstIndex + 4, lastIndex);
String end = tagMeta.substring(lastIndex);
// System.out.println("begin = " + begin);
// System.out.println("action = " + href);
// System.out.println("end = " + end);
output = begin + convertURL(href) + end;
return output;
}
static String convertLine(String line, String startToken, String endToken) throws IllegalArgumentException {
int startIndex = -1;
int endIndex = -1;
outer:
while (true) {
startIndex = line.indexOf(startToken, endIndex + 1);
if (startIndex < 0 || startIndex + 1 >= line.length()) {
break;
}
int beginSearchEndIndex = startIndex + 1;
while (true) {
endIndex = line.indexOf(endToken, beginSearchEndIndex);
if (endIndex < 0) break;
char charBefore = line.charAt(endIndex - 1);
if (charBefore == '%') {
beginSearchEndIndex = endIndex + 1;
} else {
break;
}
}
if (endIndex < 0) {
break;
}
String matches = line.substring(startIndex, endIndex+1);
//log("match = " + matches + " resource = " + (String) resourceMap.get(matches), Project.MSG_WARN);
//If there is a white space or = or :, then
//it isn't to be treated as a valid key.
for (int k = 0; k < matches.length(); k++) {
/*
char c = matches.charAt(k);
if (c == ':' ||
c == '=' ||
Character.isSpaceChar(c)) {
endIndex = endIndex - 1;
continue outer;
}
*/
}
String replace = null;
if (startToken.equals("<a ")) {
replace = (String) convertTagA(matches);
} else if (startToken.equals("<form ")) {
replace = (String) convertTagForm(matches);
} else if (startToken.equals("<meta ")) {
replace = (String) convertTagMeta(matches);
} else {
throw new IllegalArgumentException();
}
//If the key hasn't been loaded into resourceMap,
//use the key itself as the value also.
if (replace == null) {
//log("Warning: The key: " + matches + " hasn't been defined.", Project.MSG_WARN);
replace = matches;
}
line = line.substring(0, startIndex)
+ replace
+ line.substring(endIndex + 1);
// minhnn: I dont know if the original code has bug
// I changed from "+ 1" to "- 1" and it works well
endIndex = startIndex + replace.length() - 1;
if (endIndex + 1 >= line.length()) {
break;
}
}
return line;
}
static String convertLine(String line) throws Exception {
try {
String linewithA = convertLine(line, "<a ", ">");
String linewithAandForm = convertLine(linewithA, "<form ", ">");
String linewithAandFormAndMeta = convertLine(linewithAandForm, "<meta ", ">");
return linewithAandFormAndMeta;
} catch (Exception ex) {
System.out.println("line = " + line);
throw ex;
}
}
/**
* @todo: return ArrayList of String
*/
public static ArrayList getContent(String fileName) {
ArrayList arrLine= new ArrayList();
File file = new File(fileName);
if (!file.exists()) {
return null;
} else {
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String inLine = reader.readLine();
while (inLine != null) {
arrLine.add(inLine + "\n");
//content += inLine + "\n";
inLine = reader.readLine();
}
reader.close();
return arrLine;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
public static void convertFile(String srcFilename, String descFilename)
throws Exception {
ArrayList descArr = new ArrayList();
Collection tempArr = getContent(srcFilename);
for (Iterator iterator = tempArr.iterator(); iterator.hasNext(); ) {
descArr.add(convertLine((String) iterator.next()));
}
ExportContentToFile(descArr, descFilename);
}
public static void ExportContentToFile(ArrayList lines, String fileName) {
String curDir = System.getProperty("user.dir"); //Get Current dir
try {
BufferedWriter out = new BufferedWriter(new FileWriter(curDir + "/out/" + fileName));
for (Iterator iterator = lines.iterator(); iterator.hasNext(); ) {
//System.out.print(convertLine((String)iterator.next()));
out.write((String) iterator.next());
}
out.close();
} catch (IOException e) {
System.out.print(e);
}
}
public static void main(String[] args) throws Exception {
//String href = "index";
//String href = "index?forum=<%=forumid%>&a=true";
//String correctOutput = "<%=response.encodeURL(context + \"index\")%>";
// String tagA = "<a href=\"index?forum=<%=forumid%>&a=true\" class=\"topmenu\">";
// String tagA = "<a href=\"listmembers\" class=\"topmenu\">";
// String tagA = "<a href=\"<%=filename%>\" class=\"topmenu\">";
// String tagA = "<a href=\"#\">";
// String tagA = "<a href=\"javascript:smilie('[:">]')\">";
// System.out.println("tagA = " + tagA);
// System.out.println("output = " + convertTagA(tagA));
// String tagMeta = "<meta http-equiv='refresh' content='3; url=viewthread?thread=<%= threadID %>&offset=<%=offset%>'>";
// System.out.println("tagMeta = " + tagMeta);
// System.out.println("output = " + convertTagMeta(tagMeta));
// String tagForm = "<form action=\"addattachmentprocess\" method=\"post\" enctype=\"multipart/form-data\" name=\"submitform\">";
// System.out.println("tagForm = " + tagForm);
// System.out.println("output = " + convertTagForm(tagForm));
//String line = "link 1 <a href=\"listmembers\" class=\"topmenu\"> link 2 &a=true\" class=\"topmenu\"> form ne` | ";
// System.out.println("line = " + line);
// System.out.println("output = " + convertLine(line));
//convertFile("listmembers.jsp","b.txt");
//convertFile("listrecentthreads.jsp","listrecentthreads.jsp");
try {
if (args[0].equals("all")) {
String curDir = System.getProperty("user.dir"); //Get Current dir
File dir = new File(curDir);
if (dir.isFile()) throw new IOException("IOException -> BadInputException: not a directory.");
File[] files = dir.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isFile()) {
String absPath = file.getAbsolutePath();
if (absPath.endsWith(".jsp")) {
int lastIndex = absPath.lastIndexOf('\\');
String name = absPath.substring(lastIndex + 1);
System.out.println("name = " + name);
convertFile(name, name);
}
} else {
System.out.println("get folder = " + file);
}
}
}//if
dir.delete();
} else {
convertFile(args[0], args[0]);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.