Skip to content

Commit 378f909

Browse files
committed
Add more mass spectra export converters.
1 parent c0460fc commit 378f909

File tree

10 files changed

+312
-19
lines changed

10 files changed

+312
-19
lines changed

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.cml/src/org/eclipse/chemclipse/msd/converter/supplier/cml/converter/MassSpectrumExportConverter.java

+40-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2024 Lablicate GmbH.
2+
* Copyright (c) 2024, 2025 Lablicate GmbH.
33
*
44
* All rights reserved.
55
* This program and the accompanying materials are made available under the
@@ -12,27 +12,64 @@
1212
package org.eclipse.chemclipse.msd.converter.supplier.cml.converter;
1313

1414
import java.io.File;
15+
import java.io.FileNotFoundException;
16+
import java.io.IOException;
1517

18+
import org.eclipse.chemclipse.converter.exceptions.FileIsNotWriteableException;
19+
import org.eclipse.chemclipse.converter.l10n.ConverterMessages;
20+
import org.eclipse.chemclipse.logging.core.Logger;
21+
import org.eclipse.chemclipse.msd.converter.io.IMassSpectraWriter;
1622
import org.eclipse.chemclipse.msd.converter.massspectrum.AbstractMassSpectrumExportConverter;
23+
import org.eclipse.chemclipse.msd.converter.supplier.cml.converter.io.MassSpectraWriter;
1724
import org.eclipse.chemclipse.msd.model.core.IMassSpectra;
1825
import org.eclipse.chemclipse.msd.model.core.IScanMSD;
26+
import org.eclipse.chemclipse.msd.model.implementation.MassSpectra;
1927
import org.eclipse.chemclipse.processing.core.IProcessingInfo;
2028
import org.eclipse.chemclipse.processing.core.ProcessingInfo;
2129
import org.eclipse.core.runtime.IProgressMonitor;
30+
import org.eclipse.osgi.util.NLS;
2231

2332
public class MassSpectrumExportConverter extends AbstractMassSpectrumExportConverter {
2433

34+
private static final Logger logger = Logger.getLogger(MassSpectrumExportConverter.class);
35+
private static final String DESCRIPTION = "CML Mass Spectra Export Converter";
36+
2537
@Override
2638
public IProcessingInfo<File> convert(File file, IScanMSD massSpectrum, boolean append, IProgressMonitor monitor) {
2739

28-
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
29-
return processingInfo;
40+
IMassSpectra massSpectra = new MassSpectra();
41+
massSpectra.addMassSpectrum(massSpectrum);
42+
return convert(file, massSpectra, append, monitor);
3043
}
3144

3245
@Override
3346
public IProcessingInfo<File> convert(File file, IMassSpectra massSpectra, boolean append, IProgressMonitor monitor) {
3447

48+
IProcessingInfo<File> processingInfo = validate(file, massSpectra);
49+
if(!processingInfo.hasErrorMessages()) {
50+
try {
51+
IMassSpectraWriter massSpectraWriter = new MassSpectraWriter();
52+
massSpectraWriter.write(file, massSpectra, append, monitor);
53+
processingInfo.setProcessingResult(file);
54+
} catch(FileNotFoundException e) {
55+
logger.warn(e);
56+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotFound, file.getAbsolutePath()));
57+
} catch(FileIsNotWriteableException e) {
58+
logger.warn(e);
59+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotWritable, file.getAbsolutePath()));
60+
} catch(IOException e) {
61+
logger.warn(e);
62+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.failedToWriteFile, file.getAbsolutePath()));
63+
}
64+
}
65+
return processingInfo;
66+
}
67+
68+
private IProcessingInfo<File> validate(File file, IMassSpectra massSpectra) {
69+
3570
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
71+
processingInfo.addMessages(super.validate(file));
72+
processingInfo.addMessages(super.validate(massSpectra));
3673
return processingInfo;
3774
}
3875
}

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzdata/plugin.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
importContentMatcher="org.eclipse.chemclipse.msd.converter.supplier.mzdata.converter.MassSpectrumFileContentMatcher"
2828
importConverter="org.eclipse.chemclipse.msd.converter.supplier.mzdata.converter.MassSpectrumImportConverter"
2929
importMagicNumberMatcher="org.eclipse.chemclipse.msd.converter.supplier.mzdata.converter.MagicNumberMatcher"
30-
isExportable="false"
30+
isExportable="true"
3131
isImportable="true">
3232
</MassSpectrumSupplier>
3333
</extension>

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzdata/src/org/eclipse/chemclipse/msd/converter/supplier/mzdata/converter/MassSpectrumExportConverter.java

