/******************************************************************************* * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * All rights reserved. This program and the accompanying materials are made available under * the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package gov.redhawk.ide.snapshot.writer.internal; import gov.redhawk.bulkio.util.BulkIOType; import gov.redhawk.bulkio.util.StreamXMLSRIUtil; import gov.redhawk.bulkio.util.StreamSRIMetaData.StreamSRIDocumentRoot; import gov.redhawk.bulkio.util.StreamSRIMetaData.StreamSRIMetaDataFactory; import gov.redhawk.bulkio.util.StreamSRIMetaData.StreamSRIMetaDataPackage; import gov.redhawk.bulkio.util.StreamSRIMetaData.StreamSRIModel; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; /** * */ public class BinXMLDataWriter extends BinDataWriter { /** string representation of the format to print the start and end times of files. */ public static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss:SSS z"; static final String SNAPSHOT_FILE_EXENSION = ".bin"; private static final String METADATA_FILE_EXENSION = "xml"; @Override protected void saveMetaData() throws IOException { StreamSRIModel metaInfo = StreamSRIMetaDataFactory.eINSTANCE.createStreamSRIModel(); int divisor = (getSRI().mode == 1) ? 2 : 1; metaInfo.setNumberOfSamples(getNumSamples() / divisor); metaInfo.setDataByteOrder("" + getByteOrder()); metaInfo.setTime(StreamSRIMetaDataFactory.eINSTANCE.createTime()); metaInfo.getTime().setStartTime(new SimpleDateFormat(TIME_FORMAT).format(new Date())); StreamXMLSRIUtil.setStreamSRI(getSRI(), metaInfo); BulkIOType type = getSettings().getType(); metaInfo.setBulkIOType(type.name()); metaInfo.getTime().setEndTime(new SimpleDateFormat(TIME_FORMAT).format(new Date())); // save to XML file using EMF model File metadataFile = getMetaDataFile(); ResourceSet resourceSet = new ResourceSetImpl(); Resource resource = resourceSet.createResource(URI.createFileURI(metadataFile.getAbsolutePath()), StreamSRIMetaDataPackage.eCONTENT_TYPE); StreamSRIDocumentRoot root = StreamSRIMetaDataFactory.eINSTANCE.createStreamSRIDocumentRoot(); root.setSri(metaInfo); resource.getContents().add(root); resource.save(null); } @Override protected String getMetaDataFileExtension() { return METADATA_FILE_EXENSION; } @Override public List<File> getOutputFileList() { return Arrays.asList(new File[] { getFileDestination(), getMetaDataFile() }); } }