/* * Copyright © 2013 Nokia Corporation. All rights reserved. * Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. * Oracle and Java are trademarks or registered trademarks of Oracle and/or its * affiliates. Other product and company names mentioned herein may be trademarks * or trade names of their respective owners. * See LICENSE.TXT for license information. */ package com.nokia.example.mmapi.mediasampler.data; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; /** * Datatype for the Medias. */ public class Media { private String file; private String type; private int location; public static final int LOCATION_JAR = 0; public static final int LOCATION_HTTP = 1; public static final int LOCATION_FILE = 3; public Media(String file, String type, int location) { this.file = file; this.type = type; this.location = location; } /** * Return location type of this media. * * @return int as type of this media location. Type value is one of the * constants LOCATION_JAR, LOCATION_HTTP or LOCATION_FILE. */ public int getLocation() { return location; } /** * Return file location of this Media. * * @return String as url or path to media. */ public String getFile() { return file; } /** * Returns mime type of this media. * * @return String as mime type */ public String getType() { return type; } /** * Returns InputStream to the media data. * * @return InputStream * @throws IOException */ public InputStream getInputStream() throws IOException { if (location == LOCATION_JAR) { return getClass().getResourceAsStream(file); } else if (location == LOCATION_HTTP) { return urlToStream(file); } throw new IOException("Not supported location type!"); } /** * Reads the content from the specified HTTP URL and returns InputStream * where the contents are read. * * @return InputStream * @throws IOException */ private InputStream urlToStream(String url) throws IOException { // Open connection to the http url... HttpConnection connection = (HttpConnection) Connector.open(url); DataInputStream dataIn = connection.openDataInputStream(); byte[] buffer = new byte[1000]; int read = -1; // Read the content from url. ByteArrayOutputStream byteout = new ByteArrayOutputStream(); while ((read = dataIn.read(buffer)) >= 0) { byteout.write(buffer, 0, read); } dataIn.close(); // Fill InputStream to return with content read from the URL. ByteArrayInputStream byteIn = new ByteArrayInputStream(byteout.toByteArray()); return byteIn; } }