package nl.ipo.cds.metadata; import java.sql.Timestamp; import java.util.Calendar; import java.util.List; import javax.xml.bind.DatatypeConverter; import nl.ipo.cds.dao.ManagerDao; import nl.ipo.cds.domain.MetadataDocumentType; import nl.ipo.cds.etl.Transformer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class MetadataTransformer implements Transformer { private static final Log logger = LogFactory.getLog(MetadataTransformer.class); private final MetadataManager metadataManager; private final ManagerDao managerDao; public MetadataTransformer(final MetadataManager metadataManager, final ManagerDao managerDao) { this.metadataManager = metadataManager; this.managerDao = managerDao; } @Override public void transform(List<String> themeNames) throws Exception { logger.debug("modifying metadata documents"); final List<Object[]> docs = managerDao.getChangedMetadataDocuments(); logger.debug("metadata documents to change: " + docs.size()); for(final Object[] doc : docs) { final String documentName = (String)doc[0]; final MetadataDocumentType documentType = MetadataDocumentType.valueOf((String)doc[1]); final Timestamp updateDatum = (Timestamp)doc[2]; final Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(updateDatum.getTime()); final String dateTime = DatatypeConverter.printDateTime(calendar); logger.debug("updating: " + documentName + " " + documentType + " " + updateDatum); try { metadataManager.updateMetadata(documentName, documentType, dateTime); } catch(Exception e) { logger.error("failed to update metadata document: " + documentName, e); } } } }