projects
/
lgpl
/
argeo-commons.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
57fee63
)
Improve ACR search and edition
author
Mathieu Baudier <mbaudier@argeo.org>
Thu, 22 Jun 2023 05:57:10 +0000
(07:57 +0200)
committer
Mathieu Baudier <mbaudier@argeo.org>
Thu, 22 Jun 2023 05:57:10 +0000
(07:57 +0200)
org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
patch
|
blob
|
history
org.argeo.api.acr/src/org/argeo/api/acr/search/BasicSearch.java
patch
|
blob
|
history
org.argeo.api.acr/src/org/argeo/api/acr/search/Intersection.java
patch
|
blob
|
history
org.argeo.api.acr/src/org/argeo/api/acr/search/Union.java
patch
|
blob
|
history
org.argeo.api.acr/src/org/argeo/api/acr/spi/ContentProvider.java
patch
|
blob
|
history
org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
patch
|
blob
|
history
org.argeo.cms/src/org/argeo/cms/acr/xml/DomContentProvider.java
patch
|
blob
|
history
diff --git
a/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
b/org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
index 063a7d32175f1d0e0a949964720c35a239464f68..73ae4f02ead43b8c69038712e6e3a17477090ffe 100644
(file)
--- a/
org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
+++ b/
org.argeo.api.acr/src/org/argeo/api/acr/QNamed.java
@@
-23,6
+23,7
@@
public interface QNamed extends Supplier<String> {
return namespaceContext.getPrefix(getNamespace()) + ":" + localName();
}
return namespaceContext.getPrefix(getNamespace()) + ":" + localName();
}
+ /** This qualified named with its default prefix. If it is unqualified this method should be overridden, or QNamed.Unqualified be used. */
default String get() {
return getDefaultPrefix() + ":" + localName();
}
default String get() {
return getDefaultPrefix() + ":" + localName();
}
@@
-43,5
+44,10
@@
public interface QNamed extends Supplier<String> {
return XMLConstants.DEFAULT_NS_PREFIX;
}
return XMLConstants.DEFAULT_NS_PREFIX;
}
+ @Override
+ default String get() {
+ return localName();
+ }
+
}
}
}
}
diff --git
a/org.argeo.api.acr/src/org/argeo/api/acr/search/BasicSearch.java
b/org.argeo.api.acr/src/org/argeo/api/acr/search/BasicSearch.java
index 2e4f249d4ce5dbe35206f621e250368c003ce184..8cbdebf7e5d5c8e6614dea460a739e59328158d1 100644
(file)
--- a/
org.argeo.api.acr/src/org/argeo/api/acr/search/BasicSearch.java
+++ b/
org.argeo.api.acr/src/org/argeo/api/acr/search/BasicSearch.java
@@
-34,10
+34,20
@@
public class BasicSearch {
return this;
}
return this;
}
+ /**
+ * Convenience method, to search below this absolute path, with depth
+ * {@link Depth#INFINITTY}.
+ */
+ public BasicSearch from(String path) {
+ return from(URI.create(path), Depth.INFINITTY);
+ }
+
+ /** Search below this URI, with depth {@link Depth#INFINITTY}. */
public BasicSearch from(URI uri) {
return from(uri, Depth.INFINITTY);
}
public BasicSearch from(URI uri) {
return from(uri, Depth.INFINITTY);
}
+ /** Search below this URI, with this {@link Depth}. */
public BasicSearch from(URI uri, Depth depth) {
Objects.requireNonNull(uri);
Objects.requireNonNull(depth);
public BasicSearch from(URI uri, Depth depth) {
Objects.requireNonNull(uri);
Objects.requireNonNull(depth);
diff --git
a/org.argeo.api.acr/src/org/argeo/api/acr/search/Intersection.java
b/org.argeo.api.acr/src/org/argeo/api/acr/search/Intersection.java
index 9ce7632041db410e5216a4e757d4b49f9060b298..44ca906056e7df060c15c71008614cda315008f7 100644
(file)
--- a/
org.argeo.api.acr/src/org/argeo/api/acr/search/Intersection.java
+++ b/
org.argeo.api.acr/src/org/argeo/api/acr/search/Intersection.java
@@
-1,7
+1,7
@@
package org.argeo.api.acr.search;
/** A composition which is the intersection of sets (AND). */
package org.argeo.api.acr.search;
/** A composition which is the intersection of sets (AND). */
-class Intersection implements Composition {
+
public
class Intersection implements Composition {
ContentFilter<Intersection> filter;
@SuppressWarnings("unchecked")
ContentFilter<Intersection> filter;
@SuppressWarnings("unchecked")
diff --git
a/org.argeo.api.acr/src/org/argeo/api/acr/search/Union.java
b/org.argeo.api.acr/src/org/argeo/api/acr/search/Union.java
index df1b00175019600fe6bfdf791a31f7802bb8325e..d33b13da2fd7d6050d27b7993abf551a2f44604f 100644
(file)
--- a/
org.argeo.api.acr/src/org/argeo/api/acr/search/Union.java
+++ b/
org.argeo.api.acr/src/org/argeo/api/acr/search/Union.java
@@
-1,7
+1,7
@@
package org.argeo.api.acr.search;
/** A composition which is the union of sets (OR). */
package org.argeo.api.acr.search;
/** A composition which is the union of sets (OR). */
-class Union implements Composition {
+
public
class Union implements Composition {
ContentFilter<Union> filter;
@SuppressWarnings("unchecked")
ContentFilter<Union> filter;
@SuppressWarnings("unchecked")
diff --git
a/org.argeo.api.acr/src/org/argeo/api/acr/spi/ContentProvider.java
b/org.argeo.api.acr/src/org/argeo/api/acr/spi/ContentProvider.java
index 56610ef4b097c917ceec3a155fc59e95b1f5893d..8b59f2fa23120784660d1c4a6e4defd3b9f44754 100644
(file)
--- a/
org.argeo.api.acr/src/org/argeo/api/acr/spi/ContentProvider.java
+++ b/
org.argeo.api.acr/src/org/argeo/api/acr/spi/ContentProvider.java
@@
-7,6
+7,7
@@
import javax.xml.namespace.NamespaceContext;
import org.argeo.api.acr.Content;
import org.argeo.api.acr.ContentNotFoundException;
import org.argeo.api.acr.Content;
import org.argeo.api.acr.ContentNotFoundException;
+import org.argeo.api.acr.ContentSession;
import org.argeo.api.acr.search.BasicSearch;
/**
import org.argeo.api.acr.search.BasicSearch;
/**
@@
-50,6
+51,17
@@
public interface ContentProvider extends NamespaceContext {
throw new UnsupportedOperationException();
}
throw new UnsupportedOperationException();
}
+ /*
+ * EDITION
+ */
+ /**
+ * Called when an edition cycle is completed. Does nothing by default.
+ *
+ * @see ContentSession#edit(java.util.function.Consumer)
+ */
+ default void persist(ProvidedSession session) {
+ }
+
/*
* NAMESPACE CONTEXT
*/
/*
* NAMESPACE CONTEXT
*/
diff --git
a/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
b/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
index af7dca046ab636b014c7c601f0908ff3060661a6..8d475fd204853737eae48b94629c04fcdf858ea2 100644
(file)
--- a/
org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
+++ b/
org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
@@
-26,7
+26,7
@@
import org.argeo.api.acr.spi.ProvidedContent;
import org.argeo.api.acr.spi.ProvidedRepository;
import org.argeo.api.acr.spi.ProvidedSession;
import org.argeo.api.uuid.UuidFactory;
import org.argeo.api.acr.spi.ProvidedRepository;
import org.argeo.api.acr.spi.ProvidedSession;
import org.argeo.api.uuid.UuidFactory;
-import org.argeo.cms.
acr.xml.DomContentProvid
er;
+import org.argeo.cms.
CurrentUs
er;
/** Implements {@link ProvidedSession}. */
class CmsContentSession implements ProvidedSession {
/** Implements {@link ProvidedSession}. */
class CmsContentSession implements ProvidedSession {
@@
-137,9
+137,10
@@
class CmsContentSession implements ProvidedSession {
synchronized (CmsContentSession.this) {
// TODO optimise
for (ContentProvider provider : modifiedProviders) {
synchronized (CmsContentSession.this) {
// TODO optimise
for (ContentProvider provider : modifiedProviders) {
- if (provider instanceof DomContentProvider) {
- ((DomContentProvider) provider).persist(s);
- }
+ provider.persist(s);
+// if (provider instanceof DomContentProvider) {
+// ((DomContentProvider) provider).persist(s);
+// }
}
modifiedProviders.clear();
return s;
}
modifiedProviders.clear();
return s;
@@
-179,6
+180,18
@@
class CmsContentSession implements ProvidedSession {
return sessionRunDir;
}
return sessionRunDir;
}
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof CmsContentSession session)
+ return uuid.equals(session.uuid);
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "Content Session " + uuid + " (" + CurrentUser.getUsername(subject) + ")";
+ }
+
/*
* SEARCH
*/
/*
* SEARCH
*/
diff --git
a/org.argeo.cms/src/org/argeo/cms/acr/xml/DomContentProvider.java
b/org.argeo.cms/src/org/argeo/cms/acr/xml/DomContentProvider.java
index d569350975ff1c5fa8597ebe6962f8bbdf95e13a..39d9c2a90b56d5a8483c9813fb5637e0b94dc7d3 100644
(file)
--- a/
org.argeo.cms/src/org/argeo/cms/acr/xml/DomContentProvider.java
+++ b/
org.argeo.cms/src/org/argeo/cms/acr/xml/DomContentProvider.java
@@
-96,6
+96,7
@@
public class DomContentProvider implements ContentProvider, NamespaceContext {
return nodes.getLength() != 0;
}
return nodes.getLength() != 0;
}
+ @Override
public void persist(ProvidedSession session) {
if (mountPath != null) {
Content mountPoint = session.getMountPoint(mountPath);
public void persist(ProvidedSession session) {
if (mountPath != null) {
Content mountPoint = session.getMountPoint(mountPath);