Java Examples for org.jdom2.Content

The following java examples will help you to understand the usage of org.jdom2.Content. These source code samples are taken from different open source projects.

Example 1
Project: cms-ce-master  File: DataEntryXmlCreator.java View source code
private void addHtmlAreaDataEntry(final Element dataEntrySetEl, final HtmlAreaDataEntry entry) {
    final String wrapElementName = "temp-wraped-element-if-you-can-see-me-something-went-wrong";
    final Element entryEl = ContentDataXPathCreator.ensurePath(dataEntrySetEl, stripContentdataWhenNotBlockGroup(entry.getConfig()));
    if (!entry.isEmpty()) {
        final String xmlStr = ensureXmlProlog(wrapElement(entry.getValue(), wrapElementName));
        Document document;
        try {
            final XMLDocument xml = XMLDocumentFactory.create(xmlStr);
            document = xml.getAsJDOMDocument();
        } catch (XMLException e) {
            throw new RuntimeException("Failed to parse xml when adding entry: " + entry.getName(), e);
        }
        final Element rootEl = document.getRootElement();
        if (rootEl.getName().equals(wrapElementName)) {
            @SuppressWarnings({ "unchecked" }) final List<Content> children = rootEl.cloneContent();
            entryEl.addContent(children);
        } else {
            entryEl.addContent((Element) rootEl.clone());
        }
    }
}
Example 2
Project: codehaus-mojo-master  File: MavenJDOMWriter.java View source code
//-- void updateDistributionManagement(DistributionManagement, String, Counter, Element) 
/**
     * Method updateElement
     * 
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if (element != null && shouldExist) {
        counter.increaseCount();
    }
    if (element == null && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && element != null) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 3
Project: consulo-master  File: BeanBinding.java View source code
public void deserializeInto(@NotNull Object result, @NotNull Element element, @Nullable Set<String> accessorNameTracker) {
    nextAttribute: for (org.jdom.Attribute attribute : element.getAttributes()) {
        if (StringUtil.isEmpty(attribute.getNamespaceURI())) {
            for (Binding binding : myBindings) {
                if (binding instanceof AttributeBinding && ((AttributeBinding) binding).myName.equals(attribute.getName())) {
                    if (accessorNameTracker != null) {
                        accessorNameTracker.add(binding.getAccessor().getName());
                    }
                    ((AttributeBinding) binding).set(result, attribute.getValue());
                    continue nextAttribute;
                }
            }
        }
    }
    MultiMap<Binding, Element> data = null;
    nextNode: for (Content content : element.getContent()) {
        if (content instanceof Comment) {
            continue;
        }
        for (Binding binding : myBindings) {
            if (content instanceof org.jdom.Text) {
                if (binding instanceof TextBinding) {
                    ((TextBinding) binding).set(result, content.getValue());
                }
                continue;
            }
            Element child = (Element) content;
            if (binding.isBoundTo(child)) {
                if (binding instanceof MultiNodeBinding && ((MultiNodeBinding) binding).isMulti()) {
                    if (data == null) {
                        data = MultiMap.createLinked();
                    }
                    data.putValue(binding, child);
                } else {
                    if (accessorNameTracker != null) {
                        accessorNameTracker.add(binding.getAccessor().getName());
                    }
                    binding.deserialize(result, child);
                }
                continue nextNode;
            }
        }
    }
    if (data != null) {
        for (Binding binding : data.keySet()) {
            if (accessorNameTracker != null) {
                accessorNameTracker.add(binding.getAccessor().getName());
            }
            ((MultiNodeBinding) binding).deserializeList(result, (List<Element>) data.get(binding));
        }
    }
}
Example 4
Project: intellij-community-master  File: StudySerializationUtils.java View source code
public static Element convertToFifthVersion(Element state) throws StudyUnrecognizedFormatException {
    Element taskManagerElement = state.getChild(MAIN_ELEMENT);
    Element courseElement = getChildWithName(taskManagerElement, COURSE).getChild(COURSE_TITLED);
    final int courseId = getAsInt(courseElement, ID);
    if (courseElement != null && courseId > 0) {
        courseElement.setName(REMOTE_COURSE);
    }
    final Element adaptive = getChildWithName(courseElement, ADAPTIVE);
    for (Element lesson : getChildList(courseElement, LESSONS)) {
        for (Element task : getChildList(lesson, TASK_LIST)) {
            //could be broken by 3->4 migration
            final Element lastSubtaskIndex = getChildWithName(task, LAST_SUBTASK_INDEX, true);
            final Element adaptiveParams = getChildWithName(task, ADAPTIVE_TASK_PARAMETERS, true);
            Element theoryTask = getChildWithName(task, THEORY_TAG, true);
            if (theoryTask == null && adaptiveParams != null) {
                theoryTask = getChildWithName(adaptiveParams, THEORY_TAG, true);
            }
            final boolean hasAdaptiveParams = adaptiveParams != null && !adaptiveParams.getChildren().isEmpty();
            if (lastSubtaskIndex != null && Integer.valueOf(lastSubtaskIndex.getAttributeValue(VALUE)) != 0) {
                task.setName(TASK_WITH_SUBTASKS);
            } else if (theoryTask != null && Boolean.valueOf(theoryTask.getAttributeValue(VALUE))) {
                task.setName(THEORY_TASK);
            } else if (hasAdaptiveParams) {
                task.setName(CHOICE_TASK);
                final Element adaptiveParameters = adaptiveParams.getChildren().get(0);
                for (Element element : adaptiveParameters.getChildren()) {
                    final Attribute name = element.getAttribute(NAME);
                    if (name != null && !THEORY_TAG.equals(name.getValue())) {
                        final Content elementCopy = element.clone();
                        task.addContent(elementCopy);
                    }
                }
            } else if (Boolean.valueOf(adaptive.getAttributeValue(VALUE))) {
                task.setName(CODE_TASK);
            } else {
                task.setName(PYCHARM_TASK);
            }
            task.removeContent(adaptiveParams);
            task.removeContent(theoryTask);
        }
    }
    return state;
}
Example 5
Project: jdom-master  File: TestSAXBuilder.java View source code
/**
     * Test that when setExpandEntities is true, enties are
     * always expanded and when false, entities declarations
     * are added to the DocType
     */
