⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xwikidocument.java

📁 xwiki 源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                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("&amp;");
                    break;
                case '"':
                    result.append("&quot;");
                    break;
                case '<':
                    result.append("&lt;");
                    break;
                case '>':
                    result.append("&gt;");
                    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 + -