import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;
}
private Menu buildMenuFromAdditional(nu.xom.Element nMenu, XemeliosUser user) {
+ Menu ret = null;
+ boolean allowed = false;
String fonctionnalite = nMenu.getAttributeValue("fonctionnalite");
- if (fonctionnalite == null || user.hasRole(fonctionnalite)) {
+
+ if (StringUtils.isEmpty(fonctionnalite)) {
+ allowed = true;
+ } else {
+ String[] allFct = fonctionnalite.split(",");
+
+ for (int i = 0; i < allFct.length && !allowed; i++) {
+ allowed = user.hasRole(allFct[i].trim());
+ }
+ }
+
+ if (allowed) {
String type = nMenu.getAttributeValue("type");
String caption = nMenu.getAttributeValue("title");
String id = nMenu.getAttributeValue("id");
String href = nMenu.getAttributeValue("href");
- Menu ret = new Menu(type, id, href, caption, false);
+
+ ret = new Menu(type, id, href, caption, false);
+
nu.xom.Nodes nodes = nMenu.query("menu");
for (int i = 0; i < nodes.size(); i++) {
Menu sub = buildMenuFromAdditional((nu.xom.Element) nodes.get(i), user);
if (sub != null)
ret.addChild(sub);
}
- return ret;
- } else
- return null;
+ }
+
+ return ret;
}
private XemeliosUser getXemeliosUser() throws DisconnectedException {
InitParametersDTO ret = new InitParametersDTO(searchSession.getId(), collectivites, budgetsForFirstCollectivite, collectiviteCount > Constants.MAX_DISPLAYED_COLLECTIVITES, searchSession.getDocumentModel().getId(), etatId, elementId,
// TODO: en cas de searchHelper, c'est ici qu'il faut mettre les critere
// obligatoires
- new SearchInitParametersDTO(new ArrayList<CritereTypeDTO>(), getCriteres(searchSession.getId()), importableElementLibelle), searchSession.getDocumentModel().getReferentielXsltFile() != null, searchSession.getElementModel()
- .getParent().getXslt() != null
+ new SearchInitParametersDTO(new ArrayList<CritereTypeDTO>(), getCriteres(searchSession.getId()), importableElementLibelle), searchSession.getDocumentModel().getReferentielXsltFile() != null, searchSession.getElementModel().getParent().getXslt() != null
&& searchSession.getElementModel().getParent().getXslt().length() > 0);
// on cherche maintenant les widgets
for (WidgetModel wm : searchSession.getLrm().getWidgets()) {
}
@Override
- public SelectOneCritereItemDTO getUpdatedSelectOneCritereItemDTO(String searchSessionId, String collectiviteId, String budgetId, String critereId, String selectId, Map<String, String> inputValuesById, String pluginId)
- throws DisconnectedException {
+ public SelectOneCritereItemDTO getUpdatedSelectOneCritereItemDTO(String searchSessionId, String collectiviteId, String budgetId, String critereId, String selectId, Map<String, String> inputValuesById, String pluginId) throws DisconnectedException {
checkSession();
logger.debug("getUpdatedSelectOneCritereItemDTO(" + searchSessionId + "," + collectiviteId + "," + budgetId + "," + critereId + "," + selectId + ",...," + pluginId + ")");
String smId = selectId.substring(selectId.indexOf(":") + 1);
Collection<Pair> tmp = sm.getNewRecipient();
try {
if (skem.getPos() == 2) {
- tmp.addAll(DataLayerManager.getImplementation().getSpecialKeys2(getSearchSession(searchSessionId).getDocumentModel(), new Pair(collectiviteId, null), new Pair(budgetId, null),
- new Pair(inputValuesById.get(itemName), inputValuesById.get(itemName)), skem.isDistinct(), getXemeliosUser()));
+ tmp.addAll(DataLayerManager.getImplementation().getSpecialKeys2(getSearchSession(searchSessionId).getDocumentModel(), new Pair(collectiviteId, null), new Pair(budgetId, null), new Pair(inputValuesById.get(itemName), inputValuesById.get(itemName)),
+ skem.isDistinct(), getXemeliosUser()));
} else {
throw new RuntimeException("Not yet implemented");
}
}
toReturn.addDataRow(line);
}
-
+
PaginationInfoDTO paginationInfoDTO = new PaginationInfoDTO();
paginationInfoDTO.setCurrentPageNumber(dataResultSet.getCurrentPage());
paginationInfoDTO.setPageCount(dataResultSet.getEstimatedPageCount());
paginationInfoDTO.setPageSize(getSearchSession(searchSessionId).getElementModel().getMaxDisplay());
toReturn.setCountAll(dataResultSet.getEstimatedSize());
toReturn.setPaginationInfo(paginationInfoDTO);
- } catch (Throwable t) {
+ } catch (Exception t) {
logger.error("dataResultToSearchResult", t);
}
return toReturn;
try {
List<ExportJob> list = DataLayerManager.getImplementation().getExportJobList(user);
for (ExportJob job : list) {
- ExportJobDTO el = new ExportJobDTO(job.getIdExport(), job.getOwner(), job.getFileName(), job.getExportName(), job.getDocumentId(), job.getEtatId(), job.getElementId(), null, job.getPriority(), job.getStatus(), job.getSize(),
- job.getSubmitDate(), job.getRunDate(), job.getDownloadDate(), job.getErrorMessage());
+ ExportJobDTO el = new ExportJobDTO(job.getIdExport(), job.getOwner(), job.getFileName(), job.getExportName(), job.getDocumentId(), job.getEtatId(), job.getElementId(), null, job.getPriority(), job.getStatus(), job.getSize(), job.getSubmitDate(), job.getRunDate(),
+ job.getDownloadDate(), job.getErrorMessage());
el.setElementLibelle(XemeliosHelper.getDocumentModel(el.getDocumentId()).getEtatById(el.getEtatId()).getElementById(el.getElementId()).getTitre());
ret.add(el);
}