@Test
public void test_TCM__void_setExpandEntities_boolean() throws JDOMException, IOException {
    //test entity exansion on internal entity
    URL src = FidoFetch.getFido().getURL("/SAXBuilderTestEntity.xml");
    SAXBuilder builder = new SAXBuilder();
    builder.setExpandEntities(true);
    assertTrue(builder.getExpandEntities());
    Document doc = builder.build(src);
    assertTrue("didn't get entity text", doc.getRootElement().getText().indexOf("simple entity") == 0);
    assertTrue("didn't get entity text", doc.getRootElement().getText().indexOf("another simple entity") > 1);
    //test that entity declaration appears in doctype
    //and EntityRef is created in content with internal entity
    builder.setExpandEntities(false);
    assertFalse(builder.getExpandEntities());
    doc = builder.build(src);
    assertTrue("got entity text", !(doc.getRootElement().getText().indexOf("simple entity") > 1));
    assertTrue("got entity text", !(doc.getRootElement().getText().indexOf("another simple entity") > 1));
    List<Content> content = doc.getRootElement().getContent();
    assertTrue("didn't get EntityRef for unexpanded entities", content.get(0) instanceof EntityRef);
    assertTrue("didn't get EntityRef for unexpanded entities", content.get(2) instanceof EntityRef);
    //test entity expansion on external entity
    URL src2 = FidoFetch.getFido().getURL("/SAXBuilderTestEntity2.xml");
    builder.setExpandEntities(true);
    assertTrue(builder.getExpandEntities());
    doc = builder.build(src2);
    assertTrue("didn't get entity text", doc.getRootElement().getText().indexOf("simple entity") == 0);
    assertTrue("didn't get entity text", doc.getRootElement().getText().indexOf("another simple entity") > 1);
    //test that entity declaration appears in doctype
    //and EntityRef is created in content with external entity
    builder.setExpandEntities(false);
    assertFalse(builder.getExpandEntities());
    doc = builder.build(src2);
    assertTrue("got entity text", !(doc.getRootElement().getText().indexOf("simple entity") > 1));
    assertTrue("got entity text", !(doc.getRootElement().getText().indexOf("another simple entity") > 1));
    content = doc.getRootElement().getContent();
    assertTrue("didn't get EntityRef for unexpanded entities", content.get(0) instanceof EntityRef);
    assertTrue("didn't get EntityRef for unexpanded entities", content.get(2) instanceof EntityRef);
}
Example 6
Project: meaningfulweb-master  File: ArticleProcessor.java View source code
private void cleanStructureNodes(int level, Content node, Set<Content> remove) {
    // don't go on forever, spider traps can kill JVM through stack overflow
    if (level == maxRecurseDepth) {
        return;
    }
    if (node instanceof Element) {
        Element elem = (Element) node;
        String name = StringUtils.lowerCase(elem.getName());
        List<String> attrVals = getClassAndIdVals(elem);
        String[] removeLabels = { "header", "menu", "footer", "masthead", "comment", "quotes", "resources", "tools", "headline", "caption", "share", "font", "opinion", "timestamp", "posted", "metadata", "toolbar", "disqus", "sign_up", "nav", "like", "advertisement", "sidebar", "print", "email", "more", "links", "enlarge", "tags", "breadcrumb", "facebook", "stumble", "twitter", "callout", "widget", "related", "announcement", "neighbor", "sponsor", "support", "flash" };
        boolean shouldRemove = false;
        if (!StringUtils.equals("body", name)) {
            for (String attrVal : attrVals) {
                for (int i = 0; i < removeLabels.length; i++) {
                    if (StringUtils.contains(attrVal, removeLabels[i])) {
                        shouldRemove = true;
                        remove.add(node);
                        break;
                    }
                }
            }
        }
        if (!shouldRemove) {
            Attribute styleAttr = elem.getAttribute("style");
            if (styleAttr != null) {
                String styleVal = StringUtils.lowerCase(styleAttr.getValue());
                if (StringUtils.isNotBlank(styleVal) & styleVal.matches(".*display:\\s*none.*")) {
                    remove.add(node);
                }
            }
        }
        if (!shouldRemove) {
            List<Content> children = elem.getContent();
            if (children != null && children.size() > 0) {
                for (Content child : children) {
                    cleanStructureNodes(++level, child, remove);
                }
            }
        }
    } else if (node instanceof Comment) {
        remove.add(node);
    }
}
Example 7
Project: ps-framework-master  File: XMLResponseGenerator.java View source code
public static Element generate(Response response, List<RequestedOutput> requestedOutputs) throws ResponseGenerateException {
    // get identifier, process, outputs
    String processIdentifier = response.getProcessIdentifier();
    AbstractProcess process = ProcessRepository.getInstance().getProcess(processIdentifier);
    ProcessOutputs outputs = response.getOutputs();
    // generate response
    Element responseElement = new Element(processIdentifier + "Response", Namespaces.PS);
    // add outputs
    for (String outputIdentifier : process.getOutputIdentifiers()) {
        // get output from process
        Output output = outputs.get(outputIdentifier);
        // check if output was requested and as reference
        boolean requested = false;
        boolean reference = false;
        if (requestedOutputs == null) {
            requested = true;
        } else {
            for (RequestedOutput reqOutput : requestedOutputs) {
                if (reqOutput.getName().equals(output.getIdentifier())) {
                    requested = true;
                    reference = reqOutput.isReference();
                }
            }
        }
        // add output
        if (requested) {
            // get objects related to output
            List<Object> objects;
            if (output.isSingleOutput()) {
                objects = new ArrayList<Object>();
                objects.add(output.getAsSingleOutput().getObject());
            } else {
                objects = output.getAsMultipleOutput().getObjects();
            }
            // encode each object
            DataDescription dataDescription = process.getOutputDataDescription(outputIdentifier);
            for (Object o : objects) {
                try {
                    // base element
                    Element outputElement = new Element(outputIdentifier, Namespaces.PS);
                    responseElement.addContent(outputElement);
                    // generate
                    Content dataContent = generateData(o, dataDescription.getType(), reference);
                    outputElement.addContent(dataContent);
                } catch (EncodeException e) {
                    String message = "Couldn't encode data for " + output.getIdentifier() + ".";
                    logger.error(message);
                    throw new ResponseGenerateException(message, e);
                }
            }
        }
    }
    return responseElement;
}
Example 8
Project: cxf-build-utils-master  File: CXFAllTransformer.java View source code
public void modifyOutputStream(JarOutputStream jos) throws IOException {
    List<String> imps = new ArrayList<String>(extensions.keySet());
    for (Map.Entry<String, ByteArrayOutputStream> ent : extensions.entrySet()) {
        jos.putNextEntry(new JarEntry(ent.getKey()));
        ent.getValue().writeTo(jos);
        try {
            Document r = new SAXBuilder().build(new ByteArrayInputStream(ent.getValue().toByteArray()));
            Element root = r.getRootElement();
            for (Iterator itr = root.getChildren().iterator(); itr.hasNext(); ) {
                Content n = (Content) itr.next();
                if (n instanceof Element) {
                    Element e = (Element) n;
                    if ("import".equals(e.getName()) && "http://www.springframework.org/schema/beans".equals(e.getNamespaceURI())) {
                        //remove stuff that is imported from other extensions to
                        //keep them from being loaded twice. (it's not an issue
                        //to load them twice, there just is a performance 
                        //penalty in doing so
                        String loc = e.getAttributeValue("resource");
                        if (loc.startsWith("classpath:META-INF/cxf/cxf")) {
                            loc = loc.substring(10);
                            imps.remove(loc);
                        }
                    }
                }
            }
        } catch (JDOMException e) {
            throw new RuntimeException(e);
        }
    }
    if (imps.size() > 0) {
        jos.putNextEntry(new JarEntry("META-INF/cxf/cxf-all.xml"));
        Writer writer = new OutputStreamWriter(jos, "UTF-8");
        writer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
        writer.append("<beans xmlns=\"http://www.springframework.org/schema/beans\"\n");
        writer.append("    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
        writer.append("    xsi:schemaLocation=\"");
        writer.append("http://www.springframework.org/schema/beans ");
        writer.append("http://www.springframework.org/schema/beans/spring-beans.xsd\">\n");
        writer.append("    <import resource=\"classpath:META-INF/cxf/cxf.xml\"/>\n");
        for (String res : imps) {
            writer.append("    <import resource=\"classpath:");
            writer.append(res);
            writer.append("\"/>\n");
        }
        writer.append("</beans>");
        writer.flush();
    }
}
Example 9
Project: isis-module-docx-master  File: DocxService.java View source code
private static void merge(final Element htmlBody, final Body docXBody, final MatchingPolicy matchingPolicy) throws MergeException {
    final List<String> matchedInputIds = Lists.newArrayList();
    final List<String> unmatchedInputIds = Lists.newArrayList();
    final List<Content> htmlBodyContents = htmlBody.getContent();
    for (final Content input : htmlBodyContents) {
        if (!(input instanceof Element)) {
            continue;
        }
        mergeInto((Element) input, docXBody, matchedInputIds, unmatchedInputIds);
    }
    final List<String> unmatchedPlaceHolders = unmatchedPlaceholders(docXBody, matchedInputIds);
    matchingPolicy.unmatchedInputs(unmatchedInputIds);
    matchingPolicy.unmatchedPlaceholders(unmatchedPlaceHolders);
}
Example 10
Project: kbot-master  File: MainSettings.java View source code
private static Element getSettingElement(Document document, String name) {
    Element root = document.getRootElement();
    for (Content node : (List<Content>) root.getChildren("setting")) {
        if (node instanceof Element) {
            Element element = (Element) node;
            if (name.equals(element.getAttributeValue("name"))) {
                return element;
            }
        }
    }
    return null;
}
Example 11
Project: MvnRunner-master  File: MvnJettyConfigurationProducer.java View source code
@Override
protected String getPortInfo() {
    String portInfo = getProperty("jetty.port");
    if (!StringUtil.isEmptyOrSpaces(portInfo))
        return portInfo;
    try {
        final String portPath = "connectors/connector/port";
        List list = XPath.selectNodes(plugin.getConfigurationElement(), portPath);
        for (Object e : list) {
            Content content = (Content) e;
            if (!StringUtil.isEmptyOrSpaces(content.getValue())) {
                return content.getValue();
            }
        }
    } catch (JDOMException ignore) {
    }
    return super.getPortInfo();
}
Example 12
Project: Wolfram-Language-Parser-master  File: MapBinding.java View source code
public Object serialize(Object o, Object context, SerializationFilter filter) {
    Map map = (Map) o;
    Element m;
    if (myMapAnnotation == null || myMapAnnotation.surroundWithTag()) {
        m = new Element(Constants.MAP);
    } else {
        m = (Element) context;
    }
    final Set keySet = map.keySet();
    final Object[] keys = ArrayUtil.toObjectArray(keySet);
    if (myMapAnnotation == null || myMapAnnotation.sortBeforeSave()) {
        Arrays.sort(keys, KEY_COMPARATOR);
    }
    for (Object k : keys) {
        Object v = map.get(k);
        Element entry = new Element(getEntryAttributeName());
        m.addContent(entry);
        Object kNode = myKeyBinding.serialize(k, entry, filter);
        if (kNode instanceof Text) {
            Text text = (Text) kNode;
            entry.setAttribute(getKeyAttributeValue(), text.getText());
        } else {
            if (myMapAnnotation != null && !myMapAnnotation.surroundKeyWithTag()) {
                entry.addContent((Content) kNode);
            } else {
                Element key = new Element(getKeyAttributeValue());
                entry.addContent(key);
                key.addContent((Content) kNode);
            }
        }
        Object vNode = myValueBinding.serialize(v, entry, filter);
        if (vNode instanceof Text) {
            Text text = (Text) vNode;
            entry.setAttribute(getValueAttributeName(), text.getText());
        } else {
            if (myMapAnnotation != null && !myMapAnnotation.surroundValueWithTag()) {
                entry.addContent((Element) vNode);
            } else {
                Element value = new Element(getValueAttributeName());
                entry.addContent(value);
                value.addContent((Content) vNode);
            }
        }
    }
    return m;
}
Example 13
Project: xweb-master  File: XmlFormatter2.java View source code
private Element toElement(final Object object) {
    if (object instanceof Map) {
        final Map<?, ?> map = (Map) object;
        final String name = (object instanceof AnnotedMap) ? ((AnnotedMap) object).name : "Map";
        final Element element = new Element(name);
        for (Map.Entry e : map.entrySet()) {
            if (e.getValue() != null) {
                final Element sub = toElement(e.getValue());
                sub.setAttribute("key", e.getKey().toString());
                element.addContent(sub);
            }
        }
        return element;
    } else if (object instanceof Collection) {
        final Collection<?> collection = (Collection) object;
        final Element element = new Element("Collection");
        for (Object o : collection) {
            if (o != null) {
                final Content c = toElement(o);
                element.addContent(c);
            }
        /*if(c instanceof Text) {
                    final Element sub = new Element(o.getClass().getSimpleName());
                    sub.addContent(c);

                    element.addContent(sub);
                } else {
                    final List<?> childs = ((Element)c).getChildren();
                    for(int i=childs.size()-1; i>=0; i--) {
                        final Content child = (Content) childs.get(i);
                        child.detach();
                        element.addContent(child);
                    }
                }*/
        }
        return element;
    } else {
        final Element element = new Element(getType(object));
        element.addContent(object.toString());
        return element;
    }
}
Example 14
Project: android-maven-plugin-master  File: XpathAppendingTransformer.java View source code
@SuppressWarnings("unchecked")
private void appendElement(Element source, Element target) {
    for (Iterator<Attribute> itr = source.getAttributes().iterator(); itr.hasNext(); ) {
        Attribute a = itr.next();
        itr.remove();
        Attribute mergedAtt = target.getAttribute(a.getName(), a.getNamespace());
        if (mergedAtt == null) {
            target.setAttribute(a);
        }
    }
    for (Iterator<Element> itr = source.getChildren().iterator(); itr.hasNext(); ) {
        Content n = itr.next();
        itr.remove();
        target.addContent(n);
    }
}
Example 15
Project: jgitflow-master  File: ProjectReleaseVersionChange.java View source code
@Override
public boolean applyChange(MavenProject project, Element root, String eol) throws ProjectRewriteException {
    boolean modified = false;
    Namespace ns = getNamespaceOrNull(root);
    Element versionElement = root.getChild("version", ns);
    String projectId = ArtifactUtils.versionlessKey(project.getGroupId(), project.getArtifactId());
    String releaseVersion = releaseVersions.get(projectId);
    if (Strings.isNullOrEmpty(releaseVersion)) {
        if (consistentProjectVersions && releaseVersions.size() > 0) {
            // Use any release version, as the project's versions are consistent/global
            releaseVersion = releaseVersions.values().iterator().next();
        } else {
            throw new ProjectRewriteException("Release version for " + project.getName() + " was not found");
        }
    }
    if (null == versionElement) {
        String parentVersion = null;
        if (project.hasParent()) {
            MavenProject parent = project.getParent();
            String parentId = ArtifactUtils.versionlessKey(parent.getGroupId(), parent.getArtifactId());
            parentVersion = releaseVersions.get(parentId);
            if (Strings.isNullOrEmpty(parentVersion) && consistentProjectVersions && releaseVersions.size() > 0) {
                // Use any version for the parent, as the project's versions are consistent/global
                parentVersion = releaseVersions.values().iterator().next();
            }
        }
        if (!releaseVersion.equals(parentVersion)) {
            Element artifactId = root.getChild("artifactId", ns);
            versionElement = new Element("version", ns);
            Text indent = new Text("");
            workLog.add("setting version to '" + releaseVersion + "'");
            versionElement.setText(releaseVersion);
            int index = root.indexOf(artifactId);
            List<Content> cList = root.getContent();
            //get the previous sibling if it exists
            if (index > 0 && index < cList.size()) {
                Content prevSibling = cList.get(index - 1);
                if (Text.class.isInstance(prevSibling)) {
                    String siblingText = ((Text) prevSibling).getText();
                    if (siblingText.matches("^\\s*$")) {
                        indent = new Text("");
                        indent.setText(eol + NamingUtil.afterLastNewline(siblingText));
                    }
                }
            }
            root.addContent(index + 1, indent);
            root.addContent(index + 2, versionElement);
            modified = true;
        }
    } else {
        workLog.add("updating version '" + versionElement.getTextTrim() + " to '" + releaseVersion + "'");
        versionElement.setText(releaseVersion);
        modified = true;
    }
    return modified;
}
Example 16
Project: lichtflut-foundation-master  File: XhtmlProvider.java View source code
//------------------------------------------------------
@SuppressWarnings("unchecked")
protected HtmlElement toHtmlRecursive(Element xmlElement) {
    HtmlElement html = toHtml(xmlElement);
    List<Content> contents = xmlElement.getContent();
    for (Content node : contents) {
        HtmlElement childHtml;
        if (node instanceof Text) {
            childHtml = new HtmlText(WellKnownElement.TEXT);
            childHtml.setText(((Text) node).getText());
            ((HtmlText) childHtml).setNormalizedText(((Text) node).getTextNormalize());
            childHtml.setParent(html);
            html.addChild(childHtml);
        } else if (node instanceof Element) {
            childHtml = toHtmlRecursive((Element) node);
            childHtml.setParent(html);
            html.addChild(childHtml);
        }
    }
    return html;
}
Example 17
Project: maven-plugins-master  File: MavenJDOMWriter.java View source code
// -- void updateDistributionManagement(DistributionManagement, String, Counter, Element)
/**
     * Method updateElement
     *
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if (element != null && shouldExist) {
        counter.increaseCount();
    }
    if (element == null && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && element != null) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 18
Project: maven-shade-plugin-master  File: MavenJDOMWriter.java View source code
// -- void updateDistributionManagement(DistributionManagement, String, Counter, Element)
/**
     * Method updateElement
     *
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if (element != null && shouldExist) {
        counter.increaseCount();
    }
    if (element == null && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && element != null) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 19
Project: montagnesdor-master  File: ODXMLDocument.java View source code
@SuppressWarnings("unchecked")
private void add(Factory elemF, int lindex, ODXMLDocument other, String rpath, ElementTransformer addTransf) throws JDOMException {
    final Element toAdd = other.getDescendant(rpath);
    // si on a qqchose à ajouter
    if (toAdd != null) {
        final List<Content> cloned = toAdd.cloneContent();
        final List<Content> listToAdd;
        if (addTransf == null) {
            listToAdd = cloned;
        } else {
            listToAdd = new ArrayList<Content>(cloned.size());
            final Iterator iter = cloned.iterator();
            while (iter.hasNext()) {
                final Content c = (Content) iter.next();
                if (c instanceof Element) {
                    final Element transformedElem = addTransf.transform((Element) c);
                    if (transformedElem != null)
                        listToAdd.add(transformedElem);
                }
            }
        }
        // on crée si besoin le "récepteur"
        final Element thisElem = (Element) elemF.create();
        if (lindex < 0)
            thisElem.addContent(listToAdd);
        else
            thisElem.addContent(lindex, listToAdd);
    }
}
Example 20
Project: mvnplugins-master  File: MavenJDOMWriter.java View source code
//-- void updateDistributionManagement(DistributionManagement, String, Counter, Element)
/**
     * Method updateElement
     *
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if (element != null && shouldExist) {
        counter.increaseCount();
    }
    if (element == null && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && element != null) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 21
Project: org.openscada.external-master  File: ODXMLDocument.java View source code
@SuppressWarnings("unchecked")
private void add(Factory elemF, int lindex, ODXMLDocument other, String rpath, ElementTransformer addTransf) throws JDOMException {
    final Element toAdd = other.getDescendant(rpath);
    // si on a qqchose à ajouter
    if (toAdd != null) {
        final List<Content> cloned = toAdd.cloneContent();
        final List<Content> listToAdd;
        if (addTransf == null) {
            listToAdd = cloned;
        } else {
            listToAdd = new ArrayList<Content>(cloned.size());
            final Iterator iter = cloned.iterator();
            while (iter.hasNext()) {
                final Content c = (Content) iter.next();
                if (c instanceof Element) {
                    final Element transformedElem = addTransf.transform((Element) c);
                    if (transformedElem != null)
                        listToAdd.add(transformedElem);
                }
            }
        }
        // on crée si besoin le "récepteur"
        final Element thisElem = (Element) elemF.create();
        if (lindex < 0)
            thisElem.addContent(listToAdd);
        else
            thisElem.addContent(lindex, listToAdd);
    }
}
Example 22
Project: teamcity-vmware-plugin-master  File: GetSnapshotsListController.java View source code
@Override
protected void doPost(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response, @NotNull final Element xmlResponse) {
    final BasePropertiesBean propsBean = new BasePropertiesBean(null);
    PluginPropertiesUtil.bindPropertiesFromRequest(request, propsBean, true);
    final Map<String, String> props = propsBean.getProperties();
    final String serverUrl = props.get(VMWareWebConstants.SERVER_URL);
    final String username = props.get(VMWareWebConstants.USERNAME);
    final String password = props.get(VMWareWebConstants.SECURE_PASSWORD);
    final String imageName = props.get("image");
    try {
        final VMWareApiConnector myApiConnector = VmwareApiConnectorsPool.getOrCreateConnector(new URL(serverUrl), username, password, null, null, null);
        final Map<String, VirtualMachineSnapshotTree> snapshotList = myApiConnector.getSnapshotList(imageName);
        Element snapshots = new Element("Snapshots");
        snapshots.setAttribute("vmName", imageName);
        final Element currentVersion = new Element("Snapshot");
        currentVersion.setAttribute("name", "<Current State>");
        currentVersion.setAttribute("value", VmwareConstants.CURRENT_STATE);
        snapshots.addContent((Content) currentVersion);
        if (snapshotList.size() > 0 && TeamCityProperties.getBoolean(VmwareConstants.ENABLE_LATEST_SNAPSHOT)) {
            final Element latestSnapshot = new Element("Snapshot");
            latestSnapshot.setAttribute("name", "<Latest snapshot>");
            latestSnapshot.setAttribute("value", VmwareConstants.LATEST_SNAPSHOT);
            snapshots.addContent((Content) latestSnapshot);
        }
        for (String snapshotName : snapshotList.keySet()) {
            Element snap = new Element("Snapshot");
            snap.setAttribute("name", snapshotName);
            snap.setAttribute("value", snapshotName);
            snapshots.addContent((Content) snap);
        }
        xmlResponse.addContent((Content) snapshots);
    } catch (VmwareCheckedCloudException e) {
        LOG.warn("Unable to get snapshot list: " + e.toString());
        LOG.debug("Unable to get snapshot list: " + e.toString(), e);
    } catch (MalformedURLException e) {
        LOG.warn("Unable to get snapshot list: " + e.toString());
    }
}
Example 23
Project: DroidClic-master  File: ContentList.java View source code
/**
	 * Inserts the specified object at the specified position in this list.
	 * Shifts the object currently at that position (if any) and any subsequent
	 * objects to the right (adds one to their indices).
	 * 
	 * @param index
	 *            The location to set the value to.
	 * @param obj
	 *            The object to insert into the list. throws
	 *            IndexOutOfBoundsException if index < 0 || index > size()
	 */
public void add(int index, Object obj) {
    if (obj == null) {
        throw new IllegalAddException("Cannot add null object");
    }
    if (// String is OK to add as special case
    obj instanceof String) {
        // wrap it as a Content
        obj = new Text(obj.toString());
    }
    if ((obj instanceof Content)) {
        add(index, (Content) obj);
    } else {
        throw new IllegalAddException("Class " + obj.getClass().getName() + " is of unrecognized type and cannot be added");
    }
}
Example 24
Project: EclipseTrader-master  File: SAXOutputter.java View source code
/**
     * <p>
     * This will invoke the callbacks for the content of an element.
     * </p>
     *
     * @param content element content as a <code>List</code> of nodes.
     * @param namespaces <code>List</code> stack of Namespaces in scope.
     */
private void elementContent(List content, NamespaceStack namespaces) throws JDOMException {
    for (Iterator i = content.iterator(); i.hasNext(); ) {
        Object obj = i.next();
        if (obj instanceof Content) {
            this.elementContent((Content) obj, namespaces);
        } else {
            // Not a valid element child. This could happen with
            // application-provided lists which may contain non
            // JDOM objects.
            handleError(new JDOMException("Invalid element content: " + obj));
        }
    }
}
Example 25
Project: jclic-master  File: SAXOutputter.java View source code
/**
     * <p>
     * This will invoke the callbacks for the content of an element.
     * </p>
     *
     * @param content element content as a <code>List</code> of nodes.
     * @param namespaces <code>List</code> stack of Namespaces in scope.
     */
private void elementContent(List content, NamespaceStack namespaces) throws JDOMException {
    for (Iterator i = content.iterator(); i.hasNext(); ) {
        Object obj = i.next();
        if (obj instanceof Content) {
            this.elementContent((Content) obj, namespaces);
        } else {
            // Not a valid element child. This could happen with
            // application-provided lists which may contain non
            // JDOM objects.
            handleError(new JDOMException("Invalid element content: " + obj));
        }
    }
}
Example 26
Project: bvira-master  File: StaticDriverAdaptor.java View source code
public List<String> getElementValues(String xpath) {
    List<String> values = new ArrayList<String>();
    List<Object> result = selectMultiElements(xpath);
    for (Object object : result) {
        if (object instanceof Content) {
            values.add(((Element) object).getValue());
        }
        if (object instanceof Attribute) {
            values.add(((Attribute) object).getValue());
        }
    }
    return values;
}
Example 27
Project: cxf-master  File: StaxBuilder.java View source code
/**
     * This takes a <code>XMLStreamReader</code> and builds up a JDOM tree.
     * Recursion has been eliminated by using local stack of open elements; this
     * improves performance somewhat (classic
     * recursion-by-iteration-and-explicit stack transformation)
     *
     * @param node <code>Code</node> to examine.
     * @param doc JDOM <code>Document</code> being built.
     */
@SuppressWarnings("fallthrough")
private void buildTree(JDOMFactory f, XMLStreamReader r, Document doc) throws XMLStreamException {
    // At top level
    Element current = null;
    int event = r.getEventType();
    // if we're at the start then we need to do a next
    if (event == -1) {
        event = r.next();
    }
    while (true) {
        boolean noadd = false;
        Content child = null;
        switch(event) {
            case XMLStreamConstants.CDATA:
                child = f.cdata(r.getText());
                break;
            case XMLStreamConstants.SPACE:
                if (cfgIgnoreWS) {
                    noadd = true;
                    break;
                }
            case XMLStreamConstants.CHARACTERS:
                /*
                 * Small complication: although (ignorable) white space is
                 * allowed in prolog/epilog, and StAX may report such event,
                 * JDOM barfs if trying to add it. Thus, let's just ignore all
                 * textual stuff outside the tree:
                 */
                if (current == null) {
                    noadd = true;
                    break;
                }
                child = f.text(r.getText());
                break;
            case XMLStreamConstants.COMMENT:
                child = f.comment(r.getText());
                break;
            case XMLStreamConstants.END_DOCUMENT:
                return;
            case XMLStreamConstants.END_ELEMENT:
                /**
                 * If current.getParentElement() previously returned null and we
                 * get this event again we shouldn't bail out with a
                 * NullPointerException
                 */
                if (current != null) {
                    current = current.getParentElement();
                }
                noadd = true;
                if (isReadingMidStream && current == null)
                    return;
                break;
            case XMLStreamConstants.ENTITY_DECLARATION:
            case XMLStreamConstants.NOTATION_DECLARATION:
                /*
                 * Shouldn't really get these, but maybe some stream readers do
                 * provide the info. If so, better ignore it -- DTD event should
                 * have most/all we need.
                 */
                noadd = true;
                break;
            case XMLStreamConstants.ENTITY_REFERENCE:
                child = f.entityRef(r.getLocalName());
                break;
            case XMLStreamConstants.PROCESSING_INSTRUCTION:
                child = f.processingInstruction(r.getPITarget(), r.getPIData());
                break;
            case XMLStreamConstants.START_ELEMENT:
                {
                    // Ok, need to add a new element and simulate recursion
                    Element newElem = null;
                    String nsURI = r.getNamespaceURI();
                    // needed for special
                    String elemPrefix = r.getPrefix();
                    // handling of elem's
                    // namespace
                    String ln = r.getLocalName();
                    if (nsURI == null || nsURI.length() == 0) {
                        if (elemPrefix == null || elemPrefix.length() == 0) {
                            newElem = f.element(ln);
                        } else {
                            /*
                         * Happens when a prefix is bound to the default (empty)
                         * namespace...
                         */
                            newElem = f.element(ln, elemPrefix, "");
                        }
                    } else {
                        newElem = f.element(ln, elemPrefix, nsURI);
                    }
                    /*
                 * Let's add element right away (probably have to do it to bind
                 * attribute namespaces, too)
                 */
                    if (current == null) {
                        // at root
                        doc.setRootElement(newElem);
                        if (additionalNamespaces != null) {
                            for (Iterator<String> iter = additionalNamespaces.keySet().iterator(); iter.hasNext(); ) {
                                String prefix = iter.next();
                                String uri = additionalNamespaces.get(prefix);
                                newElem.addNamespaceDeclaration(Namespace.getNamespace(prefix, uri));
                            }
                        }
                    } else {
                        f.addContent(current, newElem);
                    }
                    // Any declared namespaces?
                    int i;
                    int len;
                    for (i = 0, len = r.getNamespaceCount(); i < len; ++i) {
                        String prefix = r.getNamespacePrefix(i);
                        Namespace ns = Namespace.getNamespace(prefix, r.getNamespaceURI(i));
                        // JDOM has special handling for element's "own" ns:
                        if (prefix != null && prefix.equals(elemPrefix)) {
                        // already set by when it was constructed...
                        } else {
                            f.addNamespaceDeclaration(newElem, ns);
                        }
                    }
                    // And then the attributes:
                    for (i = 0, len = r.getAttributeCount(); i < len; ++i) {
                        String prefix = r.getAttributePrefix(i);
                        Namespace ns;
                        if (prefix == null || prefix.length() == 0) {
                            // Attribute not in any namespace
                            ns = Namespace.NO_NAMESPACE;
                        } else {
                            ns = newElem.getNamespace(prefix);
                        }
                        Attribute attr = f.attribute(r.getAttributeLocalName(i), r.getAttributeValue(i), resolveAttrType(r.getAttributeType(i)), ns);
                        f.setAttribute(newElem, attr);
                    }
                    // And then 'push' new element...
                    current = newElem;
                    // Already added the element, can continue
                    noadd = true;
                    break;
                }
            case XMLStreamConstants.START_DOCUMENT:
            case XMLStreamConstants.DTD:
            // case XMLStreamConstants.NAMESPACE:
            default:
                /*
                 * throw new XMLStreamException("Unrecognized iterator event
                 * type: " + r.getEventType() + "; should not receive such types
                 * (broken stream reader?)");
                 */
                break;
        }
        if (!noadd && child != null) {
            if (current == null) {
                f.addContent(doc, child);
            } else {
                f.addContent(current, child);
            }
        }
        if (r.hasNext()) {
            event = r.next();
        } else {
            break;
        }
    }
}
Example 28
Project: dkpro-wsd-master  File: CLexicalCorpus.java View source code
private String loadInstance(Element p_Instance, String p_LexeltID) throws IOException {
    // head found or not
    boolean status = false;
    String id = p_Instance.getAttributeValue("id");
    String docID = p_Instance.getAttributeValue("docsrc");
    String[] tags = new String[0];
    Element context = p_Instance.getChild("context");
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < context.getContentSize(); i++) {
        Content content = context.getContent(i);
        if (org.jdom2.Text.class.isInstance(content)) {
            builder.append(" " + content.getValue());
        } else {
            Element element = (Element) content;
            String name = element.getName();
            if (name.equals("head")) {
                builder.append(" " + HEADSTART + element.getValue().trim().replace(' ', '_') + HEADEND);
                if (status) {
                    throw new IOException("Error: Multiple target word in one instance:" + id + "\n");
                } else {
                    status = true;
                }
                Attribute sats = element.getAttribute("sats");
                this.m_IDs.add(id);
                this.m_DocIDs.add(docID);
                this.m_Tags.add(tags);
                if (sats != null) {
                    this.m_SatIDs.add(sats.getValue().split("\\s"));
                    String tail = "";
                    if (p_LexeltID.endsWith("\\.[nvar]")) {
                        tail = p_LexeltID.substring(p_LexeltID.length() - 2, p_LexeltID.length());
                    }
                    this.m_LexeltIDs.add(p_LexeltID + LEXELTMARK + tail);
                } else {
                    this.m_SatIDs.add(new String[0]);
                    this.m_LexeltIDs.add(p_LexeltID);
                }
            } else if (name.equals("sat")) {
                builder.append(" " + SATSTART + element.getValue() + SATEND);
                Attribute satID = element.getAttribute("id");
                this.m_SatID2Index.put(satID.getValue(), this.m_SatID2Index.size());
            }
        }
    }
    if (// no head word
    !status) {
        throw new IOException("Error:No head word in instance:" + id + "\n");
    }
    return builder.toString().trim();
}
Example 29
Project: fudanweixin-master  File: WeixinMessageHelper.java View source code
/**
	 * 将微信XML转�化DBO
	 * 
	 * @param xml
	 *            MESSAGE XML
	 * @return DBO
	 */
