/**
*
*/
package org.inbio.m3s.dto.metadata.util;
import org.inbio.m3s.dao.multimedia.MetadataExtractorDAO;
import org.inbio.m3s.dao.multimedia.impl.EXIFMetadataExtractorDAOImpl;
import org.inbio.m3s.dao.multimedia.impl.ExifGpsMetadataExtractorDAOImpl;
import org.inbio.m3s.dao.multimedia.impl.FileInfoMetadataExtractorImpl;
import org.inbio.m3s.dao.multimedia.impl.VIDEOMDMetadataExtractorImpl;
/**
* @author jgutierrez
*
*/
public enum MetadataStandardEntity {
EXIF(1, "EXIF", EXIFMetadataExtractorDAOImpl.class.getName()),
FILE_INFO(2, "File Information", FileInfoMetadataExtractorImpl.class.getName()),
MET(3, "MET",VIDEOMDMetadataExtractorImpl.class.getName()),
MIGRATION(4, "Migration",null),
YOUTUBE_VIDEO(5, "Youtube Video",null),
GPS_INFO(6, "GPS Information", ExifGpsMetadataExtractorDAOImpl.class.getName());
private int id;
private String name;
/*
* implementing class to extract metadata from the original file.
* If null means that their is no way to extract data.
*/
private String implementingClass;
/**
* @param id
* @param name
* @param implementingClass
*/
private MetadataStandardEntity(int id, String name, String implementingClass) {
this.id = id;
this.name = name;
this.implementingClass = implementingClass;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return
*/
public String getImplementingClass(){
return implementingClass;
}
/**
*
* @return
* @throws IllegalArgumentException
*/
public MetadataExtractorDAO getMetadataExtractorDAOImpl() throws IllegalArgumentException{
try {
if(this.implementingClass != null)
return (MetadataExtractorDAO) Class.forName(this.implementingClass).newInstance();
else
return null;
} catch (InstantiationException e) {
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
}
}
/**
*
* @param id
* @return
*/
public static MetadataStandardEntity getById(int id){
MetadataStandardEntity[] all = MetadataStandardEntity.values();
return all[id-1];
}
}