+38-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2008, 2023 Lablicate GmbH.
2+
* Copyright (c) 2008, 2025 Lablicate GmbH.
33
*
44
* All rights reserved.
55
* This program and the accompanying materials are made available under the
@@ -13,31 +13,64 @@
1313
package org.eclipse.chemclipse.msd.converter.supplier.mzdata.converter;
1414

1515
import java.io.File;
16+
import java.io.FileNotFoundException;
17+
import java.io.IOException;
1618

19+
import org.eclipse.chemclipse.converter.exceptions.FileIsNotWriteableException;
20+
import org.eclipse.chemclipse.converter.l10n.ConverterMessages;
21+
import org.eclipse.chemclipse.logging.core.Logger;
22+
import org.eclipse.chemclipse.msd.converter.io.IMassSpectraWriter;
1723
import org.eclipse.chemclipse.msd.converter.massspectrum.AbstractMassSpectrumExportConverter;
24+
import org.eclipse.chemclipse.msd.converter.supplier.mzdata.internal.io.MassSpectrumWriterVersion105;
1825
import org.eclipse.chemclipse.msd.model.core.IMassSpectra;
1926
import org.eclipse.chemclipse.msd.model.core.IScanMSD;
27+
import org.eclipse.chemclipse.msd.model.implementation.MassSpectra;
2028
import org.eclipse.chemclipse.processing.core.IProcessingInfo;
2129
import org.eclipse.chemclipse.processing.core.ProcessingInfo;
2230
import org.eclipse.core.runtime.IProgressMonitor;
31+
import org.eclipse.osgi.util.NLS;
2332

2433
public class MassSpectrumExportConverter extends AbstractMassSpectrumExportConverter {
2534

35+
private static final Logger logger = Logger.getLogger(MassSpectrumExportConverter.class);
2636
private static final String DESCRIPTION = "mzXML Mass Spectra Export Converter";
2737

2838
@Override
2939
public IProcessingInfo<File> convert(File file, IScanMSD massSpectrum, boolean append, IProgressMonitor monitor) {
3040

31-
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
32-
processingInfo.addErrorMessage(DESCRIPTION, "It's not possible to export mass spectrum data as mzXML yet.");
33-
return processingInfo;
41+
IMassSpectra massSpectra = new MassSpectra();
42+
massSpectra.addMassSpectrum(massSpectrum);
43+
return convert(file, massSpectra, append, monitor);
3444
}
3545

3646
@Override
3747
public IProcessingInfo<File> convert(File file, IMassSpectra massSpectra, boolean append, IProgressMonitor monitor) {
3848

49+
IProcessingInfo<File> processingInfo = validate(file, massSpectra);
50+
if(!processingInfo.hasErrorMessages()) {
51+
try {
52+
IMassSpectraWriter massSpectraWriter = new MassSpectrumWriterVersion105();
53+
massSpectraWriter.write(file, massSpectra, append, monitor);
54+
processingInfo.setProcessingResult(file);
55+
} catch(FileNotFoundException e) {
56+
logger.warn(e);
57+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotFound, file.getAbsolutePath()));
58+
} catch(FileIsNotWriteableException e) {
59+
logger.warn(e);
60+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotWritable, file.getAbsolutePath()));
61+
} catch(IOException e) {
62+
logger.warn(e);
63+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.failedToWriteFile, file.getAbsolutePath()));
64+
}
65+
}
66+
return processingInfo;
67+
}
68+
69+
private IProcessingInfo<File> validate(File file, IMassSpectra massSpectra) {
70+
3971
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
40-
processingInfo.addErrorMessage(DESCRIPTION, "It's not possible to export mass spectrum data as mzXML yet.");
72+
processingInfo.addMessages(super.validate(file));
73+
processingInfo.addMessages(super.validate(massSpectra));
4174
return processingInfo;
4275
}
4376
}

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzml/plugin.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
importContentMatcher="org.eclipse.chemclipse.msd.converter.supplier.mzml.converter.MassSpectrumFileContentMatcher"
2828
importConverter="org.eclipse.chemclipse.msd.converter.supplier.mzml.converter.MassSpectrumImportConverter"
2929
importMagicNumberMatcher="org.eclipse.chemclipse.xxd.converter.supplier.mzml.converter.MagicNumberMatcher"
30-
isExportable="false"
30+
isExportable="true"
3131
isImportable="true">
3232
</MassSpectrumSupplier>
3333
</extension>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2021, 2023 Lablicate GmbH.
2+
* Copyright (c) 2021, 2025 Lablicate GmbH.
33
*
44
* All rights reserved.
55
* This program and the accompanying materials are made available under the
@@ -12,31 +12,64 @@
1212
package org.eclipse.chemclipse.msd.converter.supplier.mzml.converter;
1313

