All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.visallo.web.routes.resource.ResourceGet Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
package org.visallo.web.routes.resource;

import com.google.inject.Inject;
import com.v5analytics.webster.ParameterizedHandler;
import com.v5analytics.webster.annotations.Handle;
import com.v5analytics.webster.annotations.Optional;
import com.v5analytics.webster.annotations.Required;
import org.visallo.core.exception.VisalloResourceNotFoundException;
import org.visallo.core.model.ontology.Concept;
import org.visallo.core.model.ontology.OntologyRepository;
import org.visallo.web.VisalloResponse;

public class ResourceGet implements ParameterizedHandler {
    private final OntologyRepository ontologyRepository;

    @Inject
    public ResourceGet(final OntologyRepository ontologyRepository) {
        this.ontologyRepository = ontologyRepository;
    }

    @Handle
    public void handle(
            @Required(name = "id") String id,
            @Optional(name = "state") String state,
            VisalloResponse response
    ) throws Exception {
        Concept concept = ontologyRepository.getConceptByIRI(id);

        byte[] rawImg;
        if ("selected".equals(state) && concept.hasGlyphIconSelectedResource()) {
            rawImg = concept.getGlyphIconSelected();
        } else {
            rawImg = concept.getGlyphIcon();
        }

        if (rawImg == null || rawImg.length <= 0) {
            throw new VisalloResourceNotFoundException("Could not find resource with id: " + id);
        }

        // TODO change content type if we use this route for more than getting glyph icons
        response.setContentType("image/png");
        response.setHeader("Cache-Control", "max-age=" + (5 * 60));
        response.write(rawImg);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy