Skip to content

Commit

Permalink
Merge pull request #267 from kbss-cvut/development
Browse files Browse the repository at this point in the history
[3.1.0] Release
  • Loading branch information
ledsoft authored Jul 8, 2024
2 parents 6be4c40 + 687f740 commit f95660a
Show file tree
Hide file tree
Showing 55 changed files with 1,158 additions and 369 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/push-to-protected.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ catalog-v001.xml
**/bundle.js
**/generated-sources
**/java-generated
**/npm-debug.log
termit-doc.md
58 changes: 25 additions & 33 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<version>3.2.5</version>
</parent>

<artifactId>termit</artifactId>
<version>3.0.4</version>
<version>3.1.0</version>
<name>TermIt</name>
<description>Terminology manager based on Semantic Web technologies.</description>
<packaging>${packaging}</packaging>
Expand All @@ -20,39 +20,19 @@
<repository>
<id>kbss</id>
<url>https://kbss.felk.cvut.cz/m2repo</url>
</repository>
<repository>
<id>central-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

<properties>
<java.version>17</java.version>
<org.apache.tika.tika-core.version>2.7.0</org.apache.tika.tika-core.version>
<org.mapstruct.version>1.5.5.Final</org.mapstruct.version>
<org.springdoc.version>2.2.0</org.springdoc.version>
<cz.cvut.kbss.jopa.version>2.0.0-SNAPSHOT</cz.cvut.kbss.jopa.version>
<cz.cvut.kbss.jsonld.version>0.14.2</cz.cvut.kbss.jsonld.version>
<org.aspectj.version>1.9.20</org.aspectj.version>
<cz.cvut.kbss.jopa.version>2.0.0</cz.cvut.kbss.jopa.version>
<cz.cvut.kbss.jsonld.version>0.14.3</cz.cvut.kbss.jsonld.version>

<!-- Default value for deployment type property which should otherwise specified on command line -->
<deployment>DEV</deployment>
Expand Down Expand Up @@ -132,14 +112,14 @@
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-rio-rdfxml</artifactId>
<version>4.3.8</version>
<version>4.3.11</version>
</dependency>

<!-- Spring declarative transactions with JOPA -->
<dependency>
<groupId>com.github.ledsoft</groupId>
<artifactId>jopa-spring-transaction</artifactId>
<version>0.3.0-SNAPSHOT</version>
<version>0.3.0</version>
</dependency>

<!-- Spring -->
Expand Down Expand Up @@ -177,11 +157,19 @@
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>

<!-- JWT support for Java -->
<dependency>
Expand Down Expand Up @@ -427,7 +415,18 @@
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>cz.lukaskabc.cvut.processor</groupId>
<artifactId>spring-boot-configuration-docgen-processor</artifactId>
<version>1.0</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Aconfigurationdoc.output_file=termit-doc.md</arg>
<arg>-Aconfigurationdoc.format=MD</arg>
<arg>-Aconfigurationdoc.configuration_package=cz.cvut.kbss.termit</arg>
<arg>-Aconfigurationdoc.prepend_required=true</arg>
</compilerArgs>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
Expand All @@ -448,13 +447,6 @@
</aspectLibraries>
<parameters>true</parameters>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>main</id>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class ChangeTrackingAspect {
@Autowired
private ChangeTrackingHelperDao helperDao;

@Pointcut(value = "execution(public void persist(..)) && target(cz.cvut.kbss.termit.persistence.dao.GenericDao) " +
@Pointcut(value = "execution(public void persist(..)) && (target(cz.cvut.kbss.termit.persistence.dao.BaseAssetDao)) " +
"&& @args(cz.cvut.kbss.termit.model.changetracking.Audited)")
public void persistOperation() {
}
Expand All @@ -56,7 +56,7 @@ public void persistOperation() {
public void persistTermOperation() {
}

@Pointcut(value = "execution(public * update(..)) && target(cz.cvut.kbss.termit.persistence.dao.GenericDao) " +
@Pointcut(value = "execution(public * update(..)) && target(cz.cvut.kbss.termit.persistence.dao.BaseAssetDao) " +
"&& @args(cz.cvut.kbss.termit.model.changetracking.Audited)")
public void updateOperation() {
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/cz/cvut/kbss/termit/config/AppConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.context.annotation.aspectj.EnableSpringConfigured;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
Expand All @@ -33,6 +34,7 @@
@EnableSpringConfigured
@EnableAsync
@EnableScheduling
@EnableRetry
public class AppConfig implements AsyncConfigurer {

@Override
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/cz/cvut/kbss/termit/config/WebAppConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,13 @@
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import cz.cvut.kbss.jopa.model.MultilingualString;
import cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl;
import cz.cvut.kbss.jsonld.JsonLd;
import cz.cvut.kbss.jsonld.jackson.JsonLdModule;
import cz.cvut.kbss.jsonld.jackson.serialization.SerializationConstants;
import cz.cvut.kbss.termit.rest.servlet.DiagnosticsContextFilter;
import cz.cvut.kbss.termit.util.AdjustedUriTemplateProxyServlet;
import cz.cvut.kbss.termit.util.ConfigParam;
import cz.cvut.kbss.termit.util.Constants;
import cz.cvut.kbss.termit.util.json.ManageableIgnoreMixin;
import cz.cvut.kbss.termit.util.json.MultilingualStringDeserializer;
import cz.cvut.kbss.termit.util.json.MultilingualStringSerializer;
import io.swagger.v3.oas.models.Components;
Expand Down Expand Up @@ -94,8 +92,6 @@ public static ObjectMapper createJsonObjectMapper() {
multilingualStringModule.addSerializer(MultilingualString.class, new MultilingualStringSerializer());
multilingualStringModule.addDeserializer(MultilingualString.class, new MultilingualStringDeserializer());
objectMapper.registerModule(multilingualStringModule);
// Ignore UoW references injected into entities
objectMapper.addMixIn(UnitOfWorkImpl.class, ManageableIgnoreMixin.class);
// JSR 310 (Java 8 DateTime API)
objectMapper.registerModule(new JavaTimeModule());
// Serialize datetime as ISO strings
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/cz/cvut/kbss/termit/dto/listing/TermDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
* Contains fewer data than a regular {@link cz.cvut.kbss.termit.model.Term}.
*/
@OWLClass(iri = SKOS.CONCEPT)
@JsonLdAttributeOrder({"uri", "label", "subTerms"})
@JsonLdAttributeOrder({"uri", "label", "parentTerms", "subTerms"})
@JsonIgnoreProperties({"definition", "persistenceContext"})
public class TermDto extends AbstractTerm {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
/**
* Indicates a failure during document annotation generation.
*/
public class AnnotationGenerationException extends TermItException {
public class AnnotationGenerationException extends FileContentProcessingException {

public AnnotationGenerationException(String message) {
super(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package cz.cvut.kbss.termit.exception;

/**
* Indicates an error when processing file content.
*/
public class FileContentProcessingException extends TermItException {

public FileContentProcessingException(String message) {
super(message);
}

public FileContentProcessingException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
import cz.cvut.kbss.termit.model.Asset;
import cz.cvut.kbss.termit.model.selector.Selector;
import cz.cvut.kbss.termit.util.Vocabulary;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

import java.net.URI;
import java.util.Objects;
Expand All @@ -32,10 +34,12 @@
@OWLClass(iri = Vocabulary.s_c_cil_vyskytu)
public abstract class OccurrenceTarget extends AbstractEntity {

@NotNull
@ParticipationConstraints(nonEmpty = true)
@OWLObjectProperty(iri = Vocabulary.s_p_ma_zdroj)
private URI source;

@NotEmpty
@ParticipationConstraints(nonEmpty = true)
@OWLObjectProperty(iri = Vocabulary.s_p_ma_selektor, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Selector> selectors;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,18 @@
package cz.cvut.kbss.termit.model.assignment;

import com.fasterxml.jackson.annotation.JsonTypeInfo;
import cz.cvut.kbss.jopa.model.annotations.*;
import cz.cvut.kbss.jopa.model.annotations.CascadeType;
import cz.cvut.kbss.jopa.model.annotations.FetchType;
import cz.cvut.kbss.jopa.model.annotations.OWLClass;
import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty;
import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty;
import cz.cvut.kbss.jopa.model.annotations.ParticipationConstraints;
import cz.cvut.kbss.jopa.model.annotations.Types;
import cz.cvut.kbss.jopa.vocabulary.DC;
import cz.cvut.kbss.termit.model.AbstractEntity;
import cz.cvut.kbss.termit.model.util.HasTypes;
import cz.cvut.kbss.termit.util.Vocabulary;
import jakarta.validation.constraints.NotNull;

import java.net.URI;
import java.util.Objects;
Expand All @@ -37,10 +44,12 @@ public abstract class TermOccurrence extends AbstractEntity implements HasTypes
*/
public static final String CONTEXT_SUFFIX = "occurrences";

@NotNull
@ParticipationConstraints(nonEmpty = true)
@OWLObjectProperty(iri = Vocabulary.s_p_je_prirazenim_termu)
private URI term;

@NotNull
@ParticipationConstraints(nonEmpty = true)
@OWLObjectProperty(iri = Vocabulary.s_p_ma_cil, cascade = {CascadeType.MERGE}, fetch = FetchType.EAGER)
OccurrenceTarget target;
Expand Down Expand Up @@ -110,6 +119,35 @@ public void setScore(Double score) {
this.score = score;
}

/**
* Marks this term occurrence as suggested by automation.
* <p>
* Corresponds to classifying with {@link Vocabulary#s_c_navrzeny_vyskyt_termu}.
*/
public void markSuggested() {
addType(Vocabulary.s_c_navrzeny_vyskyt_termu);
}

/**
* Marks this term occurrence as approved.
* <p>
* Corresponds to removing the {@link Vocabulary#s_c_navrzeny_vyskyt_termu} type.
*/
public void markApproved() {
removeType(Vocabulary.s_c_navrzeny_vyskyt_termu);
}

/**
* Checks whether this term occurrence is marked as suggested by automation.
* <p>
* Suggested in this context means classified with {@link Vocabulary#s_c_navrzeny_vyskyt_termu}.
*
* @return {@code true} when this instance is marked as suggested by automation
*/
public boolean isSuggested() {
return hasType(Vocabulary.s_c_navrzeny_vyskyt_termu);
}

@Override
public String toString() {
return "TermOccurrence{<" +
Expand All @@ -131,7 +169,8 @@ public URI resolveContext() {
}

/**
* Resolves identifier of the repository context in which term occurrences targeting the specified source should be stored.
* Resolves identifier of the repository context in which term occurrences targeting the specified source should be
* stored.
* <p>
* The context is based on the specified source and {@link #CONTEXT_SUFFIX}.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ public TextQuoteSelector(@NotBlank String exactMatch) {
this.exactMatch = exactMatch;
}

public TextQuoteSelector(@NotBlank String exactMatch, String prefix, String suffix) {
this.exactMatch = exactMatch;
this.prefix = prefix;
this.suffix = suffix;
}

public String getExactMatch() {
return exactMatch;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ public Optional<T> getReference(URI id) {
}
}

@Override
public void detach(T entity) {
Objects.requireNonNull(entity);
em.detach(entity);
}

@ModifiesData
@Override
public void persist(T entity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ public interface GenericDao<T extends HasIdentifier> {
*/
Optional<T> getReference(URI id);

/**
* Detaches the specified entity from the current persistence context.
* <p>
* Does nothing if the specified entity is not managed.
*
* @param entity Entity to detach
*/
void detach(T entity);

/**
* Persists the specified entity.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,6 @@ private void postLoad(Term r) {
r.setInverseExactMatchTerms(loadInverseExactMatchTerms(r));
}

public void detach(Term term) {
Objects.requireNonNull(term);
em.detach(term);
}

/**
* Loads terms whose relatedness to the specified term is inferred due to the symmetry of SKOS related.
*
Expand Down
Loading

0 comments on commit f95660a

Please sign in to comment.