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.odfweb.service.search; 017 018import java.util.Collection; 019import java.util.Collections; 020 021import org.apache.avalon.framework.service.ServiceException; 022import org.apache.avalon.framework.service.ServiceManager; 023 024import org.ametys.cms.transformation.URIResolver; 025import org.ametys.cms.transformation.URIResolverExtensionPoint; 026import org.ametys.odf.ODFHelper; 027import org.ametys.odf.course.Course; 028import org.ametys.odf.course.CourseFactory; 029import org.ametys.plugins.odfweb.repository.OdfPageResolver; 030import org.ametys.web.frontoffice.search.metamodel.AdditionalParameterValueMap; 031import org.ametys.web.frontoffice.search.metamodel.Returnable; 032import org.ametys.web.frontoffice.search.metamodel.ReturnableExtensionPoint; 033import org.ametys.web.frontoffice.search.metamodel.ReturnableSaxer; 034import org.ametys.web.frontoffice.search.metamodel.impl.AbstractContentBasedReturnable; 035import org.ametys.web.frontoffice.search.metamodel.impl.PageReturnable; 036 037/** 038 * {@link Returnable} for {@link Course}s 039 */ 040public class CourseReturnable extends AbstractContentBasedReturnable 041{ 042 /** Avalon Role */ 043 public static final String ROLE = CourseReturnable.class.getName(); 044 045 /** The prefix for the ids of sorts */ 046 protected static final String __PREFIX_ID = "CourseReturnable$"; 047 048 /** The page resolver for ODF */ 049 protected OdfPageResolver _odfPageResolver; 050 /** THe ODF helper */ 051 protected ODFHelper _odfHelper; 052 /** The URI resolver for ODF */ 053 protected URIResolver _odfURIResolver; 054 /** The saxer */ 055 protected ReturnableSaxer _saxer; 056 057 private PageReturnable _pageReturnable; 058 059 060 @Override 061 public void service(ServiceManager manager) throws ServiceException 062 { 063 super.service(manager); 064 _odfPageResolver = (OdfPageResolver) manager.lookup(OdfPageResolver.ROLE); 065 _odfHelper = (ODFHelper) manager.lookup(ODFHelper.ROLE); 066 URIResolverExtensionPoint uriResolverEP = (URIResolverExtensionPoint) manager.lookup(URIResolverExtensionPoint.ROLE); 067 _odfURIResolver = uriResolverEP.getResolverForType("odf"); 068 ReturnableExtensionPoint returnableEP = (ReturnableExtensionPoint) manager.lookup(ReturnableExtensionPoint.ROLE); 069 _pageReturnable = (PageReturnable) returnableEP.getExtension(PageReturnable.ROLE); 070 } 071 072 @Override 073 protected String associatedContentSearchableRole() 074 { 075 return CourseSearchable.ROLE; 076 } 077 078 @Override 079 public String getId() 080 { 081 return ROLE; 082 } 083 084 @Override 085 protected Collection<String> getContentTypes(AdditionalParameterValueMap additionalParameterValues) 086 { 087 return Collections.singleton(CourseFactory.COURSE_CONTENT_TYPE); 088 } 089 090 @Override 091 public ReturnableSaxer getSaxer(Collection<Returnable> allReturnables, AdditionalParameterValueMap additionalParameterValues) 092 { 093 if (_saxer == null) 094 { 095 _saxer = new CourseSaxer(_pageReturnable, this); 096 } 097 return _saxer; 098 } 099 100 @Override 101 protected String getDefinitionPrefix() 102 { 103 return __PREFIX_ID; 104 } 105} 106