/**
* 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.bulkio.ui.writer;
import gov.redhawk.bulkio.ui.internal.SriWrapper;
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.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
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 SriXmlWriter extends AbstractSriWriter {
public void save(Map<String, SriWrapper> streamMap) throws IOException {
if (getSaveLocation() == null) {
return;
}
for (Iterator<Entry<String, SriWrapper>> i = streamMap.entrySet().iterator(); i.hasNext();) {
Entry<String, SriWrapper> nextStream = i.next();
StreamSRIModel metaInfo = StreamSRIMetaDataFactory.eINSTANCE.createStreamSRIModel();
StreamXMLSRIUtil.setStreamSRI(nextStream.getValue().getSri(), metaInfo);
metaInfo.setBulkIOType(String.valueOf(getBulkioType()));
String streamName = nextStream.getKey();
streamName = streamName.replaceAll("\\s+", "_");
String filename = getSaveLocation() + "_" + streamName + ".xml";
File metadataFile = new File(filename);
if (!checkForSimilarFiles(metadataFile)) {
// Operation was cancelled to avoid overwriting existing files
return;
}
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);
addFilesWritten(filename);
}
}
}