1 package org
.argeo
.app
.acr
.terms
;
3 import java
.util
.Iterator
;
6 import org
.argeo
.api
.acr
.Content
;
7 import org
.argeo
.api
.acr
.ContentNotFoundException
;
8 import org
.argeo
.api
.acr
.spi
.ProvidedContent
;
9 import org
.argeo
.api
.acr
.spi
.ProvidedSession
;
10 import org
.argeo
.app
.api
.EntityType
;
11 import org
.argeo
.app
.api
.Term
;
12 import org
.argeo
.app
.api
.TermsManager
;
13 import org
.argeo
.app
.api
.Typology
;
14 import org
.argeo
.cms
.acr
.AbstractSimpleContentProvider
;
15 import org
.argeo
.cms
.acr
.ContentUtils
;
17 public class TermsContentProvider
extends AbstractSimpleContentProvider
<TermsManager
> {
19 public TermsContentProvider() {
20 super(EntityType
.ENTITY_NAMESPACE_URI
, EntityType
.ENTITY_DEFAULT_PREFIX
);
24 protected Iterator
<Content
> firstLevel(ProvidedSession session
) {
25 return getService().getTypologies().stream().map((t
) -> (Content
) new TypologyContent(session
, this, t
))
30 public ProvidedContent
get(ProvidedSession session
, List
<String
> segments
) {
31 String typologyName
= segments
.get(0);
32 Typology typology
= getService().getTypology(typologyName
);
33 if (segments
.size() == 1)
34 return new TypologyContent(session
, this, typology
);
36 terms
: for (Term term
: typology
.getSubTerms()) {
37 if (term
.getName().equals(segments
.get(1))) {
43 throw new ContentNotFoundException(session
,
44 getMountPath() + "/" + ContentUtils
.toPath(segments
) + " cannot be found");
45 if (segments
.size() == 1)
46 return new TermContent(session
, this, currTerm
);
48 for (int i
= 2; i
< segments
.size(); i
++) {
49 String termName
= segments
.get(i
);
51 terms
: for (Term term
: currTerm
.getSubTerms()) {
52 if (term
.getName().equals(termName
)) {
58 throw new ContentNotFoundException(session
,
59 getMountPath() + "/" + ContentUtils
.toPath(segments
) + " cannot be found");
62 return new TermContent(session
, this, currTerm
);
65 ServiceContent
getRootContent(ProvidedSession session
) {
66 return new ServiceContent(session
);