Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'
cache: maven

Expand Down Expand Up @@ -48,7 +48,7 @@ jobs:
file: target/release/**/*.*
file_glob: true
overwrite: true
body: "Support of **ODF 1.2** and >=**JDK 17**\n
body: "Support of **ODF 1.2** and >=**JDK 21**\n
\n
Detailed documentation:\n
https://tdf.github.io/odftoolkit/ReleaseNotes.html#release-${{ env.release_version }}\n
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build with Maven
Expand Down Expand Up @@ -43,10 +43,10 @@ jobs:
with:
# shallow clones should be disabled for a better relevancy of the analysis
fetch-depth: 0
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Cache SonarQube packages
Expand Down
4 changes: 2 additions & 2 deletions .project
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
</natures>
<filteredResources>
<filter>
<id>1659282302444</id>
<id>1790677806650</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ People interested should follow the [mail list](https://tdf.github.io/odftoolkit

## Getting Started

The ODF Toolkit is based on Java (tested with JDK 11) and uses the Maven 3 <http://maven.apache.org/>
The current ODF Toolkit development version (0.14.0-SNAPSHOT) requires JDK 21 or later
to build and run, and uses Apache Jena 6.2.0. It uses the Maven 3 <http://maven.apache.org/>
build system. To build ODF Toolkit, use the following command in this directory:

mvn clean install
Expand Down
4 changes: 2 additions & 2 deletions generator/.project
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
</natures>
<filteredResources>
<filter>
<id>1659282302476</id>
<id>1790677806658</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
Expand Down
4 changes: 2 additions & 2 deletions generator/schema2template-maven-plugin/.project
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
</natures>
<filteredResources>
<filter>
<id>1659282302468</id>
<id>1790677806657</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
Expand Down
4 changes: 2 additions & 2 deletions generator/schema2template/.project
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
</natures>
<filteredResources>
<filter>
<id>1659282302459</id>
<id>1790677806655</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
Expand Down
4 changes: 2 additions & 2 deletions odfdom/.project
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
</natures>
<filteredResources>
<filter>
<id>1659282302431</id>
<id>1790677806648</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
Expand Down
8 changes: 4 additions & 4 deletions odfdom/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=21
8 changes: 2 additions & 6 deletions odfdom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,8 @@
<artifactId>jena-core</artifactId>
</dependency>
<dependency>
<groupId>net.rootdev</groupId>
<artifactId>java-rdfa</artifactId>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<groupId>org.apache.jena</groupId>
<artifactId>jena-arq</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
Expand Down
3 changes: 1 addition & 2 deletions odfdom/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,11 @@

requires java.desktop;
requires java.logging;
requires java.rdfa;
requires java.xml;
requires org.apache.commons.validator;
requires org.apache.commons.compress;
requires org.apache.commons.lang3;
requires org.apache.jena.core;
requires org.apache.jena.arq;
requires org.bouncycastle.provider;
requires org.json;
requires org.slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,28 +24,18 @@
package org.odftoolkit.odfdom.dom.rdfa;

import java.util.HashMap;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Resource;
import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
import org.odftoolkit.odfdom.dom.element.text.TextBookmarkEndElement;
import org.odftoolkit.odfdom.dom.element.text.TextBookmarkStartElement;
import org.odftoolkit.odfdom.pkg.OdfElement;
import org.odftoolkit.odfdom.pkg.OdfFileDom;
import org.odftoolkit.odfdom.pkg.rdfa.DOMAttributes;
import org.odftoolkit.odfdom.pkg.rdfa.JenaSink;
import org.odftoolkit.odfdom.pkg.rdfa.InContentMetadata;
import org.w3c.dom.Node;
import org.xml.sax.Attributes;

/**
* This is a sub class of <code>DefaultElementVisitor</code>, which is used to extract metadata from
Expand All @@ -60,10 +50,6 @@ public class BookmarkRDFMetadataExtractor extends DefaultElementVisitor {
protected final Map<TextBookmarkStartElement, ExtractorStringBuilder> builderMap;
protected final Map<TextBookmarkStartElement, String> stringMap;

private XMLEventFactory eventFactory = XMLEventFactory.newInstance();

private JenaSink sink;

/**
* This class is used to provide the string builder functions to extractor. It will automatically
* process the last NewLineChar.
Expand Down Expand Up @@ -136,70 +122,30 @@ public static BookmarkRDFMetadataExtractor newBookmarkTextExtractor() {
public Model getBookmarkRDFMetadata(OdfFileDom dom) {
this.bookmarkstart = null;
this.found = false;
this.sink = dom.getSink();
visit(dom.getRootElement());
return getModel();
}

public Model getBookmarkRDFMetadata(TextBookmarkStartElement bookmarkstart) {
this.bookmarkstart = bookmarkstart;
this.found = false;
this.sink = ((OdfFileDom) bookmarkstart.getOwnerDocument()).getSink();
visit(((OdfFileDom) bookmarkstart.getOwnerDocument()).getRootElement());
return getModel();
}

/**
* Creates the statements of all collected bookmarks, using the text between each <code>
* &lt;text:bookmark-start&gt;</code> and its <code>&lt;text:bookmark-end&gt;</code> as literal
* content, see {@link InContentMetadata}.
*/
private Model getModel() {
Model m = ModelFactory.createDefaultModel();
for (Entry<TextBookmarkStartElement, String> entry : stringMap.entrySet()) {
String xhtmlAbout = entry.getKey().getXhtmlAboutAttribute();
String xhtmlProperty = entry.getKey().getXhtmlPropertyAttribute();
String xhtmlContent = entry.getKey().getXhtmlContentAttribute();
if (xhtmlAbout != null && xhtmlProperty != null) {
String qname = entry.getKey().getNodeName();
String namespaceURI = entry.getKey().getNamespaceURI();
String localname = entry.getKey().getLocalName();
String prefix = (qname.indexOf(':') == -1) ? "" : qname.substring(0, qname.indexOf(':'));

StartElement e =
eventFactory.createStartElement(
prefix,
namespaceURI,
localname,
fromAttributes(new DOMAttributes(entry.getKey().getAttributes())),
null,
sink.getContext());

xhtmlAbout = sink.getExtractor().expandSafeCURIE(e, xhtmlAbout, sink.getContext());
xhtmlProperty = sink.getExtractor().expandCURIE(e, xhtmlProperty, sink.getContext());
Resource s = m.createResource(xhtmlAbout);
Property p = m.createProperty(xhtmlProperty);
if (xhtmlContent != null) {
s.addLiteral(p, xhtmlContent);
} else {
s.addLiteral(p, entry.getValue());
}
}
InContentMetadata.addStatements(m, entry.getKey(), entry.getValue());
}
return m;
}

private Iterator<Attribute> fromAttributes(Attributes attributes) {
List<Attribute> toReturn = new ArrayList<>();

for (int i = 0; i < attributes.getLength(); i++) {
String qname = attributes.getQName(i);
String prefix = qname.contains(":") ? qname.substring(0, qname.indexOf(":")) : "";
Attribute attr =
eventFactory.createAttribute(
prefix, attributes.getURI(i), attributes.getLocalName(i), attributes.getValue(i));

if (!qname.equals("xmlns") && !qname.startsWith("xmlns:")) toReturn.add(attr);
}

return toReturn.iterator();
}

/**
* Constructor with an ODF element as parameter
*
Expand Down
Loading
Loading