1414
import java.io.File;
15+
import java.io.FileNotFoundException;
16+
import java.io.IOException;
1517

18+
import org.eclipse.chemclipse.converter.exceptions.FileIsNotWriteableException;
19+
import org.eclipse.chemclipse.converter.l10n.ConverterMessages;
20+
import org.eclipse.chemclipse.logging.core.Logger;
21+
import org.eclipse.chemclipse.msd.converter.io.IMassSpectraWriter;
1622
import org.eclipse.chemclipse.msd.converter.massspectrum.AbstractMassSpectrumExportConverter;
23+
import org.eclipse.chemclipse.msd.converter.supplier.mzml.io.MassSpectrumWriterVersion110;
1724
import org.eclipse.chemclipse.msd.model.core.IMassSpectra;
1825
import org.eclipse.chemclipse.msd.model.core.IScanMSD;
26+
import org.eclipse.chemclipse.msd.model.implementation.MassSpectra;
1927
import org.eclipse.chemclipse.processing.core.IProcessingInfo;
2028
import org.eclipse.chemclipse.processing.core.ProcessingInfo;
2129
import org.eclipse.core.runtime.IProgressMonitor;
30+
import org.eclipse.osgi.util.NLS;
2231

2332
public class MassSpectrumExportConverter extends AbstractMassSpectrumExportConverter {
2433

34+
private static final Logger logger = Logger.getLogger(MassSpectrumExportConverter.class);
2535
private static final String DESCRIPTION = "mzML Mass Spectra Export Converter";
2636

2737
@Override
2838
public IProcessingInfo<File> convert(File file, IScanMSD massSpectrum, boolean append, IProgressMonitor monitor) {
2939

30-
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
31-
processingInfo.addErrorMessage(DESCRIPTION, "It's not possible to export mass spectrum data as mzML yet.");
32-
return processingInfo;
40+
IMassSpectra massSpectra = new MassSpectra();
41+
massSpectra.addMassSpectrum(massSpectrum);
42+
return convert(file, massSpectra, append, monitor);
3343
}
3444

3545
@Override
3646
public IProcessingInfo<File> convert(File file, IMassSpectra massSpectra, boolean append, IProgressMonitor monitor) {
3747

48+
IProcessingInfo<File> processingInfo = validate(file, massSpectra);
49+
if(!processingInfo.hasErrorMessages()) {
50+
try {
51+
IMassSpectraWriter massSpectraWriter = new MassSpectrumWriterVersion110();
52+
massSpectraWriter.write(file, massSpectra, append, monitor);
53+
processingInfo.setProcessingResult(file);
54+
} catch(FileNotFoundException e) {
55+
logger.warn(e);
56+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotFound, file.getAbsolutePath()));
57+
} catch(FileIsNotWriteableException e) {
58+
logger.warn(e);
59+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotWritable, file.getAbsolutePath()));
60+
} catch(IOException e) {
61+
logger.warn(e);
62+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.failedToWriteFile, file.getAbsolutePath()));
63+
}
64+
}
65+
return processingInfo;
66+
}
67+
68+
private IProcessingInfo<File> validate(File file, IMassSpectra massSpectra) {
69+
3870
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
39-
processingInfo.addErrorMessage(DESCRIPTION, "It's not possible to export mass spectrum data as mzML yet.");
71+
processingInfo.addMessages(super.validate(file));
72+
processingInfo.addMessages(super.validate(massSpectra));
4073
return processingInfo;
4174
}
4275
}

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/plugin.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
importContentMatcher="org.eclipse.chemclipse.msd.converter.supplier.mzxml.converter.MassSpectrumFileContentMatcher"
2828
importConverter="org.eclipse.chemclipse.msd.converter.supplier.mzxml.converter.MassSpectrumImportConverter"
2929
importMagicNumberMatcher="org.eclipse.chemclipse.msd.converter.supplier.mzxml.converter.MagicNumberMatcher"
30-
isExportable="false"
30+
isExportable="true"
3131
isImportable="true">
3232
</MassSpectrumSupplier>
3333
</extension>

chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/converter/MassSpectrumExportConverter.java

+39-2
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,64 @@
1313
package org.eclipse.chemclipse.msd.converter.supplier.mzxml.converter;
1414

1515
import java.io.File;
16+
import java.io.FileNotFoundException;
17+
import java.io.IOException;
1618

19+
import org.eclipse.chemclipse.converter.exceptions.FileIsNotWriteableException;
20+
import org.eclipse.chemclipse.converter.l10n.ConverterMessages;
21+
import org.eclipse.chemclipse.logging.core.Logger;
22+
import org.eclipse.chemclipse.msd.converter.io.IMassSpectraWriter;
1723
import org.eclipse.chemclipse.msd.converter.massspectrum.AbstractMassSpectrumExportConverter;
24+
import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.io.MassSpectrumWriterVersion22;
1825
import org.eclipse.chemclipse.msd.model.core.IMassSpectra;
1926
import org.eclipse.chemclipse.msd.model.core.IScanMSD;
27+
import org.eclipse.chemclipse.msd.model.implementation.MassSpectra;
2028
import org.eclipse.chemclipse.processing.core.IProcessingInfo;
2129
import org.eclipse.chemclipse.processing.core.ProcessingInfo;
2230
import org.eclipse.core.runtime.IProgressMonitor;
31+
import org.eclipse.osgi.util.NLS;
2332

2433
public class MassSpectrumExportConverter extends AbstractMassSpectrumExportConverter {
2534

35+
private static final Logger logger = Logger.getLogger(MassSpectrumExportConverter.class);
36+
private static final String DESCRIPTION = "mzML Mass Spectra Export Converter";
37+
2638
@Override
2739
public IProcessingInfo<File> convert(File file, IScanMSD massSpectrum, boolean append, IProgressMonitor monitor) {
2840

29-
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
30-
return processingInfo;
41+
IMassSpectra massSpectra = new MassSpectra();
42+
massSpectra.addMassSpectrum(massSpectrum);
43+
return convert(file, massSpectra, append, monitor);
3144
}
3245

3346
@Override
3447
public IProcessingInfo<File> convert(File file, IMassSpectra massSpectra, boolean append, IProgressMonitor monitor) {
3548

49+
IProcessingInfo<File> processingInfo = validate(file, massSpectra);
50+
if(!processingInfo.hasErrorMessages()) {
51+
try {
52+
IMassSpectraWriter massSpectraWriter = new MassSpectrumWriterVersion22();
53+
massSpectraWriter.write(file, massSpectra, append, monitor);
54+
processingInfo.setProcessingResult(file);
55+
} catch(FileNotFoundException e) {
56+
logger.warn(e);
57+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotFound, file.getAbsolutePath()));
58+
} catch(FileIsNotWriteableException e) {
59+
logger.warn(e);
60+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.fileNotWritable, file.getAbsolutePath()));
61+
} catch(IOException e) {
62+
logger.warn(e);
63+
processingInfo.addErrorMessage(DESCRIPTION, NLS.bind(ConverterMessages.failedToWriteFile, file.getAbsolutePath()));
64+
}
65+
}
66+
return processingInfo;
67+
}
68+
69+
private IProcessingInfo<File> validate(File file, IMassSpectra massSpectra) {
70+
3671
IProcessingInfo<File> processingInfo = new ProcessingInfo<>();
72+
processingInfo.addMessages(super.validate(file));
73+
processingInfo.addMessages(super.validate(massSpectra));
3774
return processingInfo;
3875
}
3976
}

chemclipse/plugins/org.eclipse.chemclipse.xxd.converter.supplier.jcampdx/plugin.xml

+15-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,21 @@
2828
isExportable="false"
2929
isImportable="true">
3030
</DatabaseSupplier>
31-
</extension>
31+
</extension>
32+
<extension
33+
point="org.eclipse.chemclipse.msd.converter.massSpectrumSupplier">
34+
<MassSpectrumSupplier
35+
description="Reads and writes JCAMP-DX Mass Spectra"
36+
exportConverter="org.eclipse.chemclipse.msd.converter.supplier.jcampdx.converter.MassSpectrumExportConverter"
37+
fileExtension=".jdx"
38+
filterName="JCAMP-DX Mass Spectra (*.jdx)"
39+
id="org.eclipse.chemclipse.msd.converter.supplier.jcampdx.jdx"
40+
importConverter="org.eclipse.chemclipse.msd.converter.supplier.jcampdx.converter.MassSpectrumImportConverter"
41+
importMagicNumberMatcher="org.eclipse.chemclipse.msd.converter.supplier.jcampdx.io.MagicNumberMatcherMassSpectrum"
42+
isExportable="false"
43+
isImportable="false">
44+
</MassSpectrumSupplier>
45+
</extension>
3246
<extension
3347
point="org.eclipse.chemclipse.msd.converter.databaseSupplier">
3448
<DatabaseSupplier

0 commit comments

Comments
 (0)