public static BasicDBObject xml2dbo(Document xml) {
    if (xml == null)
        return null;
    List<Element> params = xml.getRootElement().getChildren();
    if (params == null || params.size() <= 0)
        return null;
    //log.info(xml2str(xml));
    BasicDBObject dbo = new BasicDBObject();
    for (Element e : params) {
        List<Content> cs = e.getContent();
        if (cs != null && cs.size() > 0) {
            for (Content c : cs) {
                if (c != null) {
                    Object o = null;
                    switch(c.getCType()) {
                        case Text:
                        case CDATA:
                            o = c.getValue();
                            break;
                        default:
                            ;
                    }
                    if (!CommonUtil.isEmpty(o)) {
                        if (e.getName().equalsIgnoreCase("createtime"))
                            o = Integer.parseInt(o.toString());
                        dbo.append(e.getName(), o);
                    }
                }
            }
        }
    }
    return dbo;
}
Example 30
Project: jspwiki-master  File: JSPWikiMarkupParser.java View source code
/**
     *  Gobbles up all hyperlinks that are encased in square brackets.
     */
private Element handleHyperlinks(String linktext, int pos) {
    ResourceBundle rb = Preferences.getBundle(m_context, InternationalizationManager.CORE_BUNDLE);
    StringBuilder sb = new StringBuilder(linktext.length() + 80);
    if (isAccessRule(linktext)) {
        return handleAccessRule(linktext);
    }
    if (isMetadata(linktext)) {
        return handleMetadata(linktext);
    }
    if (isPluginLink(linktext)) {
        try {
            PluginContent pluginContent = PluginContent.parsePluginLine(m_context, linktext, pos);
            //
            if (pluginContent != null) {
                addElement(pluginContent);
                pluginContent.executeParse(m_context);
            }
        } catch (PluginException e) {
            log.info(m_context.getRealPage().getWiki() + " : " + m_context.getRealPage().getName() + " - Failed to insert plugin: " + e.getMessage());
            if (!m_wysiwygEditorMode) {
                ResourceBundle rbPlugin = Preferences.getBundle(m_context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
                return addElement(makeError(MessageFormat.format(rbPlugin.getString("plugin.error.insertionfailed"), m_context.getRealPage().getWiki(), m_context.getRealPage().getName(), e.getMessage())));
            }
        }
        return m_currentElement;
    }
    try {
        LinkParser.Link link = m_linkParser.parse(linktext);
        linktext = link.getText();
        String linkref = link.getReference();
        //
        if (VariableManager.isVariableLink(linktext)) {
            Content el = new VariableContent(linktext);
            addElement(el);
        } else if (isExternalLink(linkref)) {
            // It's an external link, out of this Wiki
            callMutatorChain(m_externalLinkMutatorChain, linkref);
            if (isImageLink(linkref)) {
                handleImageLink(linkref, linktext, link.hasReference());
            } else {
                makeLink(EXTERNAL, linkref, linktext, null, link.getAttributes());
                addElement(outlinkImage());
            }
        } else if (link.isInterwikiLink()) {
            // It's an interwiki link
            // InterWiki links also get added to external link chain
            // after the links have been resolved.
            // FIXME: There is an interesting issue here:  We probably should
            //        URLEncode the wikiPage, but we can't since some of the
            //        Wikis use slashes (/), which won't survive URLEncoding.
            //        Besides, we don't know which character set the other Wiki
            //        is using, so you'll have to write the entire name as it appears
            //        in the URL.  Bugger.
            String extWiki = link.getExternalWiki();
            String wikiPage = link.getExternalWikiPage();
            if (m_wysiwygEditorMode) {
                makeLink(INTERWIKI, extWiki + ":" + wikiPage, linktext, null, link.getAttributes());
            } else {
                String urlReference = m_engine.getInterWikiURL(extWiki);
                if (urlReference != null) {
                    urlReference = TextUtil.replaceString(urlReference, "%s", wikiPage);
                    urlReference = callMutatorChain(m_externalLinkMutatorChain, urlReference);
                    if (isImageLink(urlReference)) {
                        handleImageLink(urlReference, linktext, link.hasReference());
                    } else {
                        makeLink(INTERWIKI, urlReference, linktext, null, link.getAttributes());
                    }
                    if (isExternalLink(urlReference)) {
                        addElement(outlinkImage());
                    }
                } else {
                    Object[] args = { extWiki };
                    addElement(makeError(MessageFormat.format(rb.getString("markupparser.error.nointerwikiref"), args)));
                }
            }
        } else if (linkref.startsWith("#")) {
            // It defines a local footnote
            makeLink(LOCAL, linkref, linktext, null, link.getAttributes());
        } else if (TextUtil.isNumber(linkref)) {
            // It defines a reference to a local footnote
            makeLink(LOCALREF, linkref, linktext, null, link.getAttributes());
        } else {
            int hashMark = -1;
            //
            //  Internal wiki link, but is it an attachment link?
            //
            String attachment = findAttachment(linkref);
            if (attachment != null) {
                callMutatorChain(m_attachmentLinkMutatorChain, attachment);
                if (isImageLink(linkref)) {
                    attachment = m_context.getURL(WikiContext.ATTACH, attachment);
                    sb.append(handleImageLink(attachment, linktext, link.hasReference()));
                } else {
                    makeLink(ATTACHMENT, attachment, linktext, null, link.getAttributes());
                }
            } else if ((hashMark = linkref.indexOf('#')) != -1) {
                // It's an internal Wiki link, but to a named section
                String namedSection = linkref.substring(hashMark + 1);
                linkref = linkref.substring(0, hashMark);
                linkref = MarkupParser.cleanLink(linkref);
                callMutatorChain(m_localLinkMutatorChain, linkref);
                String matchedLink;
                if ((matchedLink = linkExists(linkref)) != null) {
                    String sectref = "section-" + m_engine.encodeName(matchedLink + "-" + wikifyLink(namedSection));
                    sectref = sectref.replace('%', '_');
                    makeLink(READ, matchedLink, linktext, sectref, link.getAttributes());
                } else {
                    makeLink(EDIT, linkref, linktext, null, link.getAttributes());
                }
            } else {
                // It's an internal Wiki link
                linkref = MarkupParser.cleanLink(linkref);
                callMutatorChain(m_localLinkMutatorChain, linkref);
                String matchedLink = linkExists(linkref);
                if (matchedLink != null) {
                    makeLink(READ, matchedLink, linktext, null, link.getAttributes());
                } else {
                    makeLink(EDIT, linkref, linktext, null, link.getAttributes());
                }
            }
        }
    } catch (ParseException e) {
        log.info("Parser failure: ", e);
        Object[] args = { e.getMessage() };
        addElement(makeError(MessageFormat.format(rb.getString("markupparser.error.parserfailure"), args)));
    }
    return m_currentElement;
}
Example 31
Project: kixmpp-master  File: KixmppWebSocketCodec.java View source code
@Override
protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
    WebSocketFrame frame = null;
    if (msg instanceof Element) {
        Element element = (Element) msg;
        if (element.getNamespace() == null || element.getNamespace() == Namespace.NO_NAMESPACE) {
            if ("stream".equals(element.getNamespacePrefix())) {
                element.setNamespace(Namespace.getNamespace("http://etherx.jabber.org/streams"));
            } else {
                element.setNamespace(Namespace.getNamespace("jabber:client"));
                IteratorIterable<Content> descendants = element.getDescendants();
                while (descendants.hasNext()) {
                    Content content = descendants.next();
                    if (content instanceof Element) {
                        Element descendantElement = (Element) content;
                        if (descendantElement.getNamespace() == null || descendantElement.getNamespace() == Namespace.NO_NAMESPACE) {
                            descendantElement.setNamespace(element.getNamespace());
                        }
                    }
                }
            }
        }
        ByteBuf binaryData = ctx.alloc().buffer();
        new XMLOutputter().output((Element) msg, new ByteBufOutputStream(binaryData));
        frame = new TextWebSocketFrame(binaryData);
    } else if (msg instanceof KixmppStreamStart) {
        KixmppStreamStart streamStart = (KixmppStreamStart) msg;
        StringWriter writer = new StringWriter();
        if (streamStart.doesIncludeXmlHeader()) {
            writer.append("<?xml version='1.0' encoding='UTF-8'?>");
        }
        writer.append("<stream:stream ");
        if (streamStart.getId() != null) {
            writer.append(String.format("id=\"%s\" ", streamStart.getId()));
        }
        if (streamStart.getFrom() != null) {
            writer.append(String.format("from=\"%s\" ", streamStart.getFrom().getFullJid()));
        }
        if (streamStart.getTo() != null) {
            writer.append(String.format("to=\"%s\" ", streamStart.getTo()));
        }
        writer.append("version=\"1.0\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\">");
        frame = new TextWebSocketFrame(writer.toString());
    } else if (msg instanceof KixmppStreamEnd) {
        frame = new TextWebSocketFrame("</stream:stream>");
    } else if (msg instanceof String) {
        frame = new TextWebSocketFrame((String) msg);
    } else if (msg instanceof ByteBuf) {
        frame = new TextWebSocketFrame((ByteBuf) msg);
    }
    if (frame != null) {
        if (logger.isDebugEnabled()) {
            logger.debug("Sending: [{}]", frame.content().toString(StandardCharsets.UTF_8));
        }
        out.add(frame);
    }
}
Example 32
Project: otrunk-master  File: ExporterJDOM.java View source code
public Element exportObject(OTDataObject dataObj, OTDataObject parent, String parentResourceName) throws Exception {
    OTID id = dataObj.getGlobalId();
    // Check if we should write out a reference
    if (shouldWriteReference(dataObj, parent, parentResourceName)) {
        // never write an object reference 
        if (parentResourceName.startsWith(OTOverlay.NON_DELTA_OBJECTS_ATTRIBUTE + "[")) {
            // System.out.println("skipping writing object reference");
            return null;
        }
        return exportObjectReference(id);
    }
    // If we are here then the object hasn't been written out before
    // and if it has a valid container then we are inside of that container
    writtenIds.add(id);
    // System.err.println("writing object: " + id);		
    String objectFullClassName = OTrunkImpl.getClassName(dataObj);
    String objectElementName = getObjectElementName(objectFullClassName);
    Element objectEl = new Element(objectElementName);
    XMLDataObject xmlDO = null;
    if (dataObj instanceof XMLDataObject) {
        xmlDO = (XMLDataObject) dataObj;
    }
    if (xmlDO != null && xmlDO.getLocalId() != null) {
        // FIXME this is dangerous if the object is being copied from one db 
        // to another,  the references in this export should be checked to see
        // if they use the local_id or its global as a reference.
        objectEl.setAttribute("local_id", xmlDO.getLocalId());
    } else {
        // check to see if this object has any references that 
        // are not containment references.
        // there is only one containment reference and every object
        // should have one (with the exception of the root object)
        // so if there is more than one incoming reference than this object
        // needs an id.  
        // We should also check to see if the objects id has been explicitly set
        // in that case it should be written out anyhow.  I'm not sure how to 
        // do that yet.
        ArrayList<OTDataObject> incomingReferences = incomingReferenceMap.get(id);
        if ((xmlDO != null && xmlDO.isPreserveUUID() && id instanceof OTUUID) || (incomingReferences != null && incomingReferences.size() > 1)) {
            objectEl.setAttribute("id", id.toExternalForm());
        }
    }
    String resourceKeys[] = dataObj.getResourceKeys();
    ArrayList<String> nullResources = new ArrayList<String>();
    for (int i = 0; i < resourceKeys.length; i++) {
        // FIXME: we are ignoring special keys there should way
        // to identify special keys.
        String resourceName = resourceKeys[i];
        if (resourceName.equals("currentRevision") || resourceName.equals("localId")) {
            continue;
        }
        Object resource = dataObj.getResource(resourceName);
        if (resource instanceof OTID) {
            // this is an object reference
            // recurse
            Element objectIDEl = exportID(dataObj, (OTID) resource, resourceName);
            writeResourceElement(dataObj, objectEl, resourceName, objectIDEl);
        } else if (resource instanceof OTDataList) {
            OTDataList list = (OTDataList) resource;
            if (list.size() == 0) {
                continue;
            }
            ArrayList<Content> content = new ArrayList<Content>();
            for (int j = 0; j < list.size(); j++) {
                Object listElement = list.get(j);
                if (list instanceof XMLDataList) {
                    XMLReferenceInfo info = ((XMLDataList) list).getReferenceInfo(j);
                    if (info != null && info.comment != null) {
                        content.add(new Comment(info.comment));
                    }
                }
                Element collectionEl = exportCollectionItem(dataObj, listElement, resourceName + "[" + j + "]");
                if (collectionEl != null) {
                    content.add(collectionEl);
                }
            }
            writeResourceElement(dataObj, objectEl, resourceName, content);
        } else if (resource instanceof OTDataMap) {
            OTDataMap map = (OTDataMap) resource;
            String[] mapKeys = map.getKeys();
            ArrayList<Content> content = new ArrayList<Content>();
            for (int j = 0; j < mapKeys.length; j++) {
                Element entryEl = new Element("entry");
                content.add(entryEl);
                // We currently support special maps that use object ids as keys.  Inorder to preserve the otml
                // correctly we need to check if the mapKey is an id and if so then it should be converted.
                // When it is converted it will be turned into a ${} local_id reference.  Because we don't know
                // if the keys of the map are supposed to be ids or just plain strings.  We have to be careful to
                // not screw up regular strings that look like ids.
                // So we only modify the key if it is a local_id in this database.
                String exportedKey = mapKeys[j];
                try {
                    OTID otid = OTIDFactory.createOTID(mapKeys[j]);
                    if (otid != null) {
                        if (isLocalId(otid)) {
                            exportedKey = convertId(otid);
                        }
                    }
                } catch (Throwable t) {
                }
                entryEl.setAttribute("key", exportedKey);
                Object mapValue = map.get(mapKeys[j]);
                Element collectionEl = exportCollectionItem(dataObj, mapValue, resourceName + "['" + exportedKey + "']");
                entryEl.addContent(collectionEl);
            }
            writeResourceElement(dataObj, objectEl, resourceName, content);
        } else if (resource instanceof BlobResource) {
            BlobResource blob = (BlobResource) resource;
            URL blobUrl = blob.getBlobURL();
            String blobString = null;
            XmlType defaultType = XmlType.ELEMENT;
            if (blobUrl != null) {
                if (contextURL != null) {
                    blobString = URLUtil.getRelativeURL(contextURL, blobUrl);
                } else {
                    blobString = blobUrl.toString();
                }
                defaultType = XmlType.ATTRIBUTE;
            } else {
                blobString = BlobTypeHandler.base64(blob.getBytes());
            }
            writeResource(dataObj, objectEl, resourceName, blobString, defaultType);
        } else if (resource == null) {
            if (xmlDO.getSaveNulls()) {
                nullResources.add(resourceName);
            } else {
                System.err.println("Got null resource value");
            }
        } else if (resource instanceof Integer || resource instanceof Float || resource instanceof Byte || resource instanceof Short || resource instanceof Boolean) {
            String primitiveString = resource.toString();
            writeResource(dataObj, objectEl, resourceName, primitiveString, XmlType.ATTRIBUTE);
        } else if (resource instanceof OTXMLString) {
            // The xml string is wrapped with a fake root element
            // and loaded as a JDOM document
            // and if it doesn't fail then clone the contents of the fake root
            // element and add it to the resourceElement 
            // FIXME if it does fail then write it out as CDATA
            // FIXME we should process any references
            String xmlString = ((OTXMLString) resource).getContent();
            xmlString = exportXMLString(refidPattern, xmlString);
            xmlString = exportXMLString(viewidPattern, xmlString);
            xmlString = exportXMLString(hrefPattern, xmlString);
            String originalString = xmlString.trim();
            SAXBuilder builder = new SAXBuilder();
            xmlString = "<root>" + originalString + "</root>";
            StringReader reader = new StringReader(xmlString);
            try {
                Document xmlStringDoc = builder.build(reader, resourceName);
                Element rootXMLStringEl = xmlStringDoc.getRootElement();
                writeResourceElement(dataObj, objectEl, resourceName, rootXMLStringEl.cloneContent());
            } catch (JDOMParseException e) {
                System.err.println("User-generated XML error: " + e.getCause());
                System.err.println("Invalid xmlString");
                System.err.println("-----");
                System.err.println(xmlString);
                System.err.println("-----");
                String warning = "Warning: There is an HTML error in your text.\n " + e.getCause();
                Object[] options = { "Save anyway and ignore the errors", "I will go back and fix the error" };
                boolean saveAnyway = JOptionPane.showOptionDialog(null, warning, "HTML error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[1]) == 0;
                if (!saveAnyway) {
                    throw new Exception("JDOMParseException caught. User will edit invalid XML");
                } else {
                    writeResource(dataObj, objectEl, resourceName, XMLStringTypeHandler.INVALID_PREFIX + originalString, XmlType.ELEMENT);
                }
                e.printStackTrace();
            }
        } else if (resource instanceof String) {
            writeResource(dataObj, objectEl, resourceName, (String) resource, XmlType.ATTRIBUTE);
        } else if (resource instanceof Enum) {
            EnumType enumType = EnumType.STRING;
            if (dataObj instanceof XMLDataObject) {
                XMLDataObject xmlObj = (XMLDataObject) dataObj;
                XMLReferenceInfo resInfo = xmlObj.getReferenceInfo(resourceName);
                if (resInfo != null) {
                    enumType = resInfo.enumType;
                }
            }
            String str = null;
            switch(enumType) {
                case INT:
                    str = Integer.toString(((Enum) resource).ordinal());
                    break;
                case STRING:
                    str = ((Enum) resource).name();
                    break;
            }
            writeResource(dataObj, objectEl, resourceName, str, XmlType.ATTRIBUTE);
        } else {
            String primitiveString = resource.toString();
            writeResource(dataObj, objectEl, resourceName, primitiveString, XmlType.ATTRIBUTE);
        }
    }
    if (nullResources.size() > 0) {
        String unsetList = "";
        for (int i = 0; i < nullResources.size(); i++) {
            unsetList += nullResources.get(i) + " ";
        }
        unsetList = unsetList.trim();
        objectEl.setAttribute("unset", unsetList);
    }
    return objectEl;
}
Example 33
Project: rome-master  File: Atom10Generator.java View source code
protected void populateFeedHeader(final Feed feed, final Element eFeed) throws FeedException {
    final Content titleEx = feed.getTitleEx();
    if (titleEx != null) {
        final Element titleElement = new Element("title", getFeedNamespace());
        fillContentElement(titleElement, titleEx);
        eFeed.addContent(titleElement);
    }
    final List<Link> alternateLinks = feed.getAlternateLinks();
    if (alternateLinks != null) {
        for (final Link link : alternateLinks) {
            eFeed.addContent(generateLinkElement(link));
        }
    }
    final List<Link> otherLinks = feed.getOtherLinks();
    if (otherLinks != null) {
        for (final Link link : otherLinks) {
            eFeed.addContent(generateLinkElement(link));
        }
    }
    final List<Category> cats = feed.getCategories();
    if (cats != null) {
        for (final Category category : cats) {
            eFeed.addContent(generateCategoryElement(category));
        }
    }
    final List<SyndPerson> authors = feed.getAuthors();
    if (Lists.isNotEmpty(authors)) {
        for (final SyndPerson author : authors) {
            final Element authorElement = new Element("author", getFeedNamespace());
            fillPersonElement(authorElement, author);
            eFeed.addContent(authorElement);
        }
    }
    final List<SyndPerson> contributors = feed.getContributors();
    if (Lists.isNotEmpty(contributors)) {
        for (final SyndPerson contributor : contributors) {
            final Element contributorElement = new Element("contributor", getFeedNamespace());
            fillPersonElement(contributorElement, contributor);
            eFeed.addContent(contributorElement);
        }
    }
    final Content subtitle = feed.getSubtitle();
    if (subtitle != null) {
        final Element subtitleElement = new Element("subtitle", getFeedNamespace());
        fillContentElement(subtitleElement, subtitle);
        eFeed.addContent(subtitleElement);
    }
    final String id = feed.getId();
    if (id != null) {
        eFeed.addContent(generateSimpleElement("id", id));
    }
    final Generator generator = feed.getGenerator();
    if (generator != null) {
        eFeed.addContent(generateGeneratorElement(generator));
    }
    final String rights = feed.getRights();
    if (rights != null) {
        eFeed.addContent(generateSimpleElement("rights", rights));
    }
    final String icon = feed.getIcon();
    if (icon != null) {
        eFeed.addContent(generateSimpleElement("icon", icon));
    }
    final String logo = feed.getLogo();
    if (logo != null) {
        eFeed.addContent(generateSimpleElement("logo", logo));
    }
    final Date updated = feed.getUpdated();
    if (updated != null) {
        final Element updatedElement = new Element("updated", getFeedNamespace());
        updatedElement.addContent(DateParser.formatW3CDateTime(updated, Locale.US));
        eFeed.addContent(updatedElement);
    }
}
Example 34
Project: s1tbx-master  File: Project.java View source code
public void LoadProject(final File file) {
    showProjectsView();
    initProject(file);
    Document doc;
    try {
        doc = XMLSupport.LoadXML(file.getAbsolutePath());
    } catch (IOException e) {
        Dialogs.showError("Unable to load " + file.toString() + ": " + e.getMessage());
        return;
    }
    final List<ProjectSubFolder> folderList = new ArrayList<>();
    final List<ProjectFile> prodList = new ArrayList<>();
    final Element root = doc.getRootElement();
    final List<Content> children = root.getContent();
    for (Object aChild : children) {
        if (aChild instanceof Element) {
            final Element child = (Element) aChild;
            if (child.getName().equals("subFolder")) {
                final Attribute attrib = child.getAttribute("name");
                final ProjectSubFolder subFolder = projectSubFolders.addSubFolder(attrib.getValue());
                subFolder.fromXML(child, folderList, prodList);
            }
        }
    }
    loadProducts(folderList, prodList);
    loadSession(file);
    notifyEvent(false);
}
Example 35
Project: Slipstream-Mod-Manager-master  File: XMLPatcher.java View source code
public Document patch(Document mainDoc, Document appendDoc) {
    Document resultDoc = mainDoc.clone();
    Element resultRoot = resultDoc.getRootElement();
    Element appendRoot = appendDoc.getRootElement();
    ElementFilter modFilter = new ElementFilter(modNS);
    for (Content content : appendRoot.getContent()) {
        if (modFilter.matches(content)) {
            Element node = (Element) content;
            boolean handled = false;
            List<Element> matchedNodes = handleModFind(resultRoot, node);
            if (matchedNodes != null) {
                handled = true;
                for (Element matchedNode : matchedNodes) {
                    handleModCommands(matchedNode, node);
                }
            }
            if (!handled) {
                throw new IllegalArgumentException(String.format("Unrecognized mod tag <%s> (%s).", node.getName(), getPathToRoot(node)));
            }
        } else {
            resultRoot.addContent(content.clone());
        }
    }
    return resultDoc;
}
Example 36
Project: step-master  File: InterlinearProviderImpl.java View source code
/**
     * TODO: can be optimized by not iterating through major elements such as Notes for example setups all the initial
     * textual information for fast retrieval during XSL transformation.
     *
     * @param element element to start with.
     */
@SuppressWarnings("unchecked")
private boolean scanForTextualInformation(final Element element, final String untaggedText) {
    // check to see if we've hit a new verse, if so, we update the verse
    updateVerseRef(element);
    // check to see if we've hit a node of interest
    if (element.getName().equals(OSISUtil.OSIS_ELEMENT_W)) {
        extractTextualInfoFromNode(element, untaggedText);
        return true;
    }
    //small optimization to remove processing of potentially verbose notes
    if (element.getName().equals(OSISUtil.OSIS_ELEMENT_NOTE)) {
        return false;
    }
    // iterate through all children and call recursively
    Object data;
    Element ele;
    final Iterator<Content> contentIter = element.getContent().iterator();
    StringBuilder untaggedContent = null;
    while (contentIter.hasNext()) {
        data = contentIter.next();
        //we capture untagged content at the same level as the elements that we process
        if (data instanceof Text) {
            if (untaggedContent == null) {
                untaggedContent = new StringBuilder(32);
            }
            untaggedContent.append(((Text) data).getText());
        }
        if (data instanceof Element) {
            ele = (Element) data;
            if (untaggedContent != null) {
                if (scanForTextualInformation(ele, untaggedContent.toString())) {
                    //we've consumed the untagged content, so remove it now
                    untaggedContent = null;
                }
            } else {
                scanForTextualInformation(ele, null);
            }
        }
    }
    return false;
}
Example 37
Project: superluminal2-master  File: IOUtils.java View source code
/**
	 * Merges the file-byte map with the specified ShipContainer, effectively saving
	 * the ship in the file-byte map.
	 */
public static void merge(Map<String, byte[]> base, ShipContainer container) throws JDOMParseException, IOException {
    ShipObject ship = container.getShipController().getGameObject();
    Map<String, byte[]> fileMap = ShipSaveUtils.saveShip(container);
    for (String file : fileMap.keySet()) {
        if (base.containsKey(file)) {
            // Mod already contains that file; need to consider further
            if (file.endsWith(".png") || file.equals(ship.getLayoutTXT()) || file.equals(ship.getLayoutXML())) {
                // Overwrite graphics and layout files
                base.put(file, fileMap.get(file));
            } else if (file.endsWith(".xml") || file.endsWith(".append") || file.endsWith(".rawappend") || file.endsWith(".rawclobber")) {
                // Merge XML files, while removing obscured elements
                Document docBase = IOUtils.parseXML(new String(base.get(file)));
                Document docAdd = IOUtils.parseXML(new String(fileMap.get(file)));
                Element root = docBase.getRootElement();
                List<Content> addList = docAdd.getContent();
                for (int i = 0; i < addList.size(); ++i) {
                    Content c = addList.get(i);
                    if (c instanceof Element == false)
                        continue;
                    Element e = (Element) c;
                    String name = e.getAttributeValue("name");
                    if (name == null) {
                        // Can't identify; just add it.
                        e.detach();
                        root.addContent(e);
                    } else {
                        // Remove elements that are obscured, in order to prevent bloating
                        List<Element> baseList = root.getChildren(e.getName(), e.getNamespace());
                        for (int j = 0; j < baseList.size(); ++j) {
                            Element el = baseList.get(j);
                            String name2 = el.getAttributeValue("name");
                            if (name2 != null && name2.equals(name)) {
                                el.detach();
                            }
                        }
                        e.detach();
                        root.addContent(e);
                    }
                }
                base.put(file, readDocument(docBase).getBytes());
            }
        } else {
            // Doesn't exist; add it
            base.put(file, fileMap.get(file));
        }
    }
}
Example 38
Project: collaborationtoday-master  File: Atom10Parser.java View source code
private Feed parseFeedMetadata(String baseURI, Element eFeed) {
    com.sun.syndication.feed.atom.Feed feed = new com.sun.syndication.feed.atom.Feed(getType());
    Element e = eFeed.getChild("title", getAtomNamespace());
    if (e != null) {
        Content c = new Content();
        c.setValue(parseTextConstructToString(e));
        c.setType(getAttributeValue(e, "type"));
        feed.setTitleEx(c);
    }
    List eList = eFeed.getChildren("link", getAtomNamespace());
    feed.setAlternateLinks(parseAlternateLinks(feed, null, baseURI, eList));
    feed.setOtherLinks(parseOtherLinks(feed, null, baseURI, eList));
    List cList = eFeed.getChildren("category", getAtomNamespace());
    feed.setCategories(parseCategories(baseURI, cList));
    eList = eFeed.getChildren("author", getAtomNamespace());
    if (eList.size() > 0) {
        feed.setAuthors(parsePersons(baseURI, eList));
    }
    eList = eFeed.getChildren("contributor", getAtomNamespace());
    if (eList.size() > 0) {
        feed.setContributors(parsePersons(baseURI, eList));
    }
    e = eFeed.getChild("subtitle", getAtomNamespace());
    if (e != null) {
        Content subtitle = new Content();
        subtitle.setValue(parseTextConstructToString(e));
        subtitle.setType(getAttributeValue(e, "type"));
        feed.setSubtitle(subtitle);
    }
    e = eFeed.getChild("id", getAtomNamespace());
    if (e != null) {
        feed.setId(e.getText());
    }
    e = eFeed.getChild("generator", getAtomNamespace());
    if (e != null) {
        Generator gen = new Generator();
        gen.setValue(e.getText());
        String att = getAttributeValue(e, "uri");
        if (att != null) {
            gen.setUrl(att);
        }
        att = getAttributeValue(e, "version");
        if (att != null) {
            gen.setVersion(att);
        }
        feed.setGenerator(gen);
    }
    e = eFeed.getChild("rights", getAtomNamespace());
    if (e != null) {
        feed.setRights(parseTextConstructToString(e));
    }
    e = eFeed.getChild("icon", getAtomNamespace());
    if (e != null) {
        feed.setIcon(e.getText());
    }
    e = eFeed.getChild("logo", getAtomNamespace());
    if (e != null) {
        feed.setLogo(e.getText());
    }
    e = eFeed.getChild("updated", getAtomNamespace());
    if (e != null) {
        feed.setUpdated(DateParser.parseDate(e.getText()));
    }
    return feed;
}
Example 39
Project: blogbridge-master  File: Atom10ParserV2.java View source code
protected WireFeed parseFeed(Element eFeed) throws FeedException {
    com.sun.syndication.feed.atom.Feed feed = new com.sun.syndication.feed.atom.Feed(getType());
    String baseURI;
    try {
        baseURI = findBaseURI(eFeed);
    } catch (Exception e) {
        throw new FeedException("ERROR while finding base URI of feed", e);
    }
    String xmlBase = eFeed.getAttributeValue("base", Namespace.XML_NAMESPACE);
    if (xmlBase != null) {
        feed.setXmlBase(xmlBase);
    }
    Element e = eFeed.getChild("title", getAtomNamespace());
    if (e != null) {
        Content c = new Content();
        c.setValue(parseTextConstructToString(e));
        //, Namespace.XML_NAMESPACE));
        c.setType(e.getAttributeValue("type"));
        feed.setTitleEx(c);
    }
    List<Element> eList = getChildren(eFeed, "link");
    feed.setAlternateLinks(parseAlternateLinks(feed, null, baseURI, eList));
    feed.setOtherLinks(parseOtherLinks(feed, null, baseURI, eList));
    List cList = eFeed.getChildren("category", getAtomNamespace());
    feed.setCategories(parseCategories(baseURI, cList));
    eList = getChildren(eFeed, "author");
    if (eList.size() > 0) {
        feed.setAuthors(parsePersons(baseURI, eList));
    }
    eList = getChildren(eFeed, "contributor");
    if (eList.size() > 0) {
        feed.setContributors(parsePersons(baseURI, eList));
    }
    e = eFeed.getChild("subtitle", getAtomNamespace());
    if (e != null) {
        Content subtitle = new Content();
        subtitle.setValue(parseTextConstructToString(e));
        //, Namespace.XML_NAMESPACE));
        subtitle.setType(e.getAttributeValue("type"));
        feed.setSubtitle(subtitle);
    }
    e = eFeed.getChild("id", getAtomNamespace());
    if (e != null) {
        feed.setId(e.getText());
    }
    e = eFeed.getChild("generator", getAtomNamespace());
    if (e != null) {
        Generator gen = new Generator();
        gen.setValue(e.getText());
        //getAtomNamespace()); DONT KNOW WHY DOESN'T WORK
        String att = e.getAttributeValue("uri");
        if (att != null) {
            gen.setUrl(att);
        }
        //getAtomNamespace()); DONT KNOW WHY DOESN'T WORK
        att = e.getAttributeValue("version");
        if (att != null) {
            gen.setVersion(att);
        }
        feed.setGenerator(gen);
    }
    e = eFeed.getChild("rights", getAtomNamespace());
    if (e != null) {
        feed.setRights(parseTextConstructToString(e));
    }
    e = eFeed.getChild("icon", getAtomNamespace());
    if (e != null) {
        feed.setIcon(e.getText());
    }
    e = eFeed.getChild("logo", getAtomNamespace());
    if (e != null) {
        feed.setLogo(e.getText());
    }
    e = eFeed.getChild("updated", getAtomNamespace());
    if (e != null) {
        feed.setUpdated(DateParser.parseDate(e.getText()));
    }
    feed.setModules(parseFeedModules(eFeed));
    eList = getChildren(eFeed, "entry");
    if (eList.size() > 0) {
        feed.setEntries(parseEntries(feed, baseURI, eList));
    }
    List foreignMarkup = extractForeignMarkup(eFeed, feed, getAtomNamespace());
    if (foreignMarkup.size() > 0) {
        feed.setForeignMarkup(foreignMarkup);
    }
    return feed;
}
Example 40
Project: and-bible-master  File: CustomHandler.java View source code
/*
     * (non-Javadoc)
     * 
     * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
     */
@Override
public void characters(char[] data, int offset, int length) {
    // what we are adding
    String text = new String(data, offset, length);
    if (stack.isEmpty()) {
        stack.addFirst(new Text(text));
        return;
    }
    // What we are adding to
    Content top = stack.getFirst();
    // then there is a null element on the stack
    if (top == null) {
        return;
    }
    if (top instanceof Text) {
        ((Text) top).append(text);
        return;
    }
    if (top instanceof Element) {
        Element current = (Element) top;
        int size = current.getContentSize();
        // split a word.
        if (size > 0) {
            Content last = current.getContent(size - 1);
            if (last instanceof Text) {
                ((Text) last).append(text);
                return;
            }
        }
        current.addContent(new Text(text));
    }
}
Example 41
Project: Application-Builder-master  File: XmlDocument.java View source code
public Element sort(Element root, java.lang.String[] tagsToSort) throws AppBuilderException {
    Element tempRoot = (Element) root.clone();
    tempRoot.detach();
    tempRoot.removeContent();
    /**
     * Makes groups of elements by tag
     */
    List eltLstLst = new ArrayList(tagsToSort.length);
    for (int iTag = 0; iTag < tagsToSort.length; iTag++) {
        List children = root.getChildren(tagsToSort[iTag], root.getNamespace());
        List eltLst = new ArrayList();
        if (children != null && !children.isEmpty()) {
            for (Object child : children) {
                if (child instanceof Content) {
                    Content newElement = (Content) ((Content) child).clone();
                    newElement.detach();
                    eltLst.add(newElement);
                }
            }
        }
        eltLstLst.add(iTag, eltLst);
    }
    /**
     * Orders the content of the resulting document
     */
    for (int iTag = 0; iTag < tagsToSort.length; iTag++) {
        if (!((List) eltLstLst.get(iTag)).isEmpty()) {
            tempRoot.addContent((List) eltLstLst.get(iTag));
        }
    }
    /**
     * the result
     */
    return tempRoot;
}
Example 42
Project: gwt-maven-plugin-master  File: GwtWebInfProcessor.java View source code
private int getInsertPosition(Element webapp, String[] startAfter, String[] stopBefore) throws JDOMException, IOException {
    List children = webapp.getContent();
    Content insertAfter = new Comment("inserted by gwt-maven-plugin");
    ArrayList<String> namesBefore = new ArrayList<String>();
    ArrayList<String> namesAfter = new ArrayList<String>();
    for (int i = 0; i < startAfter.length; i++) {
        namesBefore.add(startAfter[i]);
    }
    for (int i = 0; i < stopBefore.length; i++) {
        namesAfter.add(stopBefore[i]);
    }
    if ((children == null) || (children.size() == 0)) {
        webapp.addContent(insertAfter);
    } else {
        boolean foundPoint = false;
        for (int i = 0; !foundPoint && i < children.size(); i++) {
            Object o = children.get(i);
            if (!(o instanceof Element)) {
                continue;
            }
            Element child = (Element) o;
            if (namesAfter.contains(child.getName())) {
                webapp.addContent(i, insertAfter);
                foundPoint = true;
                break;
            }
            if (!namesBefore.contains(child.getName())) {
                webapp.addContent(i + 1, insertAfter);
                foundPoint = true;
                break;
            }
        }
        if (!foundPoint) {
            webapp.addContent(insertAfter);
        }
    }
    return webapp.indexOf(insertAfter);
}
Example 43
Project: jodtemplate-master  File: StylePostprocessor.java View source code
@Override
public Document process(final Map<String, Object> context, final Document document, final Slide slide, final Resources resources, final Configuration configuration) throws JODTemplateException {
    final IteratorIterable<Element> atElements = document.getDescendants(Filters.element(PPTXDocument.T_ELEMENT, getNamespace()));
    final List<Element> atElementsList = new ArrayList<>();
    while (atElements.hasNext()) {
        atElementsList.add(atElements.next());
    }
    for (Element at : atElementsList) {
        if (at.getContentSize() != 0) {
            final Content content = at.getContent(0);
            if (content instanceof Comment) {
                final Comment comment = (Comment) content;
                processComment(comment, at, slide, configuration);
            }
        }
    }
    return document;
}
Example 44
Project: MathMLCan-master  File: OperatorNormalizer.java View source code
private void normalizeUnicode(final Element ancestor, final Normalizer.Form form) {
    assert ancestor != null && form != null;
    final List<Text> texts = new ArrayList<Text>();
    final ContentFilter textFilter = new ContentFilter(ContentFilter.TEXT);
    for (Content text : ancestor.getContent(textFilter)) {
        texts.add((Text) text);
    }
    for (Element element : ancestor.getDescendants(new ElementFilter())) {
        for (Content text : element.getContent(textFilter)) {
            texts.add((Text) text);
        }
    }
    for (Text text : texts) {
        if (Normalizer.isNormalized(text.getText(), form)) {
            continue;
        }
        final String normalizedString = Normalizer.normalize(text.getText(), form);
        LOGGER.log(Level.FINE, "Text ''{0}'' normalized to ''{1}''", new Object[] { text.getText(), normalizedString });
        text.setText(normalizedString);
        assert Normalizer.isNormalized(text.getText(), form);
    }
}
Example 45
Project: oliot-fc-master  File: TagReportData.java View source code
/**
    * {@inheritDoc}
    */
public Content encodeXML(String name, Namespace ns) {
    // element in namespace defined by parent element
    Element element = new Element(name, ns);
    // child element are always in default LLRP namespace
    ns = Namespace.getNamespace("llrp", LLRPConstants.LLRPNAMESPACE);
    //parameters
    if (ePCParameter == null) {
        LOGGER.info("ePCParameter not set");
        throw new MissingParameterException("ePCParameter not set");
    } else {
        element.addContent(ePCParameter.encodeXML(ePCParameter.getClass().getSimpleName(), ns));
    }
    if (rOSpecID == null) {
        LOGGER.info("rOSpecID not set");
    } else {
        element.addContent(rOSpecID.encodeXML(rOSpecID.getClass().getSimpleName(), ns));
    }
    if (specIndex == null) {
        LOGGER.info("specIndex not set");
    } else {
        element.addContent(specIndex.encodeXML(specIndex.getClass().getSimpleName(), ns));
    }
    if (inventoryParameterSpecID == null) {
        LOGGER.info("inventoryParameterSpecID not set");
    } else {
        element.addContent(inventoryParameterSpecID.encodeXML(inventoryParameterSpecID.getClass().getSimpleName(), ns));
    }
    if (antennaID == null) {
        LOGGER.info("antennaID not set");
    } else {
        element.addContent(antennaID.encodeXML(antennaID.getClass().getSimpleName(), ns));
    }
    if (peakRSSI == null) {
        LOGGER.info("peakRSSI not set");
    } else {
        element.addContent(peakRSSI.encodeXML(peakRSSI.getClass().getSimpleName(), ns));
    }
    if (channelIndex == null) {
        LOGGER.info("channelIndex not set");
    } else {
        element.addContent(channelIndex.encodeXML(channelIndex.getClass().getSimpleName(), ns));
    }
    if (firstSeenTimestampUTC == null) {
        LOGGER.info("firstSeenTimestampUTC not set");
    } else {
        element.addContent(firstSeenTimestampUTC.encodeXML(firstSeenTimestampUTC.getClass().getSimpleName(), ns));
    }
    if (firstSeenTimestampUptime == null) {
        LOGGER.info("firstSeenTimestampUptime not set");
    } else {
        element.addContent(firstSeenTimestampUptime.encodeXML(firstSeenTimestampUptime.getClass().getSimpleName(), ns));
    }
    if (lastSeenTimestampUTC == null) {
        LOGGER.info("lastSeenTimestampUTC not set");
    } else {
        element.addContent(lastSeenTimestampUTC.encodeXML(lastSeenTimestampUTC.getClass().getSimpleName(), ns));
    }
    if (lastSeenTimestampUptime == null) {
        LOGGER.info("lastSeenTimestampUptime not set");
    } else {
        element.addContent(lastSeenTimestampUptime.encodeXML(lastSeenTimestampUptime.getClass().getSimpleName(), ns));
    }
    if (tagSeenCount == null) {
        LOGGER.info("tagSeenCount not set");
    } else {
        element.addContent(tagSeenCount.encodeXML(tagSeenCount.getClass().getSimpleName(), ns));
    }
    if (airProtocolTagDataList == null) {
        LOGGER.info("airProtocolTagDataList not set");
    } else {
        for (AirProtocolTagData field : airProtocolTagDataList) {
            element.addContent(field.encodeXML(field.getClass().getName().replaceAll(field.getClass().getPackage().getName() + ".", ""), ns));
        }
    }
    if (accessSpecID == null) {
        LOGGER.info("accessSpecID not set");
    } else {
        element.addContent(accessSpecID.encodeXML(accessSpecID.getClass().getSimpleName(), ns));
    }
    if (accessCommandOpSpecResultList == null) {
        LOGGER.info("accessCommandOpSpecResultList not set");
    } else {
        for (AccessCommandOpSpecResult field : accessCommandOpSpecResultList) {
            element.addContent(field.encodeXML(field.getClass().getName().replaceAll(field.getClass().getPackage().getName() + ".", ""), ns));
        }
    }
    if (customList == null) {
        LOGGER.info("customList not set");
    } else {
        for (Custom field : customList) {
            element.addContent(field.encodeXML(field.getClass().getName().replaceAll(field.getClass().getPackage().getName() + ".", ""), ns));
        }
    }
    return element;
}
Example 46
Project: phenoscape-nlp-master  File: Type4Transformer.java View source code
protected void getDescriptionFrom(Element root, int fn, int count) {
    try {
        List<Element> divs = XPath.selectNodes(root, "/tax:taxonx/tax:taxonxBody/tax:treatment/tax:div");
        Iterator<Element> it = divs.iterator();
        int i = 0;
        while (it.hasNext()) {
            Element div = it.next();
            if (div.getAttributeValue("type").compareToIgnoreCase("description") == 0) {
                //List<Element> ps = div.getChildren("p", div.getNamespace());
                List<Element> ps = div.getChildren("description");
                Iterator<Element> t = ps.iterator();
                while (t.hasNext()) {
                    Element p = t.next();
                    int size = p.getContentSize();
                    StringBuffer sb = new StringBuffer();
                    for (int c = 0; c < size; c++) {
                        Content cont = p.getContent(c);
                        if (cont instanceof Element) {
                            sb.append(((Element) cont).getTextNormalize() + " ");
                        } else if (cont instanceof Text) {
                            sb.append(((Text) cont).getTextNormalize() + " ");
                        }
                    }
                    //writeDescription2Descriptions(sb.toString(), fn+"_"+count+"_"+i); //record the position for each paragraph.
                    //record the position for each paragraph.
                    writeDescription2Descriptions(sb.toString(), fn + "_" + count + ".txtp" + i);
                    i++;
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Example 47
Project: plexus-containers-master  File: AbstractMergeableElement.java View source code
public void merge(Mergeable me) throws MergeException {
    if (!isExpectedElementType(me)) {
        //     getLogger().error ("Cannot Merge dissimilar elements. (Expected : '" + getClass ().getName () + "', found '" + me.getClass ().getName () + "')");
        throw new MergeException("Cannot Merge dissimilar elements. " + "(Expected : '" + getClass().getName() + "', found '" + me.getClass().getName() + "')");
    }
    // recessive Component Element.
    AbstractMergeableElement rce = (AbstractMergeableElement) me;
    Set allowedTags = new HashSet();
    for (int i = 0; i < getAllowedTags().length; i++) {
        String tagName = getAllowedTags()[i].getTagName();
        allowedTags.add(tagName);
        List defaultConflictChecklist = new ArrayList();
        defaultConflictChecklist.add(tagName);
        if (!isRecessiveElementInConflict(rce, defaultConflictChecklist) && mergeableElementComesFromRecessive(rce, tagName)) {
            this.addContent((Element) rce.getChild(tagName).clone());
        // else dominant wins in anycase!
        } else if (getAllowedTags()[i].isMergeable() && isRecessiveElementInConflict(rce, defaultConflictChecklist)) {
            // this allows for merging multiple/list of elements.
            try {
                getAllowedTags()[i].createMergeable(this.getChild(tagName)).merge(getAllowedTags()[i].createMergeable(rce.getChild(tagName)), getDefaultMergeStrategy());
            } catch (Exception e) {
                throw new MergeException("Unable to create Mergeable instance for tag " + "'" + getAllowedTags()[i] + "'.", e);
            }
        }
    }
    for (Iterator i = me.getElement().getChildren().iterator(); i.hasNext(); ) {
        Element child = (Element) i.next();
        if (!allowedTags.contains(child.getName())) {
            // not yet merged, copy over
            element.addContent((Content) child.clone());
        }
    }
}
Example 48
Project: ProjectAres-master  File: MapFilePreprocessor.java View source code
private List<Content> readIncludedDocument(Path fullPath, @Nullable Element includeElement) throws InvalidXMLException {
    if (includeStack.contains(fullPath)) {
        throw new InvalidXMLException("Circular include: " + Joiner.on(" --> ").join(includeStack), includeElement);
    }
    includeStack.push(fullPath);
    try {
        return readDocument(fullPath).getRootElement().cloneContent();
    } finally {
        includeStack.pop();
    }
}
Example 49
Project: ps3mediaserver-master  File: Feed.java View source code
@SuppressWarnings("unchecked")
public void parse() throws Exception {
    SyndFeedInput input = new SyndFeedInput();
    byte b[] = downloadAndSendBinary(url);
    if (b != null) {
        SyndFeed feed = input.build(new XmlReader(new ByteArrayInputStream(b)));
        setName(feed.getTitle());
        if (feed.getCategories() != null && feed.getCategories().size() > 0) {
            SyndCategory category = (SyndCategory) feed.getCategories().get(0);
            setTempCategory(category.getName());
        }
        List<SyndEntry> entries = feed.getEntries();
        for (SyndEntry entry : entries) {
            setTempItemTitle(entry.getTitle());
            setTempItemLink(entry.getLink());
            setTempFeedLink(entry.getUri());
            setTempItemThumbURL(null);
            ArrayList<Element> elements = (ArrayList<Element>) entry.getForeignMarkup();
            for (Element elt : elements) {
                if ("group".equals(elt.getName()) && "media".equals(elt.getNamespacePrefix())) {
                    List<Content> subElts = elt.getContent();
                    for (Content subelt : subElts) {
                        if (subelt instanceof Element) {
                            parseElement((Element) subelt, false);
                        }
                    }
                }
                parseElement(elt, true);
            }
            List<SyndEnclosure> enclosures = entry.getEnclosures();
            for (SyndEnclosure enc : enclosures) {
                if (StringUtils.isNotBlank(enc.getUrl())) {
                    setTempItemLink(enc.getUrl());
                }
            }
            manageItem();
        }
    }
    setLastModified(System.currentTimeMillis());
}
Example 50
Project: rascal-master  File: DOM.java View source code
private Content nodeToContent(IConstructor n) {
    if (n.getConstructorType() == Factory.Node_element) {
        return nodeToElement(n);
    }
    if (n.getConstructorType() == Factory.Node_pi) {
        IString target = (IString) n.get(0);
        IString data = (IString) n.get(1);
        return new ProcessingInstruction(target.getValue(), data.getValue());
    }
    if (n.getConstructorType() == Factory.Node_charRef) {
        IInteger code = (IInteger) n.get(0);
        int c = java.lang.Integer.parseInt(code.getStringRepresentation());
        return new Text(new java.lang.String(Character.toChars(c)));
    }
    if (n.getConstructorType() == Factory.Node_entityRef) {
        return new EntityRef(((IString) n.get(0)).getValue());
    }
    java.lang.String text = ((IString) n.get(0)).getValue();
    if (n.getConstructorType() == Factory.Node_cdata) {
        return new CDATA(text);
    }
    if (n.getConstructorType() == Factory.Node_charData) {
        return new Text(text);
    }
    if (n.getConstructorType() == Factory.Node_comment) {
        return new Comment(text);
    }
    wellformednessError();
    return null;
}
Example 51
Project: rome-modules-master  File: SSEParserTest.java View source code
private void asserEqualContent(final Element one, final Element two) {
    final List<Content> oneContent = one.getContent();
    final List<Content> twoContent = two.getContent();
    if (bothNull(oneContent, twoContent)) {
        return;
    }
    assertNullEqual("missing compare content", oneContent, twoContent);
    assertEqualAttributes(one, two);
    // scan through the content to make sure each element is equal
    for (final Object content1 : oneContent) {
        if (content1 instanceof Element) {
            final Element e1 = (Element) content1;
            boolean foundEqual = false;
            final ArrayList<String> messages = new ArrayList<String>();
            for (final Object o : twoContent) {
                if (o instanceof Element) {
                    final Element e2 = (Element) o;
                    try {
                        // have to check all elements to be order insensitive
                        if (e1.getName().equals(e2.getName()) && equalAttributes(e1, e2, false)) {
                            assertEqualElements(e1, e2);
                            foundEqual = true;
                            messages.clear();
                            break;
                        }
                    } catch (final Error e) {
                        messages.add(e.getMessage());
                    }
                }
            }
            // if (!foundEqual) {
            // // show accumulated error messages
            // for (Iterator mesgIter = messages.iterator(); mesgIter.hasNext();) {
            // LOG.debug((String) mesgIter.next());
            // }
            // }
            // look for the content in the other tree
            assertTrue("could not find matching element for: " + one.getName(), foundEqual);
        }
    }
}
Example 52
Project: turmeric-eclipse-master  File: WebXMLParser.java View source code
@SuppressWarnings("unchecked")
private static int getNextNodeIndex(Element root, String nodeName) {
    List<Object> child = root.getChildren(SERVLET_NODE);
    int index = -1;
    if (child == null) {
        return index;
    }
    for (Object objEle : child) {
        if (objEle instanceof Element == false) {
            continue;
        }
        int currIdx = root.indexOf((Content) objEle);
        if (index < currIdx) {
            index = currIdx;
        }
    }
    return index;
}
Example 53
Project: UniversalMediaServer-master  File: Feed.java View source code
@SuppressWarnings("unchecked")
public void parse() throws Exception {
    SyndFeedInput input = new SyndFeedInput();
    byte b[] = downloadAndSendBinary(url);
    if (b != null) {
        SyndFeed feed = input.build(new XmlReader(new ByteArrayInputStream(b)));
        name = feed.getTitle();
        if (feed.getCategories() != null && feed.getCategories().size() > 0) {
            SyndCategory category = (SyndCategory) feed.getCategories().get(0);
            tempCategory = category.getName();
        }
        List<SyndEntry> entries = feed.getEntries();
        for (SyndEntry entry : entries) {
            tempItemTitle = entry.getTitle();
            tempItemLink = entry.getLink();
            tempFeedLink = entry.getUri();
            tempItemThumbURL = null;
            ArrayList<Element> elements = (ArrayList<Element>) entry.getForeignMarkup();
            for (Element elt : elements) {
                if ("group".equals(elt.getName()) && "media".equals(elt.getNamespacePrefix())) {
                    List<Content> subElts = elt.getContent();
                    for (Content subelt : subElts) {
                        if (subelt instanceof Element) {
                            parseElement((Element) subelt, false);
                        }
                    }
                }
                parseElement(elt, true);
            }
            List<SyndEnclosure> enclosures = entry.getEnclosures();
            for (SyndEnclosure enc : enclosures) {
                if (StringUtils.isNotBlank(enc.getUrl())) {
                    tempItemLink = enc.getUrl();
                }
            }
            manageItem();
        }
    }
    setLastModified(System.currentTimeMillis());
}
Example 54
Project: FoxyDocs-master  File: Export.java View source code
public static List<Content> transform(Document doc, String stylesheet) throws JDOMException, FileNotFoundException {
    try {
        Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(getInternalFile(stylesheet)));
        JDOMSource in = new JDOMSource(doc);
        JDOMResult out = new JDOMResult();
        transformer.transform(in, out);
        return out.getResult();
    } catch (TransformerException e) {
        throw new JDOMException("XSLT Transformation failed", e);
    }
}
Example 55
Project: XFlat-master  File: JDOMStreamReader.java View source code
@Override
public int next() throws XMLStreamException {
    if (depth < 0) {
        throw new NoSuchElementException("No more data available.");
    }
    curi = null;
    clocalname = null;
    cprefix = null;
    ctext = null;
    ctarget = null;
    cdata = null;
    if (currentEvt == END_ELEMENT) {
        nsstack.pop();
        formatstack.pop();
        emtstack[depth + 1] = null;
    }
    // confirm next walker item.
    if (!stack[depth].hasNext()) {
        // no more items at this level.
        stack[depth] = null;
        // we kill the element stack at the end of the END_ELEMENT event.
        // emtstack[depth] = null
        depth--;
        return currentEvt = (depth < 0 ? END_DOCUMENT : END_ELEMENT);
    }
    final Content c = stack[depth].next();
    if (c == null) {
        // formatted text or CDATA.
        ctext = stack[depth].text();
        return currentEvt = stack[depth].isCDATA() ? CDATA : CHARACTERS;
    }
    switch(c.getCType()) {
        case CDATA:
            ctext = c.getValue();
            return currentEvt = CDATA;
        case Text:
            ctext = c.getValue();
            return currentEvt = CHARACTERS;
        case Comment:
            ctext = c.getValue();
            return currentEvt = COMMENT;
        case DocType:
            // format doctype appropriately.
            XMLOutputter xout = new XMLOutputter();
            ctext = xout.outputString((DocType) c);
            return currentEvt = DTD;
        case EntityRef:
            clocalname = ((EntityRef) c).getName();
            ctext = "";
            return currentEvt = ENTITY_REFERENCE;
        case ProcessingInstruction:
            final ProcessingInstruction pi = (ProcessingInstruction) c;
            ctarget = pi.getTarget();
            cdata = pi.getData();
            return currentEvt = PROCESSING_INSTRUCTION;
        case Element:
            // we deal with Element outside the switch statement.
            break;
        default:
            throw new IllegalStateException("Unexpected content " + c);
    }
    // OK, we break out here if we are an Element start.
    final Element emt = (Element) c;
    clocalname = emt.getName();
    cprefix = emt.getNamespacePrefix();
    curi = emt.getNamespaceURI();
    nsstack.push(emt);
    formatstack.push();
    final String space = emt.getAttributeValue("space", Namespace.XML_NAMESPACE);
    // Check for xml:space and adjust format settings
    if ("default".equals(space)) {
        formatstack.setTextMode(formatstack.getDefaultMode());
    } else if ("preserve".equals(space)) {
        formatstack.setTextMode(TextMode.PRESERVE);
    }
    depth++;
    if (depth >= stack.length) {
        stack = ArrayCopy.copyOf(stack, depth + 32);
        emtstack = ArrayCopy.copyOf(emtstack, depth + 32);
    }
    emtstack[depth] = emt;
    stack[depth] = buildWalker(formatstack, emt.getContent(), false);
    return currentEvt = START_ELEMENT;
}
Example 56
Project: Carolina-Digital-Repository-master  File: DepositController.java View source code
@RequestMapping(value = { "{uuid}/events" }, method = RequestMethod.GET)
@ResponseBody
public Document getEvents(@PathVariable String uuid) throws Exception {
    LOG.debug("getEvents( {} )", uuid);
    String bagDirectory;
    try (Jedis jedis = getJedisPool().getResource()) {
        bagDirectory = jedis.hget(RedisWorkerConstants.DEPOSIT_STATUS_PREFIX + uuid, RedisWorkerConstants.DepositField.directory.name());
    }
    File bagFile = new File(bagDirectory);
    if (!bagFile.exists())
        return null;
    File eventsFile = new File(bagDirectory, DepositConstants.EVENTS_FILE);
    if (!eventsFile.exists())
        return null;
    Element events = new Element("events", JDOMNamespaceUtil.PREMIS_V2_NS);
    Document result = new Document(events);
    XMLInputFactory factory = XMLInputFactory.newInstance();
    try (FileInputStream fis = new FileInputStream(eventsFile)) {
        XMLStreamReader reader = factory.createXMLStreamReader(fis);
        StAXStreamBuilder builder = new StAXStreamBuilder();
        List<Content> list = builder.buildFragments(reader, new DefaultStAXFilter());
        events.addContent(list);
        return result;
    }
}
Example 57
Project: DB-Builder-master  File: DBXmlDocument.java View source code
/**
   * Merges only the children of the root element of each document. It takes all the elements
   * concerned by the array of tags from all the documents to merge and adds them to the resulting
   * document. <strong>In the resulting document, the comments, processing instructions and entities
   * are removed.</strong>
   * @param tagsToMerge
   * @param XmlFile
   * @throws AppBuilderException
   * @roseuid 3AAF3793006E
   */
public void mergeWith(String[] tagsToMerge, DBXmlDocument XmlFile) throws AppBuilderException {
    /**
     * gets the resulting document from the master document. Cloning the document is important. If
     * you clone or copy an element, the copy keeps his owner and, as a result, the element appears
     * twice in the document
     */
    Element root = getDocument().getRootElement();
    root.detach();
    /** merges the elements in the resulting document */
    /** gets the root element of the documents to merge (excluding master) */
    Document documentToBeMerged = (Document) XmlFile.getDocument().clone();
    Element tempRoot = documentToBeMerged.getRootElement();
    /** gets all the elements which will be included in the resulting document */
    for (int iTag = 0; iTag < tagsToMerge.length; iTag++) {
        for (Object child : tempRoot.getChildren(tagsToMerge[iTag])) {
            if (child instanceof Content) {
                Content newElement = (Content) ((Content) child).clone();
                newElement.detach();
                root.addContent(newElement);
            }
        }
    }
    /** the result */
    setDocument(new Document(root));
}
Example 58
Project: metadata-editor-master  File: EditorTemplate.java View source code
/**
     * Prune the tree recursively by making all children of editor variable nodes point to their grandparent
     * or if there is no grandparent attach them to the document directly, even though this leads to an invalid XML document.
     * @param element The element to process
     * @param parent The parent of the processed element
     * @param doc The document
     */
private void pruneTreeRecursive(Element element, Element parent, org.jdom2.Document doc) {
    List<Content> children = new ArrayList<>();
    for (Content child : element.getContent()) {
        children.add(child);
    }
    if (supportedTags.containsKey(element.getName())) {
        // need the index of the element to know where to insert the elements
        // children
        int elementIndex;
        if (parent != null) {
            elementIndex = parent.indexOf(element);
        } else {
            elementIndex = doc.indexOf(element);
        }
        element.detach();
        for (Content child : children) {
            if (child instanceof Element) {
                Element e = (Element) child;
                pruneTreeRecursive(e, parent, doc);
            }
            child.detach();
            if (parent != null) {
                parent.addContent(elementIndex++, child);
            } else {
                doc.addContent(elementIndex++, child);
            }
        }
    } else {
        for (Content child : children) {
            if (child instanceof Element) {
                Element e = (Element) child;
                pruneTreeRecursive(e, element, doc);
            }
        }
    }
}
Example 59
Project: openflexo-master  File: XMLDecoder.java View source code
/**
	 * Internally used during XML decoding process.<br>
	 * Build and returns newly created object matching the specified node, asserting <code>node</code> is the key node.<br>
	 * Note that if some attributes are here defined, the first one will be interpreted as a String and returned as the key (eventual other
	 * child nodes will be ignored) else the first child node will be interpreted as the key.
	 * 
	 * @param node
	 *            an <code>Element</code> value
	 * @param modelEntity
	 *            a <code>ModelEntity</code> value
	 * @return an <code>Object</code> value
	 * @exception InvalidXMLDataException
	 *                if an error occurs
	 * @exception InvalidObjectSpecificationException
	 *                if an error occurs
	 */
protected Object buildKeyFromKeyNode(Element node) throws InvalidXMLDataException, InvalidObjectSpecificationException {
    List childNodesList = node.getContent();
    List attributes = node.getAttributes();
    if (attributes.size() > 0) {
        // the key (eventual other child nodes will be ignored)
        return ((Attribute) attributes.get(0)).getValue();
    } else if (childNodesList.size() > 0) {
        int i = 0;
        while (i < childNodesList.size()) {
            Content tempNode = (Content) childNodesList.get(i);
            if (tempNode instanceof Text) {
                String potentialValue = ((Text) tempNode).getTextTrim();
                if (potentialValue.length() > 0) {
                    return potentialValue;
                }
            } else if (tempNode instanceof Element) {
                Element element = (Element) tempNode;
                ModelEntity relatedModelEntity = xmlMapping.entityWithXMLTag(element.getName());
                if (relatedModelEntity == null) {
                    throw new InvalidXMLDataException("Tag '" + element.getName() + "' not found in model");
                } else {
                    return buildObjectFromNodeAndModelEntity(element, relatedModelEntity);
                }
            }
            i++;
        }
    }
    throw new InvalidXMLDataException("No key found for storing object in a hastable-like data structure");
}
Example 60
Project: programd-master  File: GenericParser.java View source code
/**
   * Evaluates the given content list and returns the result.
   * 
   * @param list the list of content to evaluate
   * @return the result of evaluating the given list of nodes
   * @throws ProcessorException if there is an error in processing
   */
public String evaluate(List<Content> list) throws ProcessorException {
    StringBuilder result = new StringBuilder();
    for (Content node : list) {
        // Would be nice not to have to do this:
        if (node instanceof Element) {
            result.append(this.evaluate((Element) node));
        } else if (node instanceof Text) {
            result.append(GenericParser.evaluate((Text) node));
        } else if (node instanceof CDATA) {
            result.append(GenericParser.evaluate((CDATA) node));
        } else if (node instanceof Comment) {
            result.append(GenericParser.evaluate((Comment) node));
        } else {
            assert false : "Unknown subclass of jdom.org.Content!";
        }
    }
    return result.toString();
}
Example 61
Project: pystructure-master  File: TypeAnnotator.java View source code
private Content goalDetails(IGoal goal) {
    if (goal instanceof ILocatable) {
        Location location = ((ILocatable) goal).getLocation();
        Element span = emptyTag("span");
        if (location.node == null) {
            span.addContent("null");
        } else {
            span.addContent(location.node.getClass().getSimpleName() + " ");
            span.addContent(linkTo(location));
        }
        return span;
    } else if (goal instanceof PossibleReferencesGoal) {
        PossibleReferencesGoal g = (PossibleReferencesGoal) goal;
        return new Text(g.getName());
    } else if (goal instanceof ClassAttributeTypeGoal) {
        ClassAttributeTypeGoal g = (ClassAttributeTypeGoal) goal;
        return linkTo(g.getContext(), g.getClassType().getKlass(), g.getAttributeName());
    } else if (goal instanceof AttributeReferencesGoal) {
        AttributeReferencesGoal g = (AttributeReferencesGoal) goal;
        Attribute attribute = g.getAttribute();
        return linkTo(g.getContext(), attribute.getKlass(), attribute.getName());
    } else if (goal instanceof PossibleAttributeReferencesGoal) {
        PossibleAttributeReferencesGoal g = (PossibleAttributeReferencesGoal) goal;
        return new Text(g.getName());
    } else if (goal instanceof MethodResolveGoal) {
        MethodResolveGoal g = (MethodResolveGoal) goal;
        return new Text(g.getClassType().getKlass() + " " + g.getAttributeName());
    } else if (goal instanceof MethodResolutionOrderGoal) {
        MethodResolutionOrderGoal g = (MethodResolutionOrderGoal) goal;
        return new Text("MRO for " + g.getKlass());
    } else if (goal instanceof CalculateTypeHierarchyGoal) {
        return new Text("Calculate all Types");
    } else {
        throw new RuntimeException("Cannot format goal, unknown goal type: " + goal);
    }
}
Example 62
Project: cismap-commons-master  File: WFSFacade.java View source code
/**
     * Replaces the current property names with the given property names in the getFeature query.
     *
     * @param  query       getFeature request as JDOM-element
     * @param  properties  the property names
     * @param  version     the version of the wfs request that is contained in the query paramaeter
     */
public static void changePropertyNames(final Element query, final Collection<String> properties, String version) {
    if (version == null) {
        logger.error("version string is null. Try to use version 1.1.0", new Exception());
        version = "1.1.0";
    }
    if (!(version.equals("1.0.0") || version.equals("1.1.0"))) {
        // NOI18N
        logger.error(// NOI18N
        "unknown wfs version: " + version + // NOI18N
        ". Try to handle this version like version 1.1.0");
    }
    query.getChild(QUERY, WFS).removeChildren(PROPERTY_NAME, WFS);
    final Collection<Content> propertyElements = new ArrayList<Content>();
    for (final String s : properties) {
        final Element tmp = new Element(PROPERTY_NAME, WFS);
        tmp.setText(s);
        propertyElements.add(tmp);
    }
    if (!propertyElements.isEmpty()) {
        query.getChild(QUERY, WFS).addContent(0, propertyElements);
    }
}
Example 63
Project: com.idega.block.pdf-master  File: PDFGeneratorBean.java View source code
private org.jdom.Document getDocumentWithModifiedTags(org.jdom.Document document) {
    List<String> expectedValues = null;
    List<Element> needless = new ArrayList<Element>();
    //	<div>
    List<Element> divs = getDocumentElements(TAG_DIV, document);
    if (!ListUtil.isEmpty(divs)) {
        expectedValues = ListUtil.convertStringArrayToList(new String[] { "deselected-case" });
        List<String> buttonAreaClassValue = ListUtil.convertStringArrayToList(new String[] { "fbc_button_area" });
        List<String> errorsClassValue = ListUtil.convertStringArrayToList(new String[] { "xformErrors" });
        List<String> displayNoneAttributeValue = ListUtil.convertStringArrayToList(new String[] { ATTRIBUTE_VALUE_DISPLAY_NONE });
        for (Element div : divs) {
            if (doElementHasAttribute(div, ATTRIBUTE_CLASS, buttonAreaClassValue)) {
                needless.add(div);
            }
            if (doElementHasAttribute(div, ATTRIBUTE_CLASS, errorsClassValue)) {
                needless.add(div);
            }
            if (doElementHasAttribute(div, ATTRIBUTE_STYLE, displayNoneAttributeValue)) {
                needless.add(div);
            }
        }
    }
    //	<legend>
    List<Element> legends = getDocumentElements("legend", document);
    if (!ListUtil.isEmpty(legends)) {
        expectedValues = ListUtil.convertStringArrayToList(new String[] { "label" });
        for (Element legend : legends) {
            if (doElementHasAttribute(legend, ATTRIBUTE_CLASS, expectedValues)) {
                needless.add(legend);
            }
        }
    }
    //	<span>
    List<Element> spans = getDocumentElements("span", document);
    if (!ListUtil.isEmpty(spans)) {
        expectedValues = ListUtil.convertStringArrayToList(new String[] { "help-text" });
        for (Element span : spans) {
            if (doElementHasAttribute(span, ATTRIBUTE_CLASS, expectedValues)) {
                needless.add(span);
            } else if (doElementHasAttribute(span, ATTRIBUTE_CLASS, Arrays.asList("selector-prototype"))) {
                needless.add(span);
            } else if (doElementHasAttribute(span, ATTRIBUTE_CLASS, Arrays.asList("alert"))) {
                needless.add(span);
            } else if (doElementHasAttribute(span, ATTRIBUTE_CLASS, Arrays.asList("required-symbol"))) {
                needless.add(span);
            }
        }
    }
    //	<textarea>
    List<Element> textareas = getDocumentElements("textarea", document);
    if (!ListUtil.isEmpty(textareas)) {
        for (Element textarea : textareas) {
            textarea.setName(TAG_DIV);
            textarea.setAttribute(new Attribute(ATTRIBUTE_CLASS, "textAreaReplacementForPDFDocument"));
            String originalText = textarea.getTextNormalize();
            if (StringUtil.isEmpty(originalText)) {
                textarea.setText(CoreConstants.MINUS);
            } else {
                String text = "<div>".concat(originalText).concat("</div>");
                while (text.indexOf("src=\"../") != -1) {
                    text = StringHandler.replace(text, "../", CoreConstants.EMPTY);
                }
                text = StringHandler.replace(text, "<br data-mce-bogus=\"1\">", CoreConstants.EMPTY);
                text = StringHandler.replace(text, "<br mce-bogus=\"1\">", CoreConstants.EMPTY);
                text = StringHandler.replace(text, "<br mce_bogus=\"1\">", CoreConstants.EMPTY);
                while (text.indexOf("<br>") != -1) {
                    text = StringHandler.replace(text, "<br>", CoreConstants.EMPTY);
                }
                org.jdom.Document textAreaContent = XmlUtil.getJDOMXMLDocument(text);
                if (textAreaContent != null) {
                    try {
                        @SuppressWarnings("unchecked") List<Content> clonedContent = textAreaContent.cloneContent();
                        textarea.removeContent();
                        textarea.setContent(clonedContent);
                    } catch (Exception e) {
                        LOGGER.log(Level.WARNING, "Error setting new content for ex-textarea element: " + text, e);
                        textarea.setText(originalText);
                    }
                }
            }
        }
    }
    //	Links
    List<Element> links = getDocumentElements("a", document);
    if (!ListUtil.isEmpty(links)) {
        for (Element link : links) {
            if (doElementHasAttribute(link, "name", Arrays.asList("chibaform-head")) && ListUtil.isEmpty(link.getChildren())) {
                needless.add(link);
            } else if (doElementHasAttribute(link, ATTRIBUTE_CLASS, Arrays.asList("help-icon"))) {
                needless.add(link);
            }
        }
    }
    //	Scripts
    List<Element> scripts = getDocumentElements("script", document);
    if (!ListUtil.isEmpty(scripts)) {
        needless.addAll(scripts);
    }
    //	<iframes>
    List<Element> frames = getDocumentElements("iframe", document);
    if (!ListUtil.isEmpty(frames)) {
        for (Element frame : frames) {
            if (ListUtil.isEmpty(frame.getChildren())) {
                needless.add(frame);
            }
        }
    }
    //	<select>
    List<Element> selects = getDocumentElements("select", document);
    if (!ListUtil.isEmpty(selects)) {
        Locale locale = null;
        IWContext iwc = CoreUtil.getIWContext();
        if (iwc != null) {
            locale = iwc.getCurrentLocale();
        }
        if (locale == null) {
            locale = Locale.ENGLISH;
        }
        IWResourceBundle iwrb = null;
        try {
            iwrb = IWMainApplication.getDefaultIWMainApplication().getBundle(CoreConstants.CORE_IW_BUNDLE_IDENTIFIER).getResourceBundle(locale);
        } catch (Exception e) {
            LOGGER.log(Level.WARNING, "Error getting resources bundle by locale: " + locale, e);
        }
        String defaultLabel = "None of the options selected";
        for (Element select : selects) {
            if (doElementHasAttribute(select, ATTRIBUTE_CLASS, Arrays.asList("selector-prototype"))) {
                needless.add(select);
            } else {
                Map<String, List<Element>> allOptions = getSelectOptions(select);
                if (allOptions != null && !ListUtil.isEmpty(allOptions.values())) {
                    for (List<Element> options : allOptions.values()) {
                        //	Getting values for selected options
                        Element option = null;
                        List<String> selectedOptionsValues = new ArrayList<String>();
                        for (Iterator<Element> optionsIter = options.iterator(); optionsIter.hasNext(); ) {
                            option = optionsIter.next();
                            if (doElementHasAttribute(option, "selected", Arrays.asList("selected"))) {
                                selectedOptionsValues.add(option.getTextNormalize());
                            }
                        }
                        if (ListUtil.isEmpty(selectedOptionsValues)) {
                            selectedOptionsValues.add(iwrb == null ? defaultLabel : iwrb.getLocalizedString("pdf_generator.none_of_options_selected", defaultLabel));
                        }
                        select.setName(TAG_DIV);
                        select.setAttribute(new Attribute(ATTRIBUTE_CLASS, "selectDropdownReplacementForPDFDocument"));
                        if (doElementHasAttribute(select, ATTRIBUTE_STYLE, Arrays.asList(ATTRIBUTE_VALUE_DISPLAY_NONE))) {
                            select.removeAttribute(ATTRIBUTE_STYLE);
                        }
                        Element list = new Element("ul");
                        select.setContent(Arrays.asList(list));
                        Collection<Element> listItems = new ArrayList<Element>(selectedOptionsValues.size());
                        for (String value : selectedOptionsValues) {
                            Element listItem = new Element("li");
                            listItem.setText(value);
                            listItems.add(listItem);
                        }
                        list.setContent(listItems);
                    }
                }
            }
        }
    }
    selects = getDocumentElements("select", document);
    if (!ListUtil.isEmpty(selects)) {
        //	Removing empty selects
        needless.addAll(selects);
    }
    for (Iterator<Element> needlessIter = needless.iterator(); needlessIter.hasNext(); ) {
        needlessIter.next().detach();
    }
    return document;
}
Example 64
Project: compass-fork-master  File: StAXBuilder.java View source code
/**
     * This takes a <code>XMLStreamReader</code> and builds up
     * a JDOM tree. Recursion has been eliminated by using nodes'
     * parent/child relationship; this improves performance somewhat
     * (classic recursion-by-iteration-and-explicit stack transformation)
     *
     * @param f    Node factory to use for creating JDOM nodes
     * @param r    Stream reader to use for reading the document from which
     *             to build the tree
     * @param doc  JDOM <code>Document</code> being built.
     * @param tmod Text modifier to use for modifying content of text
     *             nodes (CHARACTERS, not CDATA), if any; null if no modifications
     *             are needed (modifier is usually used for trimming unnecessary
     *             but non-ignorable white space).
     */
protected void buildTree(JDOMFactory f, XMLStreamReader r, Document doc, StAXTextModifier tmod) throws XMLStreamException {
    // At top level
    Element current = null;
    /* Only relevant when trying to trim indentation. But if so, let's
         * just always allow modifications in prolog/epilog.
         */
    boolean allowTextMods = (tmod != null);
    int evtType = XMLStreamConstants.START_DOCUMENT;
    main_loop: while (true) {
        int prevEvent = evtType;
        evtType = r.next();
        /* 11-Dec-2004, TSa: We may want to trim (indentation) white
             *    space... and it's easiest to do as a completely separate
             *    piece of logic, before the main switch.
             */
        if (allowTextMods) {
            // Ok; did we get CHARACTERS to potentially modify?
            if (evtType == XMLStreamConstants.CHARACTERS) {
                // Mayhaps we could be interested in modifying it?
                if (tmod.possiblyModifyText(r, prevEvent)) {
                    /* Need to get text before iterating to see the
                         * following event (as that'll lose it)
                         */
                    String txt = r.getText();
                    evtType = r.next();
                    // So how should the text be modified if at all?
                    txt = tmod.textToIncludeBetween(r, prevEvent, evtType, txt);
                    // Need to output if it's non-empty text, then:
                    if (txt != null && txt.length() > 0) {
                        /* See discussion below for CHARACTERS case; basically
                             * we apparently can't add anything in epilog/prolog,
                             * not even white space.
                             */
                        if (current != null) {
                            f.addContent(current, f.text(txt));
                        }
                    }
                    prevEvent = XMLStreamConstants.CHARACTERS;
                // Ok, let's fall down to handle new current event
                }
            }
        // And then can just fall back to the regular handling
        }
        Content child;
        switch(evtType) {
            case XMLStreamConstants.CDATA:
                child = f.cdata(r.getText());
                break;
            case XMLStreamConstants.SPACE:
                if (cfgIgnoreWS) {
                    continue main_loop;
                }
            case XMLStreamConstants.CHARACTERS:
                /* Small complication: although (ignorable) white space
                    * is allowed in prolog/epilog, and StAX may report such
                    * event, JDOM barfs if trying to add it. Thus, let's just
                    * ignore all textual stuff outside the tree:
                    */
                if (current == null) {
                    continue main_loop;
                }
                child = f.text(r.getText());
                break;
            case XMLStreamConstants.COMMENT:
                child = f.comment(r.getText());
                break;
            case XMLStreamConstants.END_DOCUMENT:
                break main_loop;
            case XMLStreamConstants.END_ELEMENT:
                current = current.getParentElement();
                if (tmod != null) {
                    allowTextMods = tmod.allowModificationsAfter(r, evtType);
                }
                continue main_loop;
            case XMLStreamConstants.ENTITY_DECLARATION:
            case XMLStreamConstants.NOTATION_DECLARATION:
                /* Shouldn't really get these, but maybe some stream readers
                    * do provide the info. If so, better ignore it -- DTD event
                    * should have most/all we need.
                    */
                continue main_loop;
            case XMLStreamConstants.ENTITY_REFERENCE:
                child = f.entityRef(r.getLocalName());
                break;
            case XMLStreamConstants.PROCESSING_INSTRUCTION:
                child = f.processingInstruction(r.getPITarget(), r.getPIData());
                break;
            case XMLStreamConstants.START_ELEMENT:
                // Ok, need to add a new element...
                {
                    Element newElem = null;
                    String nsURI = r.getNamespaceURI();
                    // needed for special handling of elem's namespace
                    String elemPrefix = r.getPrefix();
                    String ln = r.getLocalName();
                    if (nsURI == null || nsURI.length() == 0) {
                        if (elemPrefix == null || elemPrefix.length() == 0) {
                            newElem = f.element(ln);
                        } else {
                            /* Happens when a prefix is bound to the default
                             * (empty) namespace...
                             */
                            newElem = f.element(ln, elemPrefix, "");
                        }
                    } else {
                        newElem = f.element(ln, elemPrefix, nsURI);
                    }
                    /* Let's add element right away (probably have to do
                     * it to bind attribute namespaces, too)
                     */
                    if (current == null) {
                        // at root
                        doc.setRootElement(newElem);
                    } else {
                        f.addContent(current, newElem);
                    }
                    // Any declared namespaces?
                    for (int i = 0, len = r.getNamespaceCount(); i < len; ++i) {
                        String prefix = r.getNamespacePrefix(i);
                        if (prefix == null) {
                            prefix = "";
                        }
                        Namespace ns = Namespace.getNamespace(prefix, r.getNamespaceURI(i));
                        // JDOM has special handling for element's "own" ns:
                        if (prefix.equals(elemPrefix)) {
                            // already set by when it was constructed...
                            ;
                        } else {
                            f.addNamespaceDeclaration(newElem, ns);
                        }
                    }
                    // And then the attributes:
                    for (int i = 0, len = r.getAttributeCount(); i < len; ++i) {
                        String prefix = r.getAttributePrefix(i);
                        Namespace ns;
                        if (prefix == null || prefix.length() == 0) {
                            // Attribute not in any namespace
                            ns = Namespace.NO_NAMESPACE;
                        } else {
                            ns = newElem.getNamespace(prefix);
                        }
                        Attribute attr = f.attribute(r.getAttributeLocalName(i), r.getAttributeValue(i), resolveAttrType(r.getAttributeType(i)), ns);
                        f.setAttribute(newElem, attr);
                    }
                    // And then 'push' new element...
                    current = newElem;
                }
                if (tmod != null) {
                    allowTextMods = tmod.allowModificationsAfter(r, evtType);
                }
                // Already added the element, can continue
                continue main_loop;
            case XMLStreamConstants.START_DOCUMENT:
                /* For now, let it pass: maybe some (broken) readers pass
                    * that info as first event in beginning of doc?
                    */
                continue main_loop;
            case XMLStreamConstants.DTD:
                // TBI
                continue main_loop;
            //case XMLStreamConstants.NAMESPACE:
            default:
                throw new XMLStreamException("Unrecognized iterator event type: " + r.getEventType() + "; should not receive such types (broken stream reader?)");
        }
        if (child != null) {
            if (current == null) {
                f.addContent(doc, child);
            } else {
                f.addContent(current, child);
            }
        }
    }
}
Example 65
Project: CORISCO2-master  File: SimpleHTMLFragment.java View source code
/**
	 * Remove the given content from the Element.
	 * 
	 * If the content is an element then render it as text and include it's
	 * children in the parent.
	 * 
	 * @param content
	 *            The DOM Content to be removed.
	 */
private void removeContent(Content content) {
    if (content instanceof Element) {
        // If it's an element replace the content with a text node.
        Element element = (Element) content;
        if (element.getContent().size() == 0) {
            // The element contains nothing, we can use shorthand notation
            // for it.
            String replacement = "<" + element.getName();
            @SuppressWarnings("unchecked") // This cast is correct
            List<Attribute> attributes = element.getAttributes();
            for (Attribute attribute : attributes) {
                replacement += " " + attribute.getName() + "=\"" + attribute.getValue() + "\"";
            }
            replacement += "/>";
            Element parent = element.getParentElement();
            int index = parent.indexOf(element);
            parent.setContent(index, new Text(replacement));
        } else {
            // The element contains data
            String prepend = "<" + element.getName();
            @SuppressWarnings("unchecked") // This cast is correct
            List<Attribute> attributes = element.getAttributes();
            for (Attribute attribute : attributes) {
                prepend += " " + attribute.getName() + "=\"" + attribute.getValue() + "\"";
            }
            prepend += ">";
            String postpend = "</" + element.getName() + ">";
            Element parent = element.getParentElement();
            int index = parent.indexOf(element);
            parent.addContent(index, new Text(postpend));
            parent.addContent(index, element.removeContent());
            parent.addContent(index, new Text(prepend));
            parent.removeContent(element);
        }
    } else {
        // If it's not an element just remove the content from the document.
        Element parent = content.getParentElement();
        parent.removeContent(content);
    }
}
Example 66
Project: dlibrary-master  File: METSManifest.java View source code
/**
     * Return contents of *md element as List of XML Element objects.
     * Gets content, dereferencing mdRef if necessary, or decoding and parsing
     * a binData that contains XML.
     * @return contents of metadata section, or empty list if no XML content is available.
     * @throws MetadataValidationException if METS is invalid, or there is an error parsing the XML.
     */
public List<Element> getMdContentAsXml(Element mdSec, Mdref callback) throws MetadataValidationException, PackageValidationException, IOException, SQLException, AuthorizeException {
    try {
        // XXX sanity check: if this has more than one child, consider it
        // an error since we cannot deal with more than one mdRef|mdWrap
        // child.  This may be considered a bug and need to be fixed,
        // so it's best to bring it to the attention of users.
        List mdc = mdSec.getChildren();
        if (mdc.size() > 1) {
            // XXX scaffolding for debugging diagnosis; at least one
            //  XML parser stupidly includes newlines in prettyprinting
            //  as text content objects..
            String id = mdSec.getAttributeValue("ID");
            StringBuffer sb = new StringBuffer();
            for (Iterator mi = mdc.iterator(); mi.hasNext(); ) {
                sb.append(", ").append(((Content) mi.next()).toString());
            }
            throw new MetadataValidationException("Cannot parse METS with " + mdSec.getQualifiedName() + " element that contains more than one child, size=" + String.valueOf(mdc.size()) + ", ID=" + id + "Kids=" + sb.toString());
        }
        Element mdRef = null;
        Element mdWrap = mdSec.getChild("mdWrap", metsNS);
        if (mdWrap != null) {
            Element xmlData = mdWrap.getChild("xmlData", metsNS);
            if (xmlData == null) {
                Element bin = mdWrap.getChild("binData", metsNS);
                if (bin == null) {
                    throw new MetadataValidationException("Invalid METS Manifest: mdWrap element with neither xmlData nor binData child.");
                } else // if binData is actually XML, return it; otherwise ignore.
                {
                    String mimeType = mdWrap.getAttributeValue("MIMETYPE");
                    if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                        byte value[] = Base64.decodeBase64(bin.getText().getBytes());
                        Document mdd = parser.build(new ByteArrayInputStream(value));
                        List<Element> result = new ArrayList<Element>(1);
                        result.add(mdd.getRootElement());
                        return result;
                    } else {
                        log.warn("Ignoring binData section because MIMETYPE is not XML, but: " + mimeType);
                        return new ArrayList<Element>(0);
                    }
                }
            } else {
                return xmlData.getChildren();
            }
        } else {
            mdRef = mdSec.getChild("mdRef", metsNS);
            if (mdRef != null) {
                String mimeType = mdRef.getAttributeValue("MIMETYPE");
                if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                    Document mdd = parser.build(callback.getInputStream(mdRef));
                    List<Element> result = new ArrayList<Element>(1);
                    result.add(mdd.getRootElement());
                    return result;
                } else {
                    log.warn("Ignoring mdRef section because MIMETYPE is not XML, but: " + mimeType);
                    return new ArrayList<Element>(0);
                }
            } else {
                throw new MetadataValidationException("Invalid METS Manifest: ?mdSec element with neither mdRef nor mdWrap child.");
            }
        }
    } catch (JDOMException je) {
        throw new MetadataValidationException("Error parsing or validating metadata section in mdRef or binData within " + mdSec.toString(), je);
    }
}
Example 67
Project: DSpace-SVN-Deprecated-master  File: METSManifest.java View source code
/**
     * Return contents of *md element as List of XML Element objects.
     * Gets content, dereferencing mdRef if necessary, or decoding and parsing
     * a binData that contains XML.
     * @return contents of metadata section, or empty list if no XML content is available.
     * @throws MetadataValidationException if METS is invalid, or there is an error parsing the XML.
     */
public List<Element> getMdContentAsXml(Element mdSec, Mdref callback) throws MetadataValidationException, PackageValidationException, IOException, SQLException, AuthorizeException {
    try {
        // XXX sanity check: if this has more than one child, consider it
        // an error since we cannot deal with more than one mdRef|mdWrap
        // child.  This may be considered a bug and need to be fixed,
        // so it's best to bring it to the attention of users.
        List mdc = mdSec.getChildren();
        if (mdc.size() > 1) {
            // XXX scaffolding for debugging diagnosis; at least one
            //  XML parser stupidly includes newlines in prettyprinting
            //  as text content objects..
            String id = mdSec.getAttributeValue("ID");
            StringBuffer sb = new StringBuffer();
            for (Iterator mi = mdc.iterator(); mi.hasNext(); ) {
                sb.append(", ").append(((Content) mi.next()).toString());
            }
            throw new MetadataValidationException("Cannot parse METS with " + mdSec.getQualifiedName() + " element that contains more than one child, size=" + String.valueOf(mdc.size()) + ", ID=" + id + "Kids=" + sb.toString());
        }
        Element mdRef = null;
        Element mdWrap = mdSec.getChild("mdWrap", metsNS);
        if (mdWrap != null) {
            Element xmlData = mdWrap.getChild("xmlData", metsNS);
            if (xmlData == null) {
                Element bin = mdWrap.getChild("binData", metsNS);
                if (bin == null) {
                    throw new MetadataValidationException("Invalid METS Manifest: mdWrap element with neither xmlData nor binData child.");
                } else // if binData is actually XML, return it; otherwise ignore.
                {
                    String mimeType = mdWrap.getAttributeValue("MIMETYPE");
                    if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                        byte value[] = Base64.decodeBase64(bin.getText().getBytes());
                        Document mdd = parser.build(new ByteArrayInputStream(value));
                        List<Element> result = new ArrayList<Element>(1);
                        result.add(mdd.getRootElement());
                        return result;
                    } else {
                        log.warn("Ignoring binData section because MIMETYPE is not XML, but: " + mimeType);
                        return new ArrayList<Element>(0);
                    }
                }
            } else {
                return xmlData.getChildren();
            }
        } else {
            mdRef = mdSec.getChild("mdRef", metsNS);
            if (mdRef != null) {
                String mimeType = mdRef.getAttributeValue("MIMETYPE");
                if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                    Document mdd = parser.build(callback.getInputStream(mdRef));
                    List<Element> result = new ArrayList<Element>(1);
                    result.add(mdd.getRootElement());
                    return result;
                } else {
                    log.warn("Ignoring mdRef section because MIMETYPE is not XML, but: " + mimeType);
                    return new ArrayList<Element>(0);
                }
            } else {
                throw new MetadataValidationException("Invalid METS Manifest: ?mdSec element with neither mdRef nor mdWrap child.");
            }
        }
    } catch (JDOMException je) {
        throw new MetadataValidationException("Error parsing or validating metadata section in mdRef or binData within " + mdSec.toString(), je);
    }
}
Example 68
Project: elastic-compass-master  File: StAXBuilder.java View source code
/**
     * This takes a <code>XMLStreamReader</code> and builds up
     * a JDOM tree. Recursion has been eliminated by using nodes'
     * parent/child relationship; this improves performance somewhat
     * (classic recursion-by-iteration-and-explicit stack transformation)
     *
     * @param f    Node factory to use for creating JDOM nodes
     * @param r    Stream reader to use for reading the document from which
     *             to build the tree
     * @param doc  JDOM <code>Document</code> being built.
     * @param tmod Text modifier to use for modifying content of text
     *             nodes (CHARACTERS, not CDATA), if any; null if no modifications
     *             are needed (modifier is usually used for trimming unnecessary
     *             but non-ignorable white space).
     */
protected void buildTree(JDOMFactory f, XMLStreamReader r, Document doc, StAXTextModifier tmod) throws XMLStreamException {
    // At top level
    Element current = null;
    /* Only relevant when trying to trim indentation. But if so, let's
         * just always allow modifications in prolog/epilog.
         */
    boolean allowTextMods = (tmod != null);
    int evtType = XMLStreamConstants.START_DOCUMENT;
    main_loop: while (true) {
        int prevEvent = evtType;
        evtType = r.next();
        /* 11-Dec-2004, TSa: We may want to trim (indentation) white
             *    space... and it's easiest to do as a completely separate
             *    piece of logic, before the main switch.
             */
        if (allowTextMods) {
            // Ok; did we get CHARACTERS to potentially modify?
            if (evtType == XMLStreamConstants.CHARACTERS) {
                // Mayhaps we could be interested in modifying it?
                if (tmod.possiblyModifyText(r, prevEvent)) {
                    /* Need to get text before iterating to see the
                         * following event (as that'll lose it)
                         */
                    String txt = r.getText();
                    evtType = r.next();
                    // So how should the text be modified if at all?
                    txt = tmod.textToIncludeBetween(r, prevEvent, evtType, txt);
                    // Need to output if it's non-empty text, then:
                    if (txt != null && txt.length() > 0) {
                        /* See discussion below for CHARACTERS case; basically
                             * we apparently can't add anything in epilog/prolog,
                             * not even white space.
                             */
                        if (current != null) {
                            f.addContent(current, f.text(txt));
                        }
                    }
                    prevEvent = XMLStreamConstants.CHARACTERS;
                // Ok, let's fall down to handle new current event
                }
            }
        // And then can just fall back to the regular handling
        }
        Content child;
        switch(evtType) {
            case XMLStreamConstants.CDATA:
                child = f.cdata(r.getText());
                break;
            case XMLStreamConstants.SPACE:
                if (cfgIgnoreWS) {
                    continue main_loop;
                }
            case XMLStreamConstants.CHARACTERS:
                /* Small complication: although (ignorable) white space
                    * is allowed in prolog/epilog, and StAX may report such
                    * event, JDOM barfs if trying to add it. Thus, let's just
                    * ignore all textual stuff outside the tree:
                    */
                if (current == null) {
                    continue main_loop;
                }
                child = f.text(r.getText());
                break;
            case XMLStreamConstants.COMMENT:
                child = f.comment(r.getText());
                break;
            case XMLStreamConstants.END_DOCUMENT:
                break main_loop;
            case XMLStreamConstants.END_ELEMENT:
                current = current.getParentElement();
                if (tmod != null) {
                    allowTextMods = tmod.allowModificationsAfter(r, evtType);
                }
                continue main_loop;
            case XMLStreamConstants.ENTITY_DECLARATION:
            case XMLStreamConstants.NOTATION_DECLARATION:
                /* Shouldn't really get these, but maybe some stream readers
                    * do provide the info. If so, better ignore it -- DTD event
                    * should have most/all we need.
                    */
                continue main_loop;
            case XMLStreamConstants.ENTITY_REFERENCE:
                child = f.entityRef(r.getLocalName());
                break;
            case XMLStreamConstants.PROCESSING_INSTRUCTION:
                child = f.processingInstruction(r.getPITarget(), r.getPIData());
                break;
            case XMLStreamConstants.START_ELEMENT:
                // Ok, need to add a new element...
                {
                    Element newElem = null;
                    String nsURI = r.getNamespaceURI();
                    // needed for special handling of elem's namespace
                    String elemPrefix = r.getPrefix();
                    String ln = r.getLocalName();
                    if (nsURI == null || nsURI.length() == 0) {
                        if (elemPrefix == null || elemPrefix.length() == 0) {
                            newElem = f.element(ln);
                        } else {
                            /* Happens when a prefix is bound to the default
                             * (empty) namespace...
                             */
                            newElem = f.element(ln, elemPrefix, "");
                        }
                    } else {
                        newElem = f.element(ln, elemPrefix, nsURI);
                    }
                    /* Let's add element right away (probably have to do
                     * it to bind attribute namespaces, too)
                     */
                    if (current == null) {
                        // at root
                        doc.setRootElement(newElem);
                    } else {
                        f.addContent(current, newElem);
                    }
                    // Any declared namespaces?
                    for (int i = 0, len = r.getNamespaceCount(); i < len; ++i) {
                        String prefix = r.getNamespacePrefix(i);
                        if (prefix == null) {
                            prefix = "";
                        }
                        Namespace ns = Namespace.getNamespace(prefix, r.getNamespaceURI(i));
                        // JDOM has special handling for element's "own" ns:
                        if (prefix.equals(elemPrefix)) {
                            // already set by when it was constructed...
                            ;
                        } else {
                            f.addNamespaceDeclaration(newElem, ns);
                        }
                    }
                    // And then the attributes:
                    for (int i = 0, len = r.getAttributeCount(); i < len; ++i) {
                        String prefix = r.getAttributePrefix(i);
                        Namespace ns;
                        if (prefix == null || prefix.length() == 0) {
                            // Attribute not in any namespace
                            ns = Namespace.NO_NAMESPACE;
                        } else {
                            ns = newElem.getNamespace(prefix);
                        }
                        Attribute attr = f.attribute(r.getAttributeLocalName(i), r.getAttributeValue(i), resolveAttrType(r.getAttributeType(i)), ns);
                        f.setAttribute(newElem, attr);
                    }
                    // And then 'push' new element...
                    current = newElem;
                }
                if (tmod != null) {
                    allowTextMods = tmod.allowModificationsAfter(r, evtType);
                }
                // Already added the element, can continue
                continue main_loop;
            case XMLStreamConstants.START_DOCUMENT:
                /* For now, let it pass: maybe some (broken) readers pass
                    * that info as first event in beginning of doc?
                    */
                continue main_loop;
            case XMLStreamConstants.DTD:
                // TBI
                continue main_loop;
            //case XMLStreamConstants.NAMESPACE:
            default:
                throw new XMLStreamException("Unrecognized iterator event type: " + r.getEventType() + "; should not receive such types (broken stream reader?)");
        }
        if (child != null) {
            if (current == null) {
                f.addContent(doc, child);
            } else {
                f.addContent(current, child);
            }
        }
    }
}
Example 69
Project: vtechworks-master  File: METSManifest.java View source code
/**
     * Return contents of *md element as List of XML Element objects.
     * Gets content, dereferencing mdRef if necessary, or decoding and parsing
     * a binData that contains XML.
     * @return contents of metadata section, or empty list if no XML content is available.
     * @throws MetadataValidationException if METS is invalid, or there is an error parsing the XML.
     */
public List<Element> getMdContentAsXml(Element mdSec, Mdref callback) throws MetadataValidationException, PackageValidationException, IOException, SQLException, AuthorizeException {
    try {
        // XXX sanity check: if this has more than one child, consider it
        // an error since we cannot deal with more than one mdRef|mdWrap
        // child.  This may be considered a bug and need to be fixed,
        // so it's best to bring it to the attention of users.
        List mdc = mdSec.getChildren();
        if (mdc.size() > 1) {
            // XXX scaffolding for debugging diagnosis; at least one
            //  XML parser stupidly includes newlines in prettyprinting
            //  as text content objects..
            String id = mdSec.getAttributeValue("ID");
            StringBuffer sb = new StringBuffer();
            for (Iterator mi = mdc.iterator(); mi.hasNext(); ) {
                sb.append(", ").append(((Content) mi.next()).toString());
            }
            throw new MetadataValidationException("Cannot parse METS with " + mdSec.getQualifiedName() + " element that contains more than one child, size=" + String.valueOf(mdc.size()) + ", ID=" + id + "Kids=" + sb.toString());
        }
        Element mdRef = null;
        Element mdWrap = mdSec.getChild("mdWrap", metsNS);
        if (mdWrap != null) {
            Element xmlData = mdWrap.getChild("xmlData", metsNS);
            if (xmlData == null) {
                Element bin = mdWrap.getChild("binData", metsNS);
                if (bin == null) {
                    throw new MetadataValidationException("Invalid METS Manifest: mdWrap element with neither xmlData nor binData child.");
                } else // if binData is actually XML, return it; otherwise ignore.
                {
                    String mimeType = mdWrap.getAttributeValue("MIMETYPE");
                    if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                        byte value[] = Base64.decodeBase64(bin.getText().getBytes());
                        Document mdd = parser.build(new ByteArrayInputStream(value));
                        List<Element> result = new ArrayList<Element>(1);
                        result.add(mdd.getRootElement());
                        return result;
                    } else {
                        log.warn("Ignoring binData section because MIMETYPE is not XML, but: " + mimeType);
                        return new ArrayList<Element>(0);
                    }
                }
            } else {
                return xmlData.getChildren();
            }
        } else {
            mdRef = mdSec.getChild("mdRef", metsNS);
            if (mdRef != null) {
                String mimeType = mdRef.getAttributeValue("MIMETYPE");
                if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                    Document mdd = parser.build(callback.getInputStream(mdRef));
                    List<Element> result = new ArrayList<Element>(1);
                    result.add(mdd.getRootElement());
                    return result;
                } else {
                    log.warn("Ignoring mdRef section because MIMETYPE is not XML, but: " + mimeType);
                    return new ArrayList<Element>(0);
                }
            } else {
                throw new MetadataValidationException("Invalid METS Manifest: ?mdSec element with neither mdRef nor mdWrap child.");
            }
        }
    } catch (JDOMException je) {
        throw new MetadataValidationException("Error parsing or validating metadata section in mdRef or binData within " + mdSec.toString(), je);
    }
}
Example 70
Project: modello-master  File: JDOMWriterGenerator.java View source code
private void generateJDOMWriter() throws ModelloException, IOException {
    Model objectModel = getModel();
    String packageName = objectModel.getDefaultPackageName(isPackageWithVersion(), getGeneratedVersion()) + ".io.jdom";
    String marshallerName = getFileName("JDOMWriter");
    JSourceWriter sourceWriter = newJSourceWriter(packageName, marshallerName);
    JClass jClass = new JClass(packageName + '.' + marshallerName);
    initHeader(jClass);
    suppressAllWarnings(objectModel, jClass);
    // -------------------------------------------------------------
    // imports now
    // -------------------------------------------------------------
    jClass.addImport("java.io.OutputStream");
    jClass.addImport("java.io.OutputStreamWriter");
    jClass.addImport("java.io.Writer");
    jClass.addImport("java.text.DateFormat");
    jClass.addImport("java.util.ArrayList");
    jClass.addImport("java.util.Collection");
    jClass.addImport("java.util.Iterator");
    jClass.addImport("java.util.List");
    jClass.addImport("java.util.ListIterator");
    jClass.addImport("java.util.Locale");
    jClass.addImport("java.util.Map");
    jClass.addImport("java.util.Properties");
    jClass.addImport("org.jdom.Content");
    jClass.addImport("org.jdom.DefaultJDOMFactory");
    jClass.addImport("org.jdom.Document");
    jClass.addImport("org.jdom.Element");
    jClass.addImport("org.jdom.Text");
    jClass.addImport("org.jdom.output.Format");
    jClass.addImport("org.jdom.output.XMLOutputter");
    addModelImports(jClass, null);
    jClass.addField(new JField(new JClass("DefaultJDOMFactory"), "factory"));
    jClass.addField(new JField(new JClass("String"), "lineSeparator"));
    createCounter(jClass);
    // constructor --
    JConstructor constructor = jClass.createConstructor();
    JSourceCode constCode = constructor.getSourceCode();
    constCode.add("factory = new DefaultJDOMFactory();");
    constCode.add("lineSeparator = \"\\n\";");
    String root = objectModel.getRoot(getGeneratedVersion());
    ModelClass rootClass = objectModel.getClass(root, getGeneratedVersion());
    String rootElement = resolveTagName(rootClass);
    // the public global write method..
    jClass.addMethod(generateWriteModel(root, rootElement));
    jClass.addMethod(generateWriteModel2(root, rootElement));
    jClass.addMethod(generateWriteModel3(root, rootElement));
    // the private utility classes;
    jClass.addMethods(generateUtilityMethods());
    writeAllClasses(objectModel, jClass, rootClass);
    if (requiresDomSupport) {
        jClass.addImport("org.codehaus.plexus.util.xml.Xpp3Dom");
        jClass.addMethods(generateDomMethods());
    }
    jClass.print(sourceWriter);
    sourceWriter.close();
}
Example 71
Project: MPS-master  File: XmlConverter.java View source code
private static SNode convertElement(Element elem) {
    SNode result = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, "jetbrains.mps.core.xml.structure.XmlElement"));
    String namespacePrefix = elem.getNamespacePrefix();
    SPropertyOperations.set(result, MetaAdapterFactory.getProperty(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, 0x5c842a42c54b10b6L, "tagName"), ((namespacePrefix == null || namespacePrefix.length() == 0) ? elem.getName() : namespacePrefix + ":" + elem.getName()));
    for (Attribute a : ListSequence.fromList((List<Attribute>) elem.getAttributes())) {
        ListSequence.fromList(SLinkOperations.getChildren(result, MetaAdapterFactory.getContainmentLink(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, 0x5c842a42c54b10b5L, "attributes"))).addElement(convertAttribute(a));
    }
    List<Namespace> additionalNamespaces = (List<Namespace>) elem.getAdditionalNamespaces();
    for (Namespace ns : ListSequence.fromList(additionalNamespaces)) {
        ListSequence.fromList(SLinkOperations.getChildren(result, MetaAdapterFactory.getContainmentLink(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, 0x5c842a42c54b10b5L, "attributes"))).addElement(createXmlAttribute_h7fa2c_a0a0a5a3("xmlns:" + ns.getPrefix(), convertAttributeText(ns.getURI())));
    }
    List<Content> list = (List<Content>) elem.getContent();
    Content[] contents = ListSequence.fromList(list).toGenericArray(Content.class);
    for (int i = 0; i < contents.length; i++) {
        Iterable<SNode> content = convertContent((i > 0 ? contents[i - 1] : null), contents[i], (i + 1 < contents.length ? contents[i + 1] : null));
        if (content != null) {
            ListSequence.fromList(SLinkOperations.getChildren(result, MetaAdapterFactory.getContainmentLink(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, 0x16838b3fce9a4922L, "content"))).addSequence(Sequence.fromIterable(content));
        }
    }
    SPropertyOperations.set(result, MetaAdapterFactory.getProperty(0x479c7a8c02f943b5L, 0x9139d910cb22f298L, 0x5c842a42c54b10b2L, 0x61218fae7b61b5d5L, "shortEmptyNotation"), "" + (elem.getContentSize() == 0));
    return result;
}
Example 72
Project: DSpace-master  File: METSManifest.java View source code
/**
     * Return contents of *md element as List of XML Element objects.
     * Gets content, dereferencing mdRef if necessary, or decoding and parsing
     * a binData that contains XML.
     * @param mdSec mdSec element
     * @param callback mdref callback
     * @return contents of metadata section, or empty list if no XML content is available.
     * @throws MetadataValidationException if METS is invalid, or there is an error parsing the XML.
     * @throws PackageValidationException if invalid package
     * @throws IOException if IO error
     * @throws SQLException if database error
     * @throws AuthorizeException if authorization error
     */
