/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.xmlui.aspect.viewArtifacts;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.matching.Matcher;
import org.apache.cocoon.sitemap.PatternException;
import org.apache.log4j.Logger;
import org.dspace.app.xmlui.utils.HandleUtil;
import org.dspace.discovery.SearchUtils;
import org.dspace.discovery.configuration.DiscoveryConfiguration;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/**
* Matcher used to determine which transformers are used to render the home page for a community/collection
*
* @author Kevin Van de Velde (kevin at atmire dot com)
*/
public class ContainerHomePageMatcher implements Matcher {
private static final Logger log = Logger.getLogger(ContainerHomePageMatcher.class);
@Override
public Map match(String pattern, Map objectModel, Parameters parameters) throws PatternException {
boolean not = false;
int action = -1; // the action to check
if (pattern.startsWith("!"))
{
not = true;
pattern = pattern.substring(1);
}
if(pattern.equals("discoveryRecentSubmissions") || pattern.equals("metadata"))
{
try {
boolean isHomePageActive;
DiscoveryConfiguration discoveryConfiguration = SearchUtils.getDiscoveryConfiguration(HandleUtil.obtainHandle(objectModel));
if(discoveryConfiguration.getRecentSubmissionConfiguration() != null && discoveryConfiguration.getRecentSubmissionConfiguration().getUseAsHomePage())
{
isHomePageActive = !pattern.equals("metadata");
} else{
isHomePageActive = pattern.equals("metadata");
}
if(isHomePageActive ^ not)
{
return new HashMap();
}else{
return null;
}
} catch (SQLException e) {
log.error("SQL exception while determining home page", e);
}
}
throw new IllegalArgumentException();
}
}