package org.eclipse.update.internal.core; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import java.io.PrintWriter; | |
import org.eclipse.update.core.IInstallConfiguration; | |
import org.eclipse.update.core.ISite; | |
import org.eclipse.update.core.ILocalSite; | |
public class Writer { | |
public Writer() { | |
super(); | |
} | |
public void writeSite(IWritable element, PrintWriter w) { | |
w.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); | |
w.println(""); | |
w.println("<!-- File written by Update manager 2.0 -->"); | |
w.println("<!-- comments in this file are not preserved -->"); | |
w.println(""); | |
((IWritable)element).write(0,w); | |
} | |
/** | |
* Method appendEscapedChar. | |
* @param buffer | |
* @param c | |
*/ | |
private static void appendEscapedChar(StringBuffer buffer, char c) { | |
String replacement = getReplacement(c); | |
if (replacement != null) { | |
buffer.append('&'); | |
buffer.append(replacement); | |
buffer.append(';'); | |
} else { | |
if ((c >= ' ' && c <= 0x7E) || c == '\n' || c == '\r' || c == '\t') { | |
buffer.append(c); | |
} else { | |
buffer.append("&#"); | |
buffer.append(Integer.toString(c)); | |
buffer.append(';'); | |
} | |
} | |
} | |
/** | |
* Method xmlSafe. | |
* @param s | |
* @return String | |
*/ | |
public static String xmlSafe(String s) { | |
StringBuffer result = new StringBuffer(s.length() + 10); | |
for (int i = 0; i < s.length(); ++i) | |
appendEscapedChar(result, s.charAt(i)); | |
return result.toString(); | |
} | |
/** | |
* Method getReplacement. | |
* @param c | |
* @return String | |
*/ | |
private static String getReplacement(char c) { | |
// Encode special XML characters into the equivalent character references. | |
// These five are defined by default for all XML documents. | |
switch (c) { | |
case '<' : | |
return "lt"; | |
case '>' : | |
return "gt"; | |
case '"' : | |
return "quot"; | |
case '\'' : | |
return "apos"; | |
case '&' : | |
return "amp"; | |
} | |
return null; | |
} | |
} |