Skip to content

Commit

Permalink
# Move mediaTypes to common module
Browse files Browse the repository at this point in the history
  • Loading branch information
SrishtiSingh-eu committed Oct 19, 2023
1 parent 210f724 commit c77a99e
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 0 deletions.
16 changes: 16 additions & 0 deletions record-api-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,20 @@
<maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
<!-- StringUtils -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.commomLang3.version}</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.15.3</version>
</dependency>

</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package eu.europeana.api.config;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

/**
* @author srishti singh
* @since 19 October 2023
*/
@JacksonXmlRootElement(localName = "format")
public class MediaType {

private static final String BROWSER = "Browser";
private static final String RENDERED = "Rendered";
private static final String EU_SCREEN = "EUScreen";

public static final String VIDEO = "Video";
public static final String SOUND = "Sound";

@JacksonXmlProperty(localName = "mediaType", isAttribute = true)
private String mimeType;

@JacksonXmlProperty(isAttribute = true)
private String label;

@JacksonXmlProperty(isAttribute = true)
private String type;

@JacksonXmlProperty(isAttribute = true)
private String support;

public String getMimeType() {
return mimeType;
}

public String getLabel() {
return label;
}

public String getType() {
return type;
}

public String getSupport() {
return support;
}

public boolean isRendered() {
return RENDERED.equals(getSupport());
}

public boolean isBrowserSupported() {
return BROWSER.equals(getSupport());
}

public boolean isVideoOrSound() {
return ( VIDEO.equals(getType()) || SOUND.equals(getType()) ) ;
}

public boolean isEuScreen() {
return EU_SCREEN.equals(getSupport());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package eu.europeana.api.config;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
* @author srishti singh
* @since 19 October 2023
*/
@JacksonXmlRootElement(localName = "config")
public class MediaTypes {

@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "format")
public List<MediaType> mediaTypeCategories;

private Map<String, MediaType> map = new HashMap<>();

/**
* Map contains all the suppoerted media types except EU Screen entries
* @return
*/
public Map<String, MediaType> getMap() {
return this.map;
}


/**
* Checks if a media Type is configured for the given mime Type
*
* @param mimeType mime type to match
* @return true if a Media Type match is configured, false otherwise.
*/
public boolean hasMediaType(String mimeType) {
return map.containsKey(mimeType);
}

/**
* Gets the configured media Type for the given entity mime type
*
* @param mimetype entity ID
* @return Matching media Type, or empty Optional if none found
*/
public Optional<MediaType> getMediaType(String mimetype) {
if (StringUtils.isNotEmpty(mimetype)) {
return Optional.ofNullable(map.get(mimetype));
}
return Optional.empty();
}

public Optional<MediaType> getEUScreenType(String edmType) {
return mediaTypeCategories.stream().filter(s -> s.isEuScreen() && s.getType().equalsIgnoreCase(edmType)).findFirst();
}

}
40 changes: 40 additions & 0 deletions record-api-common/src/main/resources/mediacategories.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version='1.0' encoding='UTF-8'?>
<config>
<format mediaType="image/gif" label="GIF" type="Image" support="Browser"/>
<format mediaType="image/jpeg" label="JPEG" type="Image" support="Browser"/>
<format mediaType="image/png" label="PNG" type="Image" support="Browser"/>
<format mediaType="image/bmp" label="BMP" type="Image" support="Browser"/>
<format mediaType="image/x-ms-bmp" label="BMP" type="Image" support="Browser"/>
<format mediaType="image/svg+xml" label="SVG" type="Image" support="Browser"/>
<format mediaType="image/webp" label="WebP" type="Image" support="Browser"/>
<format mediaType="audio/mp4" label="MP4" type="Sound" support="Browser"/>
<format mediaType="audio/mpeg" label="MPEG" type="Sound" support="Browser"/>
<format mediaType="audio/ogg" label="Ogg (Audio)" type="Sound" support="Browser"/>
<format mediaType="audio/vnd.wave" label="WAVE" type="Sound" support="Browser"/>
<format mediaType="audio/vorbis" label="Vorbis" type="Sound" support="Browser"/>
<format mediaType="audio/x-flac" label="FLAC" type="Sound" support="Browser"/>
<format mediaType="audio/x-wav" label="WAV" type="Sound" support="Browser"/>
<format mediaType="video/ogg" label="Ogg (Video)" type="Video" support="Browser"/>
<format mediaType="video/mp4" label="MP4" type="Video" support="Browser"/>
<format mediaType="video/mpeg" label="MPEG" type="Video" support="Browser"/>
<format mediaType="video/quicktime" label="QTFF" type="Video" support="Browser"/>
<format mediaType="video/webm" label="WebM" type="Video" support="Browser"/>
<format mediaType="video/x-m4v" label="M4V" type="Video" support="Browser"/>
<format mediaType="application/dash+xml" label="MPEG-DASH" type="Video" support="Browser"/>
<format mediaType="video/x-flv" label="FLV" type="Video" support="Rendered"/>
<format mediaType="audio/x-ms-wma" label="WMA" type="Sound" support="Rendered"/>
<format mediaType="video/x-ms-wmv" label="WMV" type="Video" support="Rendered"/>
<format mediaType="video/x-msvideo" label="AVI" type="Video" support="Rendered"/>
<format mediaType="image/jp2" label="JP2000" type="Image" support="Rendered"/>
<format mediaType="image/x-pict" label="PICT" type="Image" support="Rendered"/>
<format mediaType="image/tiff" label="TIFF" type="Image" support="Rendered"/>
<format mediaType="image/x-xcf" label="XCF" type="Image" support="Rendered"/>
<format mediaType="image/vnd.djvu" label="DjVu" type="Image" support="Rendered"/>
<format mediaType="image/vnd.adobe.photoshop" label="PSD" type="Image" support="Rendered"/>
<format mediaType="text/plain" label="TXT" type="Text" support="Rendered"/>
<format mediaType="application/pdf" label="PDF" type="Text" support="Rendered"/>
<format mediaType="application/rtf" label="RTF" type="Text" support="Rendered"/>
<format mediaType="application/epub+zip" label="EPUB" type="Text" support="Rendered"/>
<format type="Video" support="EUScreen"/>
<format type="Sound" support="EUScreen"/>
</config>

0 comments on commit c77a99e

Please sign in to comment.