Skip to content

Commit 46417a3

Browse files
ADD & REPLACE keywords
1 parent a5e98e0 commit 46417a3

File tree

5 files changed

+73
-9
lines changed

5 files changed

+73
-9
lines changed

README.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,36 @@ From Sample 2 Site > Values = 1,2
8383
8484
## Version 3.1.0
8585

86-
Added controls for default value and parent selection
86+
Added controls for default value and parent selection
87+
88+
## Version 3.2.0
89+
90+
AMP artifacts ready-to-deploy available at [3.2.0](https://github.com/keensoft/alfresco-datalist-constraints/releases/tag/3.2.0)
91+
92+
Keywords `[ADD]` and `[REPLACE]` have been added to define the behaviour of a list inside a Site:
93+
94+
* `[ADD]` merges values from global Dictionary list and Site list
95+
* `[REPLACE]` includes only values from Site list
96+
97+
This keyword has to be included in any place at `Description` field when declaring the list inside a Site.
98+
99+
** Sample scenario **
100+
101+
Datalist definitions
102+
103+
```
104+
Dictionary Site > Datalist "Options" > Values = 1,2
105+
Sample 1 Site > Datalist "Options" (including [ADD] in description) > Values = 3,4
106+
Sample 2 Site > Datalist "Options" (including [REPLACE] in description) > Values = 3,4
107+
Sample 3 Site > No datalist defined
108+
```
109+
110+
Values provided by combos
111+
112+
```
113+
Outside from a Site > Values = 1,2
114+
From Advanced Search > Values = 1,2,3,4
115+
From Sample 1 Site > Values = 1,2,3,4
116+
From Sample 2 Site > Values = 3,4
117+
From Sample 3 Site > Values = 1,2
118+
```

datalist-model-repo/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>es.keensoft</groupId>
66
<artifactId>datalist-model-repo</artifactId>
7-
<version>3.1.0</version>
7+
<version>3.2.0</version>
88
<name>datalist-model-repo Repository AMP project</name>
99
<packaging>amp</packaging>
1010
<description>Manages the lifecycle of the site-props-repo Repository AMP (Alfresco Module Package)</description>

datalist-model-repo/src/main/java/es/keensoft/alfresco/action/webscript/DataListWebScript.java

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@
2828
import org.springframework.extensions.webscripts.WebScriptResponse;
2929

3030
import es.keensoft.alfresco.model.DatalistModel;
31+
import es.keensoft.alfresco.model.DatalistModel.DataListStatus;
3132

3233
public class DataListWebScript extends AbstractWebScript {
3334

34-
private static final String JSON_CODE = "code";
35+
private static final String REPLACE_DESK_MARK = "[REPLACE]";
36+
private static final String ADD_DESC_MARK = "[ADD]";
37+
38+
private static final String JSON_CODE = "code";
3539
private static final String JSON_VALUE = "value";
3640

3741
private static final String DATALIST_CONTAINER_ID = "dataLists";
@@ -71,8 +75,21 @@ public void execute(WebScriptRequest request, WebScriptResponse response) throws
7175
siteId = siteInfo.getShortName();
7276
}
7377
}
74-
if (siteId != null && existsDatalist(siteId, targetedDataListName)) {
75-
sites.add(siteService.getSite(siteId));
78+
DataListStatus siteStatus = DataListStatus.NONE;
79+
if (siteId != null) {
80+
siteStatus = existsDatalist(siteId, targetedDataListName);
81+
switch(siteStatus) {
82+
case NONE:
83+
sites = siteService.listSites(null, DATALIST_PRESET);
84+
break;
85+
case ADD:
86+
sites = siteService.listSites(null, DATALIST_PRESET);
87+
sites.add(siteService.getSite(siteId));
88+
break;
89+
case REPLACE:
90+
sites.add(siteService.getSite(siteId));
91+
break;
92+
}
7693
} else {
7794
sites = siteService.listSites(null, DATALIST_PRESET);
7895
}
@@ -168,18 +185,29 @@ public int compare(Map.Entry<String, String> o1,
168185
return sortedMap;
169186
}
170187

171-
private boolean existsDatalist(String siteId, String targetedDataListName) {
188+
private DataListStatus existsDatalist(String siteId, String targetedDataListName) {
172189

173190
NodeRef dataListContainer = SiteServiceImpl.getSiteContainer(siteId, DATALIST_CONTAINER_ID, true, siteService, transactionService, taggingService);
174191
List<ChildAssociationRef> dataListsNodes = nodeService.getChildAssocs(dataListContainer);
175192
for (ChildAssociationRef dataList : dataListsNodes) {
176193
if (dataList.getTypeQName().isMatch(ContentModel.ASSOC_CONTAINS)) {
177194
if (nodeService.getProperty(dataList.getChildRef(), ContentModel.PROP_TITLE).toString().equals(targetedDataListName)) {
178-
return true;
195+
Object description = nodeService.getProperty(dataList.getChildRef(), ContentModel.PROP_DESCRIPTION);
196+
if (description != null) {
197+
if (description.toString().indexOf(ADD_DESC_MARK) > 0) {
198+
return DataListStatus.ADD;
199+
} else if (description.toString().indexOf(REPLACE_DESK_MARK) > 0) {
200+
return DataListStatus.REPLACE;
201+
} else {
202+
return DataListStatus.REPLACE;
203+
}
204+
} else {
205+
return DataListStatus.REPLACE;
206+
}
179207
}
180208
}
181209
}
182-
return false;
210+
return DataListStatus.NONE;
183211

184212
}
185213

datalist-model-repo/src/main/java/es/keensoft/alfresco/model/DatalistModel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,8 @@ public class DatalistModel {
99
public static final QName DATALIST_MODEL_VALUE_PROPERTY = QName.createQName(DATALIST_MODEL_URI, "value");
1010
public static final QName DATALIST_MODEL_ITEM_TYPE = QName.createQName(DATALIST_MODEL_URI, "optionList");
1111

12+
public enum DataListStatus {
13+
ADD, REPLACE, NONE
14+
}
15+
1216
}

datalist-model-share/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>es.keensoft</groupId>
66
<artifactId>datalist-model-share</artifactId>
7-
<version>3.1.0</version>
7+
<version>3.2.0</version>
88
<name>site-props-share AMP project</name>
99
<packaging>amp</packaging>
1010
<description>Manages the lifecycle of the site-props-share AMP (Alfresco Module Package)</description>

0 commit comments

Comments
 (0)