public List<Element> getMdContentAsXml(Element mdSec, Mdref callback) throws MetadataValidationException, PackageValidationException, IOException, SQLException, AuthorizeException {
    try {
        // XXX sanity check: if this has more than one child, consider it
        // an error since we cannot deal with more than one mdRef|mdWrap
        // child.  This may be considered a bug and need to be fixed,
        // so it's best to bring it to the attention of users.
        List mdc = mdSec.getChildren();
        if (mdc.size() > 1) {
            // XXX scaffolding for debugging diagnosis; at least one
            //  XML parser stupidly includes newlines in prettyprinting
            //  as text content objects..
            String id = mdSec.getAttributeValue("ID");
            StringBuffer sb = new StringBuffer();
            for (Iterator mi = mdc.iterator(); mi.hasNext(); ) {
                sb.append(", ").append(((Content) mi.next()).toString());
            }
            throw new MetadataValidationException("Cannot parse METS with " + mdSec.getQualifiedName() + " element that contains more than one child, size=" + String.valueOf(mdc.size()) + ", ID=" + id + "Kids=" + sb.toString());
        }
        Element mdRef = null;
        Element mdWrap = mdSec.getChild("mdWrap", metsNS);
        if (mdWrap != null) {
            Element xmlData = mdWrap.getChild("xmlData", metsNS);
            if (xmlData == null) {
                Element bin = mdWrap.getChild("binData", metsNS);
                if (bin == null) {
                    throw new MetadataValidationException("Invalid METS Manifest: mdWrap element with neither xmlData nor binData child.");
                } else // if binData is actually XML, return it; otherwise ignore.
                {
                    String mimeType = mdWrap.getAttributeValue("MIMETYPE");
                    if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                        byte value[] = Base64.decodeBase64(bin.getText().getBytes());
                        Document mdd = parser.build(new ByteArrayInputStream(value));
                        List<Element> result = new ArrayList<Element>(1);
                        result.add(mdd.getRootElement());
                        return result;
                    } else {
                        log.warn("Ignoring binData section because MIMETYPE is not XML, but: " + mimeType);
                        return new ArrayList<Element>(0);
                    }
                }
            } else {
                return xmlData.getChildren();
            }
        } else {
            mdRef = mdSec.getChild("mdRef", metsNS);
            if (mdRef != null) {
                String mimeType = mdRef.getAttributeValue("MIMETYPE");
                if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) {
                    Document mdd = parser.build(callback.getInputStream(mdRef));
                    List<Element> result = new ArrayList<Element>(1);
                    result.add(mdd.getRootElement());
                    return result;
                } else {
                    log.warn("Ignoring mdRef section because MIMETYPE is not XML, but: " + mimeType);
                    return new ArrayList<Element>(0);
                }
            } else {
                throw new MetadataValidationException("Invalid METS Manifest: ?mdSec element with neither mdRef nor mdWrap child.");
            }
        }
    } catch (JDOMException je) {
        throw new MetadataValidationException("Error parsing or validating metadata section in mdRef or binData within " + mdSec.toString(), je);
    }
}
Example 73
Project: felix-master  File: MavenJDOMWriter.java View source code
// -- void updateDistributionManagement(DistributionManagement, String, Counter, Element)
/**
     * Method updateElement
     *
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if (element != null && shouldExist) {
        counter.increaseCount();
    }
    if (element == null && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && element != null) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 74
Project: Maven-Archetype-master  File: MavenJDOMWriter.java View source code
// -- void updateDistributionManagement(DistributionManagement, String, Counter, Element)
/**
     * Method updateElement.
     *
     * @param counter
     * @param shouldExist
     * @param name
     * @param parent
     */
