📄 xwikidocument.java
字号:
if ((v1.get(i)==null)&&(v2.get(i)!=null))
return false;
if (!v1.get(i).equals(v2.get(i)))
return false;
}
}
return true;
}
public String toXML(Document doc, XWikiContext context) {
OutputFormat outputFormat = new OutputFormat("", true);
if ((context==null)||(context.getWiki()==null))
outputFormat.setEncoding("UTF-8");
else
outputFormat.setEncoding(context.getWiki().getEncoding());
StringWriter out = new StringWriter();
XMLWriter writer = new XMLWriter( out, outputFormat );
try {
writer.write(doc);
return out.toString();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public String getXMLContent(XWikiContext context) throws XWikiException {
XWikiDocument tdoc = getTranslatedDocument(context);
Document doc = tdoc.toXMLDocument(true, true, false, false, context);
return toXML(doc, context);
}
public String toXML(XWikiContext context) {
Document doc = toXMLDocument(context);
return toXML(doc, context);
}
public String toFullXML(XWikiContext context) {
return toXML(true, false, true, true, context);
}
public void addToZip(ZipOutputStream zos, boolean withVersions, XWikiContext context) throws IOException {
try {
String zipname = getWeb() + "/" + getName();
String language = getLanguage();
if ((language!=null)&&(!language.equals("")))
zipname += "." + language;
ZipEntry zipentry = new ZipEntry(zipname);
zos.putNextEntry(zipentry);
zos.write(toXML(true, false, true, withVersions, context).getBytes());
zos.closeEntry();
} catch (Exception e) {
e.printStackTrace();
}
}
public void addToZip(ZipOutputStream zos, XWikiContext context) throws IOException {
addToZip(zos, true, context);
}
public String toXML(boolean bWithObjects, boolean bWithRendering,
boolean bWithAttachmentContent,
boolean bWithVersions,
XWikiContext context) {
Document doc = toXMLDocument(bWithObjects, bWithRendering,
bWithAttachmentContent, bWithVersions ,context);
return toXML(doc, context);
}
public Document toXMLDocument(XWikiContext context) {
return toXMLDocument(true, false, false, false, context);
}
public Document toXMLDocument(boolean bWithObjects, boolean bWithRendering,
boolean bWithAttachmentContent,
boolean bWithVersions,
XWikiContext context) {
Document doc = new DOMDocument();
Element docel = new DOMElement("xwikidoc");
doc.setRootElement(docel);
Element el = new DOMElement("web");
el.addText(getWeb());
docel.add(el);
el = new DOMElement("name");
el.addText(getName());
docel.add(el);
el = new DOMElement("language");
el.addText(getLanguage());
docel.add(el);
el = new DOMElement("defaultLanguage");
el.addText(getDefaultLanguage());
docel.add(el);
el = new DOMElement("translation");
el.addText("" + getTranslation());
docel.add(el);
el = new DOMElement("parent");
el.addText(getParent());
docel.add(el);
el = new DOMElement("author");
el.addText(getAuthor());
docel.add(el);
long d = getCreationDate().getTime();
el = new DOMElement("creationDate");
el.addText("" + d);
docel.add(el);
d = getDate().getTime();
el = new DOMElement("date");
el.addText("" + d);
docel.add(el);
el = new DOMElement("version");
el.addText(getVersion());
docel.add(el);
List alist = getAttachmentList();
for (int ai=0;ai<alist.size();ai++) {
XWikiAttachment attach = (XWikiAttachment) alist.get(ai);
docel.add(attach.toXML(bWithAttachmentContent, bWithVersions));
}
if (bWithObjects) {
// Add Class
BaseClass bclass = getxWikiClass();
if (bclass.getFieldList().size()>0) {
docel.add(bclass.toXML(null));
}
// Add Objects
Iterator it = getxWikiObjects().values().iterator();
while (it.hasNext()) {
Vector objects = (Vector) it.next();
for (int i=0;i<objects.size();i++) {
BaseObject obj = (BaseObject)objects.get(i);
if (obj!=null) {
BaseClass objclass = null;
if (obj.getName().equals(obj.getClassName()))
objclass = bclass;
else
objclass = obj.getxWikiClass(context);
docel.add(obj.toXML(objclass));
}
}
}
}
// Add Content
el = new DOMElement("content");
//Filter filter = new CharacterFilter();
//String newcontent = filter.process(getContent());
//String newcontent = encodedXMLStringAsUTF8(getContent());
String newcontent = content;
el.addText(newcontent);
docel.add(el);
if (bWithRendering) {
el = new DOMElement("renderedcontent");
try {
el.addText(getRenderedContent(context));
} catch (XWikiException e) {
el.addText("Exception with rendering content: " + e.getFullMessage());
}
docel.add(el);
}
if (bWithVersions) {
el = new DOMElement("versions");
try {
el.addText(getArchive());
} catch (XWikiException e) {
return null;
}
docel.add(el);
}
return doc;
}
protected String encodedXMLStringAsUTF8(String xmlString) {
if (xmlString == null) {
return "";
}
int length = xmlString.length();
char character;
StringBuffer result = new StringBuffer();
for (int i = 0; i < length; i++) {
character = xmlString.charAt( i );
switch (character) {
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '\n':
result.append("\n");
break;
case '\r':
result.append("\r");
break;
case '\t':
result.append("\t");
break;
default:
if (character < 0x20) {
} else if (character > 0x7F) {
result.append("&#x");
result.append(Integer.toHexString(character).toUpperCase());
result.append(";");
} else {
result.append(character);
}
break;
}
}
return result.toString();
}
protected String getElement(Element docel, String name) {
Element el = docel.element(name);
if (el==null)
return "";
else
return el.getText();
}
public void fromXML(String xml) throws DocumentException, java.text.ParseException, IllegalAccessException, InstantiationException, ClassNotFoundException, XWikiException {
fromXML(xml, false);
}
public void fromXML(String xml, boolean withArchive) throws DocumentException, java.text.ParseException, IllegalAccessException, InstantiationException, ClassNotFoundException, XWikiException {
SAXReader reader = new SAXReader();
Document domdoc;
try {
StringReader in = new StringReader(xml);
domdoc = reader.read(in);
} catch (DocumentException e) {
throw e;
}
Element docel = domdoc.getRootElement();
setName(getElement(docel, "name"));
setWeb(getElement(docel,"web"));
setParent(getElement(docel,"parent"));
setCreator(getElement(docel,"creator"));
setAuthor(getElement(docel,"author"));
setVersion(getElement(docel,"version"));
setContent(getElement(docel,"content"));
setLanguage(getElement(docel,"language"));
setDefaultLanguage(getElement(docel,"defaultLanguage"));
String strans = getElement(docel,"translation");
if ((strans==null)||strans.equals(""))
setTranslation(0);
else
setTranslation(Integer.parseInt(strans));
String archive = getElement(docel,"versions");
if (withArchive && archive != null && archive.length() > 0)
{
setArchive(archive);
}
String sdate = getElement(docel,"date");
if (!sdate.equals("")) {
Date date = new Date(Long.parseLong(sdate));
setDate(date);
}
String scdate = getElement(docel,"creationDate");
if (!scdate.equals("")) {
Date cdate = new Date(Long.parseLong(scdate));
setCreationDate(cdate);
}
List atels = docel.elements("attachment");
for (int i=0;i<atels.size();i++) {
Element atel = (Element) atels.get(i);
XWikiAttachment attach = new XWikiAttachment();
attach.setDoc(this);
attach.fromXML(atel);
getAttachmentList().add(attach);
}
Element cel = docel.element("class");
BaseClass bclass = new BaseClass();
if (cel!=null) {
bclass.fromXML(cel);
setxWikiClass(bclass);
}
//
List objels = docel.elements("object");
for (int i=0;i<objels.size();i++) {
Element objel = (Element) objels.get(i);
BaseObject bobject = new BaseObject();
bobject.fromXML(objel);
addObject(bobject.getClassName(), bobject);
}
}
public void setAttachmentList(List list) {
attachmentList = list;
}
public List getAttachmentList() {
return attachmentList;
}
public void saveAttachmentContent(XWikiAttachment attachment, XWikiContext context) throws XWikiException {
String database = context.getDatabase();
try {
// We might need to switch database to
// get the translated content
if (getDatabase()!=null)
context.setDatabase(getDatabase());
getStore().saveAttachmentContent(attachment, context, true);
} finally {
if (database!=null)
context.setDatabase(database);
}
}
public void loadAttachmentContent(XWikiAttachment attachment, XWikiContext context) throws XWikiException {
String database = context.getDatabase();
try {
// We might need to switch database to
// get the translated content
if (getDatabase()!=null)
context.setDatabase(getDatabase());
getStore().loadAttachmentContent(attachment, context, true);
} finally {
if (database!=null)
context.setDatabase(database);
}
}
public void deleteAttachment(XWikiAttachment attachment, XWikiContext context) throws XWikiException {
String database = context.getDatabase();
try {
// We might need to switch database to
// get the translated content
if (getDatabase()!=null)
context.setDatabase(getDatabase());
getStore().deleteXWikiAttachment(attachment, context, true);
} finally {
if (database!=null)
context.setDatabase(database);
}
}
public void renameProperties(String className, Map fieldsToRename) {
Vector objects = getObjects(className);
if (objects==null)
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -