package org.openedit.entermedia.scanner; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openedit.entermedia.Asset; import org.openedit.entermedia.MediaArchive; import org.openedit.repository.ContentItem; import org.openedit.util.DateStorageUtil; import com.openedit.page.manage.PageManager; public class MetaDataReader { private static final Log log = LogFactory.getLog(MetaDataReader.class); protected List fieldMetadataExtractors; public void populateAsset(MediaArchive inArchive, ContentItem inputFile, Asset inAsset) { try { //Make sure this is not a getStub so that S3 can cache it //make sure it is fully loaded if( inputFile.isStub() ) { inputFile = getPageManager().getRepository().get(inputFile.getPath()); } // GregorianCalendar cal = new GregorianCalendar(); // cal.setTimeInMillis(inputFile.lastModified()); // cal.set(Calendar.MILLISECOND, 0); // Asset Modification Date">2005-03-04 08:28:57 String now = DateStorageUtil.getStorageUtil().formatForStorage(inputFile.lastModified()); inAsset.setProperty("assetmodificationdate",now); // inAsset.setProperty("recordmodificationdate", format.format( // new Date() ) ); inAsset.setProperty("filesize", String.valueOf(inputFile.getLength())); if (inAsset.getName() == null) { inAsset.setName(inputFile.getName()); } long start = System.currentTimeMillis(); boolean foundone = false; for (Iterator iterator = getMetadataExtractors().iterator(); iterator.hasNext();) { MetadataExtractor extrac = (MetadataExtractor) iterator.next(); if( extrac.extractData(inArchive, inputFile, inAsset) ) { foundone = true; } } if( foundone ) { long end = System.currentTimeMillis(); if( log.isDebugEnabled() ) { log.debug("Got metadata in " + (end - start) + " mili seconds."); } } } catch (Exception e) { log.error("Could not read metadata", e); } } public List getMetadataExtractors() { if (fieldMetadataExtractors == null) { fieldMetadataExtractors = new ArrayList(); } return fieldMetadataExtractors; } public void setMetadataExtractors(List inMetadataExtractors) { fieldMetadataExtractors = inMetadataExtractors; } protected PageManager fieldPageManager; public PageManager getPageManager() { return fieldPageManager; } public void setPageManager(PageManager inPageManager) { fieldPageManager = inPageManager; } }