package com.mercandalli.android.apps.files.file.audio.metadata.read;
import android.support.annotation.NonNull;
import java.util.Map;
import java.util.Vector;
@SuppressWarnings("unused")
public class MusicMetadataSet {
public final ID3Tag id3v1Raw;
public final ID3Tag.ID3TagV2 id3v2Raw;
public final MusicMetadata id3v1Clean;
public final MusicMetadata id3v2Clean;
public final MusicMetadata filename;
public final MusicMetadata merged;
public static final String NEW_LINE = System.getProperty("line.separator");
private static final TagFormat UTILS = new TagFormat();
private MusicMetadataSet(
ID3Tag id3_v1_raw,
ID3Tag.ID3TagV2 id3_v2_raw,
MusicMetadata id3_v1_clean,
MusicMetadata id3_v2_clean,
String file_name,
String folder_name) {
this.id3v1Raw = id3_v1_raw;
this.id3v2Raw = id3_v2_raw;
this.id3v1Clean = id3_v1_clean;
this.id3v2Clean = id3_v2_clean;
this.filename = FSParser.parseFilename(file_name, folder_name);
this.merged = new MusicMetadata("merged");
this.merge();
}
@NonNull
public MusicMetadata getSimplified() {
return new MusicMetadata(this.merged);
}
public String toString() {
return "{ID3TagSet. " +
NEW_LINE +
"v1_raw: " + this.id3v1Raw +
NEW_LINE +
"v2_raw: " + this.id3v2Raw +
NEW_LINE +
"v1: " + this.id3v1Clean +
NEW_LINE +
"v2: " + this.id3v2Clean +
NEW_LINE +
"filename: " + this.filename +
NEW_LINE +
"merged: " + this.merged +
NEW_LINE +
" }";
}
private void merge(Map src) {
if (src != null) {
Vector keys = new Vector(src.keySet());
for (int i = 0; i < keys.size(); ++i) {
Object key = keys.get(i);
if (this.merged.get(key) == null) {
Object value = src.get(key);
this.merged.put(key, value);
}
}
}
}
private void merge() {
if (this.id3v2Clean != null) {
this.merged.putAll(this.id3v2Clean);
}
this.merge(this.id3v1Clean);
this.merge(this.filename);
}
public static MusicMetadataSet factoryMethod(
ID3Tag id3_v1_raw, ID3Tag.ID3TagV2 id3_v2_raw, String filename, String folder_name) {
final MusicMetadata id3V1Clean = id3_v1_raw == null ? null : UTILS.process(id3_v1_raw.values);
final MusicMetadata id3V2Clean = id3_v2_raw == null ? null : UTILS.process(id3_v2_raw.values);
return new MusicMetadataSet(id3_v1_raw, id3_v2_raw, id3V1Clean, id3V2Clean, filename, folder_name);
}
}