protected Element updateElement(Counter counter, Element parent, String name, boolean shouldExist) {
    Element element = parent.getChild(name, parent.getNamespace());
    if ((element != null) && shouldExist) {
        counter.increaseCount();
    }
    if ((element == null) && shouldExist) {
        element = factory.element(name, parent.getNamespace());
        insertAtPreferredLocation(parent, element, counter);
        counter.increaseCount();
    }
    if (!shouldExist && (element != null)) {
        int index = parent.indexOf(element);
        if (index > 0) {
            Content previous = parent.getContent(index - 1);
            if (previous instanceof Text) {
                Text txt = (Text) previous;
                if (txt.getTextTrim().length() == 0) {
                    parent.removeContent(txt);
                }
            }
        }
        parent.removeContent(element);
    }
    return element;
}
Example 75
Project: com.idega.content-master  File: ThemeChangerBean.java View source code
private Collection<Element> getExpandRegion() {
    Collection<Element> c = new ArrayList<Element>();
    //	Region
    Element region = new Element("div");
    String regionName = "idegaThemeExpandRegion";
    region.setAttribute("id", regionName);
    Collection<Content> regionContent = new ArrayList<Content>();
    regionContent.addAll(getCommentsCollection(regionName));
    //	Expander
    Element expander = new Element("div");
    expander.setText("idegaTheme");
    expander.setAttribute("style", new StringBuffer("height:").append(THEME_HEIGHT).append("px;visibility:hidden").toString());
    regionContent.add(expander);
    region.addContent(regionContent);
    c.add(region);
    return c;
}
Example 76
Project: integrity-master  File: XmlWriterTestCallback.java View source code
/**
	 * Parses a comment into a list of {@link Content} elements. This takes care of URLs embedded in the comment.
	 * 
	 * @param aCommment
	 *            the a commment
	 * @return the list
	 */
