dbmdz / cudami Goto Github PK
View Code? Open in Web Editor NEWcudami is a Digital Asset Management System for management and editing of cultural objects.
License: MIT License
cudami is a Digital Asset Management System for management and editing of cultural objects.
License: MIT License
Currently the default language is passed to a lot of components via prop. Since it's a de facto global variable that shouldn't be passed around to each and every component, putting it into a Context would help keeping the API surface of the components slimmer.
Installed Ubuntu 20.04 LTS server in VM to test cudami.
Java version openjdk-11.0.11
Maven version 3.6.3
Downloaded v5.0.1
Followed steps from readme
cd cudami-5.0.1
enter mvn clean install
get this
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 14 modules...
[INFO] Installing Nexus Staging features:
[INFO] ... total of 14 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] DigitalCollections: cudami [pom]
[INFO] DigitalCollections: cudami Repository Client [jar]
[INFO] DigitalCollections: cudami Management Webapp [jar]
[INFO] DigitalCollections: cudami Repository Server [pom]
[INFO] DigitalCollections: cudami Repository Server (Backend API) [jar]
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL File) [jar]
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL InMemory) [jar]
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL JDBI PostgreSql) [jar]
[INFO] DigitalCollections: cudami lobid.org Client [jar]
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL External System lobid.org) [jar]
[INFO] DigitalCollections: cudami Repository Server (Business) [jar]
[INFO] DigitalCollections: cudami Repository Server (Webapp) [jar]
[INFO] DigitalCollections: cudami Templates [pom]
[INFO] DigitalCollections: cudami Templates (Website Spring Boot) [jar]
[INFO]
[INFO] ---------------< de.digitalcollections.cudami:dc-cudami >---------------
[INFO] Building DigitalCollections: cudami 5.0.1 [1/14]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ dc-cudami ---
[INFO]
[INFO] --- githook-maven-plugin:1.0.5:install (default) @ dc-cudami ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for DigitalCollections: cudami 5.0.1:
[INFO]
[INFO] DigitalCollections: cudami ......................... FAILURE [ 0.263 s]
[INFO] DigitalCollections: cudami Repository Client ....... SKIPPED
[INFO] DigitalCollections: cudami Management Webapp ....... SKIPPED
[INFO] DigitalCollections: cudami Repository Server ....... SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Backend API) SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL File) SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL InMemory) SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL JDBI PostgreSql) SKIPPED
[INFO] DigitalCollections: cudami lobid.org Client ........ SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Backend IMPL External System lobid.org) SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Business) SKIPPED
[INFO] DigitalCollections: cudami Repository Server (Webapp) SKIPPED
[INFO] DigitalCollections: cudami Templates ............... SKIPPED
[INFO] DigitalCollections: cudami Templates (Website Spring Boot) SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.850 s
[INFO] Finished at: 2021-08-06T13:24:21Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.github.phillipuniverse:githook-maven-plugin:1.0.5:install (default) on project dc-cudami: Not a git repository, could not find a .git/hooks directory anywhere in the hierarchy of /home/andrac/cudami/target. Turn off this behavior with skipRepositoryCheck=false -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
There are no /target dir created
rafactor list of available languages from Locale.getAvailableLocales
to Locale.getISOLanguages
as it produces too many detailed languages...
language tabs on websites edit page are not in the same order than at contenttrees and articles.
new language tab always should be added right from existing language tabs.
Currrently, we use different approaches to enable indexing of JSON fiels and composite data, e.g. splitting content into an own indexed field, or using functions to fill a composite data type (see ManifestationRepositoryImpl
).
This should be reviewed, to see, if more recent PostgreSQL versions can provided a better/direct approach.
Literature:
All config classes are found by component scan. SpringConfigBackend
is empty except importing SpringConfigBackendDatabase
and therefore could be removed:
formatter durch maven sicherstellen
Originally posted by @datazuul in #143
Ideally through https://github.com/google/google-java-format
The Cudami Client supports webpage rendering but not with a API but by its internal thymeleaf templates.
The function shoud be provided by the API of the client instead.
e.g.
String renderWebPage(WebPage)
the App takes the String and strores it in the model. In the rendering process the model attribute could be included in the
rendered response with the thymeleaf utext type.
It should be possible to edit user details for the logged in user.
application.yml
on webpage edit page $ is used before bootstrap javascript is loaded. js error in console.
If a write or delete method in a service uses more than repository, we should make them transactional
e.g.: when getting digitalobjects for a collection, the following request is executed:
SELECT d.uuid d_uuid, d.label d_label, d.refid d_refId, d.custom_attrs d_customAttributes, d.created d_created, d.last_modified d_lastModified, id.uuid id_uuid, id.identifiable id_identifiable, id.namespace id_namespace, id.identifier id_id, file.uuid pf_uuid, file.filename pf_filename, file.mimetype pf_mimeType, file.size_in_bytes pf_sizeInBytes, file.uri pf_uri, file.http_base_url pf_httpBaseUrl FROM digitalobjects AS d LEFT JOIN identifiers AS id ON d.uuid = id.identifiable LEFT JOIN fileresources_image AS file ON d.previewfileresource = file.uuid LEFT JOIN collection_digitalobjects AS cd ON d.uuid = cd.digitalobject_uuid WHERE cd.collection_uuid = '526b7402-b6c3-4837-a1f8-d0717171b01b' ORDER BY cd.sortIndex ASC LIMIT 25 OFFSET 0;
this leads to duplicate entries for each digitalobject. thus the paging size (25) is reached at 13 objects...
the jdbi mapping reduces this to 13 objects.
Fix query to / paging in CollectionRepositoryImpl to return only one result for one digital object
Getestet mit type image
. Ergebnis ist Status 500 mit Exception
j.l.UnsupportedOperationException: null\n\tat j.u.AbstractMap.put(AbstractMap.java:209)
at d.d.c.s.b.i.j.JdbiRepositoryImpl.getWhereClause(JdbiRepositoryImpl.java:184)
at d.d.c.s.b.i.j.JdbiRepositoryImpl.getFilterClauses(JdbiRepositoryImpl.java:72)
at d.d.c.s.b.i.j.JdbiRepositoryImpl.addFiltering(JdbiRepositoryImpl.java:44)
at d.d.c.s.b.i.j.JdbiRepositoryImpl.addFiltering(JdbiRepositoryImpl.java:36)
at d.d.c.s.b.i.j.i.IdentifiableRepositoryImpl.find(IdentifiableRepositoryImpl.java:408)
at d.d.c.s.b.i.j.i.IdentifiableRepositoryImpl.find(IdentifiableRepositoryImpl.java:395)
... 5 frames excluded
at o.s.d.s.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
... 121 frames truncated
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating @aeaton/react-prosemirror in /dc-cudami-editor/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@aeaton/prosemirror-transformers - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
seems to be because of first max gets no results...
At the moment the de.digitalcollections.cudami.server.WebpageHtmlControllerTest
(that tries to validate html file against xsd) fails when JDK >= 11.0.8 is used, with the following error message:
[ERROR] Failures:
[ERROR] WebpageHtmlControllerTest.shouldReturnValidHtml:59
Expecting code not to raise a throwable but caught
<"org.xml.sax.SAXParseException; systemId: file:/tmp/content12269978994860138332.html; lineNumber: 1; columnNumber: 79; cvc-elt.1.a: Deklaration des Elements "html" kann nicht gefunden werden.
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2132)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:829)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:731)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3063)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:836)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.validation.StreamValidatorHelper.validate(StreamValidatorHelper.java:176)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:115)
at java.xml/javax.xml.validation.Validator.validate(Validator.java:124)
at de.digitalcollections.cudami.server.controller.identifiable.entity.parts.WebpageHtmlControllerTest.lambda$shouldReturnValidHtml$0(WebpageHtmlControllerTest.java:59)
at org.assertj.core.api.ThrowableAssert.catchThrowable(ThrowableAssert.java:62)
at org.assertj.core.api.AssertionsForClassTypes.catchThrowable(AssertionsForClassTypes.java:877)
at org.assertj.core.api.AssertionsForClassTypes.assertThatCode(AssertionsForClassTypes.java:848)
at org.assertj.core.api.Assertions.assertThatCode(Assertions.java:1255)
at de.digitalcollections.cudami.server.controller.identifiable.entity.parts.WebpageHtmlControllerTest.shouldReturnValidHtml(WebpageHtmlControllerTest.java:59)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:212)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:208)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:188)
at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:154)
at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:128)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548)
">
It was working with OpenJDK 11.0.7. Further investigation is needed now!
Temp. workaround: disable that test and link to this issue.
Javascript-error: Cannot read property 'localizedStructuredContent' of null; prosemirror-basic.js:117
somehow the validation is broken. empty password fields should be ignored/not overwrite password. was functional in the past...
When editing a webpage the Type - Heading (especially heading 5) dropdown of the description is overlapped by the editor menu of the long text area.
If I have f.e. an article with english label and description and add german as new language, but only fill out the label, the english description will be rendered. Is that behaviour intended?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.