Skip to content

Commit

Permalink
New feature: Added menu for commissions
Browse files Browse the repository at this point in the history
  • Loading branch information
mspasiano committed Dec 3, 2022
1 parent f504216 commit 304a820
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,21 @@
import it.cnr.cool.security.service.impl.alfresco.CMISUser;
import it.cnr.cool.util.GroupsUtils;
import it.cnr.cool.web.PermissionService;
import it.cnr.si.cool.jconon.cmis.model.JCONONDocumentType;
import it.cnr.si.cool.jconon.cmis.model.JCONONPropertyIds;
import it.cnr.si.cool.jconon.dto.SiperSede;
import it.cnr.si.cool.jconon.repository.dto.ObjectTypeCache;
import it.cnr.si.cool.jconon.service.SiperService;
import it.cnr.si.opencmis.criteria.Criteria;
import it.cnr.si.opencmis.criteria.CriteriaFactory;
import it.cnr.si.opencmis.criteria.Order;
import it.cnr.si.opencmis.criteria.restrictions.Restrictions;
import org.apache.chemistry.opencmis.client.api.*;
import org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingsHelper;
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
import org.apache.chemistry.opencmis.client.bindings.spi.http.Response;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.enums.Action;
import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
import org.apache.commons.httpclient.HttpStatus;
import org.slf4j.Logger;
Expand All @@ -37,7 +46,10 @@
import org.springframework.stereotype.Repository;

import java.io.IOException;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@Repository
public class CommonRepository {
Expand Down Expand Up @@ -79,7 +91,42 @@ public Map<String, List<SiperSede>> getManagersCall(String userId, BindingSessio
}
return result;
}

@Cacheable(value="commission-calls", key="#userId")
public List<Map<String, Serializable>> getCommissionCalls(String userId, Session session) {
List<Map<String,Serializable>> calls = new ArrayList<Map<String,Serializable>>();
Criteria criteriaCommissions = CriteriaFactory.createCriteria(JCONONDocumentType.JCONON_COMMISSIONE_METADATA.queryName());
criteriaCommissions.addColumn(PropertyIds.OBJECT_ID);
criteriaCommissions.add(Restrictions.eq(JCONONPropertyIds.COMMISSIONE_USERNAME.value(), userId));
criteriaCommissions.add(Restrictions.inTree(cacheRepository.getCompetitionFolder().getId()));
criteriaCommissions.addOrder(Order.descending(PropertyIds.CREATION_DATE));
ItemIterable<QueryResult> iterableCommission = criteriaCommissions.executeQuery(session, false, session.getDefaultContext());
final int maxItemsPerPage = session.getDefaultContext().getMaxItemsPerPage();
int skipTo = 0;
do {
iterableCommission = iterableCommission.skipTo(skipTo).getPage(maxItemsPerPage);
for (QueryResult queryResult : iterableCommission) {
Optional.ofNullable(session.getObject(queryResult.<String>getPropertyValueById(PropertyIds.OBJECT_ID)))
.filter(Document.class::isInstance)
.map(Document.class::cast)
.map(document -> {
return document
.getParents()
.stream()
.findAny();
}).orElse(Optional.empty()).ifPresent(folder -> {
calls.add(Stream.of(
new AbstractMap.SimpleEntry<>("id", folder.getId()),
new AbstractMap.SimpleEntry<>("display", Boolean.TRUE),
new AbstractMap.SimpleEntry<>("disabled", !folder.getAllowableActions().getAllowableActions().contains(Action.CAN_CREATE_DOCUMENT)),
new AbstractMap.SimpleEntry<>("title", folder.<String>getPropertyValue(JCONONPropertyIds.CALL_CODICE.value()))
).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
});
}
skipTo = skipTo + maxItemsPerPage;
} while (iterableCommission.getHasMoreItems());
return calls;
}

@Cacheable(value="enableTypeCalls", key="#userId")
public List<ObjectTypeCache> getEnableTypeCalls(String userId, CMISUser user, BindingSession session) {
List<ObjectTypeCache> result = new ArrayList<ObjectTypeCache>();
Expand All @@ -105,4 +152,10 @@ public void evictEnableTypeCalls(String userId){
public void evictManagersCall(String userId){
LOGGER.info("Evict cache managers-call for user: {}", userId);
}

@CacheEvict(value="commission-calls", key="#userId")
public void evictCommissionCalls(String userId){
LOGGER.info("Evict cache commission calls for user: {}", userId);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
import it.cnr.cool.util.StringUtil;
import it.cnr.si.cool.jconon.model.AuthenticationProvider;
import it.cnr.si.cool.jconon.repository.CommonRepository;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
Expand Down Expand Up @@ -74,13 +74,15 @@ public class CommonRest {

@GET
public Response get(@Context HttpServletRequest req, @QueryParam("pageId") String pageId) throws JsonProcessingException {
final Session currentCMISSession = cmisService.getCurrentCMISSession(req);
CMISUser user = cmisService.getCMISUserFromSession(req);
BindingSession bindingSession = cmisService
.getCurrentBindingSession(req);
Map<String, Object> model = commonRestService.getStringObjectMap(user);
model.put("groupsHash", getMd5(user.getGroups()));
model.put("enableTypeCalls", commonRepository.getEnableTypeCalls(user.getId(), user, bindingSession));
model.put("managers-call", commonRepository.getManagersCall(user.getId(), bindingSession));
model.put("commissionCalls", commonRepository.getCommissionCalls(user.getId(), currentCMISSession));
model.put("bootstrapVersion", "2");
model.put(
"isSSOCNR",
Expand Down Expand Up @@ -142,7 +144,8 @@ public void init() {
@Override
public void logout(String userId) {
commonRepository.evictEnableTypeCalls(userId);
commonRepository.evictManagersCall(userId);
commonRepository.evictManagersCall(userId);
commonRepository.evictCommissionCalls(userId);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ define(['jquery', 'json!common', 'i18n', 'ws/header.common', 'cnr/cnr.url', 'cnr
a.attr('href', '#');
a.addClass('dropdown-toggle');
}
if (el.disabled) {
li.addClass("disabled");
a.attr('href', '#');
}
if (el.display) {
if (canAddFunction !== undefined) {
if (canAddFunction(el)) {
Expand Down Expand Up @@ -92,6 +96,12 @@ define(['jquery', 'json!common', 'i18n', 'ws/header.common', 'cnr/cnr.url', 'cnr
} else {
$("#manage-call").addClass('hide');
}
if (common.commissionCalls && common.commissionCalls.length > 0) {
addMenu($("#commissions"), 'applications?cmis:objectId=', common.commissionCalls, true);
$("#commissions").removeClass('hide');
} else {
$("#commissions").addClass('hide');
}
}
if (common.isSSOCNR) {
var targetElement = document.querySelector('#applist'), iframe = document.createElement('iframe');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@
</li>
</#if>
</#list>
<#if !context.user.guest && context.user.groupsArray?seq_contains("GROUP_COMMISSIONI_CONCORSO") >
<li class="hide dropdown page" id="commissions">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Commissioni <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="nav-header"></li>
</ul>
</li>
</#if>
<#if !context.user.guest && permission.isAuthorizedCMIS("modelli", "GET", currentUser) && (context.user.immutability?size > 0) >
<li class="hide dropdown page<#if context.page.id = "modelli" > active</#if>" id="modelli">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Modelli <b class="caret"></b></a>
Expand Down

0 comments on commit 304a820

Please sign in to comment.