001/* 002 * Copyright 2019 Anyware Services 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ametys.plugins.workspaces.keywords; 017 018import java.util.ArrayList; 019import java.util.Collections; 020import java.util.HashMap; 021import java.util.List; 022import java.util.Map; 023 024import org.apache.avalon.framework.service.ServiceException; 025import org.apache.avalon.framework.service.ServiceManager; 026 027import org.ametys.cms.tag.AbstractTagsDAO; 028import org.ametys.cms.tag.Tag; 029import org.ametys.cms.tag.TagProvider; 030import org.ametys.cms.tag.jcr.AbstractJCRTagsDAO; 031import org.ametys.core.right.RightManager; 032import org.ametys.core.right.RightManager.RightResult; 033import org.ametys.core.ui.Callable; 034import org.ametys.plugins.workspaces.project.ProjectConstants; 035 036/** 037 * DAO for manipulating project's tags 038 */ 039public class KeywordsDAO extends AbstractTagsDAO 040{ 041 /** The avalon role */ 042 public static final String ROLE = KeywordsDAO.class.getName(); 043 044 private RightManager _rightManager; 045 private KeywordJCRDAO _keywordJCRDAO; 046 047 @Override 048 public void service(ServiceManager manager) throws ServiceException 049 { 050 super.service(manager); 051 _rightManager = (RightManager) manager.lookup(RightManager.ROLE); 052 _keywordJCRDAO = (KeywordJCRDAO) manager.lookup(KeywordJCRDAO.ROLE); 053 } 054 055 @Override 056 public String getTagProviderEPRole() 057 { 058 return KeywordProviderExtensionPoint.ROLE; 059 } 060 061 @Override 062 protected List<TagProvider< ? extends Tag>> getCustomTagProvider() 063 { 064 List<TagProvider<? extends Tag>> providers = new ArrayList<>(); 065 providers.add(_tagProviderExtPt.getExtension(KeywordJCRProvider.class.getName())); 066 067 return providers; 068 } 069 070 /** 071 * Get existing tags 072 * @return the tags (id and label) 073 */ 074 @Callable 075 public Map<String, Object> getKeywords() 076 { 077 List<Map<String, Object>> tags = new ArrayList<>(); 078 079 for (String id : _tagProviderExtPt.getExtensionsIds()) 080 { 081 TagProvider<? extends Tag> tagProvider = _tagProviderExtPt.getExtension(id); 082 Map<String, ? extends Tag> someTags = tagProvider.getTags(Collections.emptyMap()); 083 084 tags.addAll(_tagsToJSON(someTags.values())); 085 } 086 087 Map<String, Object> result = new HashMap<>(); 088 result.put("keywords", tags); 089 result.put("canCreate", _rightManager.currentUserHasRight(ProjectConstants.RIGHT_PROJECT_HANDLE_PROJECTKEYWORDS, "/cms") == RightResult.RIGHT_ALLOW); 090 return result; 091 } 092 093 @Override 094 protected AbstractJCRTagsDAO _getTagJCRDAO() 095 { 096 return _keywordJCRDAO; 097 } 098}