/*
* 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;
}
}