/** * Copyright (C) 2014 Cohesive Integrations, LLC (info@cohesiveintegrations.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.di2e.ecdr.search.transform.atom; import java.io.Serializable; import java.util.List; import java.util.Map; import javax.activation.MimeType; import net.di2e.ecdr.api.security.SecurityConfiguration; import net.di2e.ecdr.commons.CDRMetacard; import net.di2e.ecdr.commons.constants.SearchConstants; import net.di2e.ecdr.search.transform.atom.constants.AtomResponseConstants; import org.apache.abdera.model.Entry; import org.apache.abdera.model.Link; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ddf.action.Action; import ddf.action.ActionProvider; public class AtomOGCTransformer extends AtomTransformer { private static final Logger LOGGER = LoggerFactory.getLogger( AtomTransformerWithContent.class ); public AtomOGCTransformer( ActionProvider viewMetacardProvider, ActionProvider metadataProvider, ActionProvider resourceProvider, ActionProvider thumbnailProvider, MimeType thumbnailMime, MimeType viewMime, List<SecurityConfiguration> securityConfig ) { super( viewMetacardProvider, metadataProvider, resourceProvider, thumbnailProvider, thumbnailMime, viewMime, securityConfig ); LOGGER.debug( "Created new AtomOGCTransformer for returning metadata with atom entry content element populated" ); } protected void addLinksToEntry( Entry entry, CDRMetacard metacard, String format, Map<String, Serializable> properties ) { if ( metacard.hasThumbnail() ) { if ( getThumbnailActionProvider() != null ) { Action action = getThumbnailActionProvider().getAction( metacard ); if ( action != null && action.getUrl() != null ) { entry.addLink( action.getUrl().toString(), SearchConstants.LINK_REL_ICON, getThumbnailMimeType().getBaseType(), action.getTitle(), null, metacard.getThumbnailLength() ); } } } if ( getResourceActionProvider() != null && metacard.hasResource() ) { Action action = getResourceActionProvider().getAction( metacard ); if ( action != null && action.getUrl() != null ) { entry.addLink( action.getUrl().toString(), Link.REL_ENCLOSURE, metacard.getResourceMIMETypeString(), action.getTitle(), null, metacard.getResourceSizeLong() ); } // If there is no explicit resource then the metadata serves as // the product/resource so include a link to it here } else if ( getMetadataActionProvider() != null ) { Action action = getMetadataActionProvider().getAction( metacard ); if ( action != null && action.getUrl() != null ) { entry.addLink( action.getUrl().toString(), Link.REL_ENCLOSURE, "text/xml", "View Product", null, -1 ); } } if ( getViewMetacardActionProvider() != null ) { Action action = getViewMetacardActionProvider().getAction( metacard ); if ( action != null && action.getUrl() != null ) { String transformFormat = (String) properties.get( SearchConstants.METACARD_TRANSFORMER_NAME ); if ( StringUtils.isBlank( transformFormat ) ) { transformFormat = StringUtils.defaultIfBlank( format, CDR_ATOM_TRANSFORMER_ID ); } entry.addLink( action.getUrl().toString() + "?transform=" + transformFormat, Link.REL_SELF, AtomResponseConstants.ATOM_MIME_TYPE, "View Atom Entry", null, -1 ); entry.addLink( action.getUrl().toString(), Link.REL_ALTERNATE, "text/xml", action.getTitle(), null, -1 ); } } } }