protected List<Content> parseComment(String aCommment) {
    List<Content> tempList = new ArrayList<Content>();
    tempList.add(new Text(aCommment));
    outer: while (true) {
        int i;
        for (i = 0; i < tempList.size(); i++) {
            Content tempElement = tempList.get(i);
            if (tempElement instanceof Text) {
                List<Content> tempInnerList = detectMarkdownURLs(((Text) tempElement).getText());
                if (tempInnerList.size() > 1) {
                    tempList.remove(i);
                    tempList.addAll(i, tempInnerList);
                    break;
                }
                tempInnerList = detectSimpleURLs(((Text) tempElement).getText());
                if (tempInnerList.size() > 1 || (tempInnerList.size() == 1 && !(tempInnerList.get(0) instanceof Text))) {
                    tempList.remove(i);
                    tempList.addAll(i, tempInnerList);
                    break;
                }
            }
        }
        if (i >= tempList.size()) {
            break outer;
        }
    }
    return tempList;
}
Example 77
Project: Zettelkasten-master  File: DesktopData.java View source code
/**
     * This method retrieves the element of a modified entry. the modified
     * entries' content is stored in a separated XML-Document (see
     * {@link #modifiedEntries modifiedEntries}. each element of this document
     * has a timestamp-attribute that equals the timestamp-attribute of an entry
     * in the {@link #desktop desktop}-Document.
     * <br><br>
     * So, by passing a {@code timestamp} value, this method searches whether we
     * have any modified entry that has the same timestamp-attribut, and if so,
     * it returns that element which was modified (and thus differs from an
     * entry's content as it is stored in the original database).
     *
     * @param timestamp the timestamp which should match the requested entry's
     * timestamp-attribute
     * @return the modified entry as element, or {@code null} if no entry was
     * found.
     */
private Element retrieveModifiedEntryElementFromTimestamp(String timestamp) {
    // retrieve all elements
    List<Content> elementList = modifiedEntries.getRootElement().getContent();
    // when we have any content, go on...
    if (elementList.size() > 0) {
        for (Content elementList1 : elementList) {
            // retrieve each single element
            Element e = (Element) elementList1;
            // retrieve timestamp-attribute
            String att = e.getAttributeValue(ATTR_TIMESTAMP);
            // compare timestamp-attribute-value to timestamp-parameter
            if (att != null && att.equals(timestamp)) {
                // if they match, return that element
                return e;
            }
        }
    }
    // else return null
    return null;
}
Example 78
Project: geoserver-manager-master  File: XmlElement.java View source code
protected void add(final String nodename, final Content nodetext) {
    final Element el = new Element(nodename);
    el.setContent(nodetext);
    this.addContent(el);
}
Example 79
Project: gocd-master  File: GoControlLog.java View source code
public void addContent(Content newContent) {
    buildLog.addContent(newContent);
}
Example 80
Project: cruisecontrol-master  File: Log.java View source code
@SkipDoc
public void addContent(final Content newContent) {
    buildLog.addContent(newContent);
}