/**
* Copyright (c) 2015 unfoldingWord
* http://creativecommons.org/licenses/MIT/
* See LICENSE file for details.
* Contributors:
* PJ Fechner <pj@actsmedia.com>
*/
package utils;
import android.content.Context;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import model.DataFileManager;
import model.daoModels.AudioChapter;
import model.daoModels.Book;
import model.daoModels.Version;
import model.parsers.MediaType;
/**
* Created by Fechner on 8/5/15.
*/
public class FileNameHelper {
public static String getSaveFileNameFromUrl(String url){
return url.replace(":", "#").replace("/", "*");
}
public static String getSaveFileName(Context context, Book book, MediaType type, String url){
return book.getUniqueSlug() + FILE_SEPARATOR + getFileEnd(context, book, type, getFileExtension(url, type));
}
private static String getFileEnd(Context context, Book book, MediaType type, String extension){
switch (type) {
case MEDIA_TYPE_TEXT: {
return extension;
}
case MEDIA_TYPE_AUDIO:{
return extension;
}
default:{
return "";
}
}
}
private static String getFileExtension(String url, MediaType type){
if(type == MediaType.MEDIA_TYPE_AUDIO){
return url.substring(url.lastIndexOf("/") + 1);
}
else {
return url.substring(url.lastIndexOf("."));
}
}
private static final String FILE_SEPARATOR = "|~|";
private static final String TEXT_FILE_PREFIX = "text_";
private static final String TEXT_FILE_FILE_TYPE = ".json";
public static final String AUDIO_FILE_PREFIX = "audio_";
public static final String VIDEO_FILE_PREFIX = "video_";
public static final String AUDIO_FILE_FILE_TYPE = ".mp3";
public static final String SIGNATURE_FILE_TYPE = ".sig";
public static String getShareAudioFileName(AudioChapter audioChapter, int bitRate){
String versionSlug = audioChapter.getAudioBook().getBook().getVersion().getSlug();
String language = audioChapter.getAudioBook().getBook().getVersion().getLanguage().getSlug();
String chapter = Integer.toString(audioChapter.getChapter());
String bookSlug = audioChapter.getAudioBook().getBook().getSlug();
return AUDIO_FILE_PREFIX + versionSlug + FILE_SEPARATOR + language + FILE_SEPARATOR
+ chapter + FILE_SEPARATOR + bookSlug + FILE_SEPARATOR + bitRate + AUDIO_FILE_FILE_TYPE;
}
public static String getShareAudioSignatureFileName(AudioChapter audioChapter, int bitRate){
String versionSlug = audioChapter.getAudioBook().getBook().getVersion().getSlug();
String language = audioChapter.getAudioBook().getBook().getVersion().getLanguage().getSlug();
String chapter = Integer.toString(audioChapter.getChapter());
String bookSlug = audioChapter.getAudioBook().getBook().getSlug();
return AUDIO_FILE_PREFIX + versionSlug + FILE_SEPARATOR + language + FILE_SEPARATOR
+ chapter + FILE_SEPARATOR + bookSlug + FILE_SEPARATOR + bitRate + SIGNATURE_FILE_TYPE;
}
public static String getShareTextFileName(Version version){
String versionSlug = version.getSlug();
String language = version.getLanguage().getSlug();
return TEXT_FILE_PREFIX + versionSlug + FILE_SEPARATOR + language + TEXT_FILE_FILE_TYPE;
}
public static int getBitrateFromFileName(String fileName){
Pattern bitrateFinder = Pattern.compile("\\|~\\|\\d*\\.");
Matcher matcher = bitrateFinder.matcher(fileName);
while (matcher.find()) {
String group = matcher.group(0);
String bitrate = group.substring(3, group.indexOf("."));
if(DataFileManager.isNumeric(bitrate)){
return Integer.parseInt(bitrate);
}
}
return -1;
}
public static String getLastBitFromUrl(String url) {
String changedUrl = url.replaceFirst(".*/([^/?]+).*", "$1");
return changedUrl;
}
}