Skip to content

Commit

Permalink
Refactoring to support #31
Browse files Browse the repository at this point in the history
  • Loading branch information
Christoph Läubrich committed Sep 26, 2019
1 parent 3107cd2 commit 5bb4165
Show file tree
Hide file tree
Showing 12 changed files with 59 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
*******************************************************************************/
package org.eclipse.chemclipse.model.supplier;

import java.util.Collections;

import org.eclipse.chemclipse.model.core.IChromatogram;
import org.eclipse.chemclipse.model.selection.IChromatogramSelection;
import org.eclipse.chemclipse.processing.core.MessageConsumer;
import org.eclipse.chemclipse.processing.supplier.IProcessSupplier;
Expand All @@ -30,4 +33,18 @@ public interface IChromatogramSelectionProcessSupplier<SettingType> extends IPro
* @return the processed {@link IChromatogramSelection}
*/
IChromatogramSelection<?, ?> apply(IChromatogramSelection<?, ?> chromatogramSelection, SettingType processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor);

public static <T> IChromatogramSelection<?, ?> applyProcessor(IChromatogramSelection<?, ?> chromatogramSelection, IProcessSupplier<T> supplier, T processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor) {

if(supplier instanceof IChromatogramSelectionProcessSupplier<?>) {
IChromatogramSelectionProcessSupplier<T> chromatogramSelectionProcessSupplier = (IChromatogramSelectionProcessSupplier<T>)supplier;
return chromatogramSelectionProcessSupplier.apply(chromatogramSelection, processSettings, messageConsumer, monitor);
}
if(supplier instanceof IMeasurementProcessSupplier<?>) {
IMeasurementProcessSupplier<T> measurementProcessSupplier = (IMeasurementProcessSupplier<T>)supplier;
IChromatogram<?> chromatogram = chromatogramSelection.getChromatogram();
measurementProcessSupplier.applyProcessor(Collections.singleton(chromatogram), processSettings, messageConsumer, monitor);
}
return chromatogramSelection;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,13 @@ public interface IMeasurementProcessSupplier<ConfigType> extends IProcessSupplie
* @return the collection of processed measurements
*/
Collection<? extends IMeasurement> applyProcessor(Collection<? extends IMeasurement> measurements, ConfigType processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor);

public static <X> Collection<? extends IMeasurement> applyProcessor(Collection<? extends IMeasurement> measurements, IProcessSupplier<X> supplier, X processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor) {

if(supplier instanceof IMeasurementProcessSupplier<?>) {
IMeasurementProcessSupplier<X> measurementProcessSupplier = (IMeasurementProcessSupplier<X>)supplier;
return measurementProcessSupplier.applyProcessor(measurements, processSettings, messageConsumer, monitor);
}
return measurements;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ Export-Package: org.eclipse.chemclipse.processing;version="1.0.0",
org.eclipse.chemclipse.processing.detector;version="1.0.0",
org.eclipse.chemclipse.processing.filter;version="1.0.0",
org.eclipse.chemclipse.processing.supplier;version="1.0.0"
Import-Package: org.eclipse.chemclipse.support.settings.parser,
Import-Package: org.eclipse.chemclipse.support.settings,
org.eclipse.chemclipse.support.settings.parser,
org.eclipse.chemclipse.support.settings.serialization,
org.osgi.service.component.annotations;version="[1.0.0,2.0.0)"
Service-Component: OSGI-INF/org.eclipse.chemclipse.processing.internal.OSGiFilterFactory.xml
Bundle-ActivationPolicy: lazy
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@
* Contributors:
* Christoph Läubrich - initial API and implementation
*******************************************************************************/
package org.eclipse.chemclipse.xxd.process.support;
package org.eclipse.chemclipse.processing.supplier;

import java.io.IOException;

import org.eclipse.chemclipse.processing.supplier.IProcessSupplier;
import org.eclipse.chemclipse.support.settings.SystemSettingsStrategy;
import org.eclipse.chemclipse.support.settings.serialization.SettingsSerialization;

Expand All @@ -25,8 +24,6 @@
*/
public interface ProcessorPreferences<SettingType> {

public static final SettingsSerialization DEFAULT_SETTINGS_SERIALIZATION = new JSONSerialization();

public enum DialogBehavior {
/**
* The user should be queried each time
Expand Down Expand Up @@ -69,10 +66,7 @@ public enum DialogBehavior {
*
* @return the serialization used for the user settings
*/
default SettingsSerialization getSerialization() {

return DEFAULT_SETTINGS_SERIALIZATION;
}
SettingsSerialization getSerialization();

/**
* constructs a new settings instance from the current user settings
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
import java.util.function.Supplier;

import org.eclipse.chemclipse.processing.supplier.IProcessTypeSupplier;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences.DialogBehavior;
import org.eclipse.chemclipse.rcp.ui.icons.core.ApplicationImage;
import org.eclipse.chemclipse.rcp.ui.icons.core.ApplicationImageFactory;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences.DialogBehavior;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

import java.io.IOException;

import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences.DialogBehavior;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences.DialogBehavior;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
import java.util.Map;
import java.util.Map.Entry;

import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.support.settings.parser.InputValue;
import org.eclipse.chemclipse.ux.extension.xxd.ui.Activator;
import org.eclipse.chemclipse.ux.extension.xxd.ui.methods.SettingsUIProvider.SettingsUIControl;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.core.runtime.IStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import java.io.IOException;

import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Listener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
import java.util.function.Supplier;

import org.eclipse.chemclipse.processing.supplier.IProcessSupplier;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences.DialogBehavior;
import org.eclipse.chemclipse.xxd.process.support.ProcessTypeSupport;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences.DialogBehavior;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.eclipse.chemclipse.model.methods.ProcessEntry;
import org.eclipse.chemclipse.model.methods.ProcessMethod;
import org.eclipse.chemclipse.model.types.DataType;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.rcp.ui.icons.core.ApplicationImageFactory;
import org.eclipse.chemclipse.rcp.ui.icons.core.IApplicationImage;
import org.eclipse.chemclipse.support.ui.events.IKeyEventProcessor;
Expand All @@ -44,7 +45,6 @@
import org.eclipse.chemclipse.ux.extension.xxd.ui.swt.MethodListUI;
import org.eclipse.chemclipse.ux.extension.xxd.ui.swt.MethodUIConfig;
import org.eclipse.chemclipse.xxd.process.support.ProcessTypeSupport;
import org.eclipse.chemclipse.xxd.process.support.ProcessorPreferences;
import org.eclipse.chemclipse.xxd.process.ui.preferences.PreferencePageReportExport;
import org.eclipse.core.runtime.Adapters;
import org.eclipse.jface.dialogs.MessageDialog;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.function.Supplier;

import org.eclipse.chemclipse.model.selection.IChromatogramSelection;
import org.eclipse.chemclipse.model.supplier.IChromatogramSelectionProcessSupplier;
import org.eclipse.chemclipse.processing.core.DefaultProcessingResult;
import org.eclipse.chemclipse.processing.core.MessageProvider;
import org.eclipse.chemclipse.processing.supplier.IProcessSupplier;
Expand Down Expand Up @@ -74,7 +75,7 @@ public void execute(Shell shell, ScrollableChart scrollableChart) {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

DefaultProcessingResult<Object> msgs = new DefaultProcessingResult<>();
ProcessTypeSupport.applyProcessor(chromatogramSelection, processorSupplier, settings, msgs, monitor);
IChromatogramSelectionProcessSupplier.applyProcessor(chromatogramSelection, processorSupplier, settings, msgs, monitor);
updateResult(shell, msgs);
}
}, shell);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,28 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer;

import org.eclipse.chemclipse.csd.model.core.IChromatogramCSD;
import org.eclipse.chemclipse.csd.model.core.selection.ChromatogramSelectionCSD;
import org.eclipse.chemclipse.model.core.IChromatogram;
import org.eclipse.chemclipse.model.core.IMeasurement;
import org.eclipse.chemclipse.model.methods.IProcessEntry;
import org.eclipse.chemclipse.model.methods.IProcessMethod;
import org.eclipse.chemclipse.model.methods.ProcessEntry;
import org.eclipse.chemclipse.model.selection.IChromatogramSelection;
import org.eclipse.chemclipse.model.supplier.IChromatogramSelectionProcessSupplier;
import org.eclipse.chemclipse.model.supplier.IMeasurementProcessSupplier;
import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD;
import org.eclipse.chemclipse.msd.model.core.selection.ChromatogramSelectionMSD;
import org.eclipse.chemclipse.processing.DataCategory;
import org.eclipse.chemclipse.processing.core.IProcessingInfo;
import org.eclipse.chemclipse.processing.core.MessageConsumer;
import org.eclipse.chemclipse.processing.core.ProcessingInfo;
import org.eclipse.chemclipse.processing.supplier.IProcessSupplier;
import org.eclipse.chemclipse.processing.supplier.IProcessTypeSupplier;
import org.eclipse.chemclipse.wsd.model.core.IChromatogramWSD;
import org.eclipse.chemclipse.wsd.model.core.selection.ChromatogramSelectionWSD;
import org.eclipse.chemclipse.processing.supplier.ProcessorPreferences;
import org.eclipse.chemclipse.support.settings.serialization.SettingsSerialization;
import org.eclipse.chemclipse.xxd.process.Activator;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.runtime.IProgressMonitor;
Expand All @@ -56,6 +50,7 @@

public class ProcessTypeSupport {

public static final SettingsSerialization DEFAULT_SETTINGS_SERIALIZATION = new JSONSerialization();
private static final String KEY_USE_SYSTEM_DEFAULTS = "useSystemDefaults";
private static final String KEY_USER_SETTINGS = "userSettings";
private static final String KEY_ASK_FOR_SETTINGS = "askForSettings";
Expand Down Expand Up @@ -198,7 +193,7 @@ public <T, X> IProcessingInfo<T> applyProcessor(List<? extends IChromatogramSele
@Override
public void accept(IProcessSupplier<X> processSupplier, X settings) {

applyProcessor(chromatogramSelection, processSupplier, settings, processingInfo, convert.split(1));
IChromatogramSelectionProcessSupplier.applyProcessor(chromatogramSelection, processSupplier, settings, processingInfo, convert.split(1));
}
}, processingInfo);
}
Expand All @@ -214,7 +209,7 @@ public <X> Collection<? extends IMeasurement> applyProcessor(Collection<? extend
@Override
public void accept(IProcessSupplier<X> processor, X settings) {

result.set(applyProcessor(result.get(), processor, settings, messageConsumer, subMonitor.split(100)));
result.set(IMeasurementProcessSupplier.applyProcessor(result.get(), processor, settings, messageConsumer, subMonitor.split(100)));
}
}, messageConsumer);
return result.get();
Expand Down Expand Up @@ -262,40 +257,6 @@ public IStatus validate(IProcessEntry processEntry) {
}
}

public static <T> IChromatogramSelection<?, ?> applyProcessor(IChromatogramSelection<?, ?> chromatogramSelection, IProcessSupplier<T> supplier, T processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor) {

if(supplier instanceof IChromatogramSelectionProcessSupplier<?>) {
IChromatogramSelectionProcessSupplier<T> chromatogramSelectionProcessSupplier = (IChromatogramSelectionProcessSupplier<T>)supplier;
return chromatogramSelectionProcessSupplier.apply(chromatogramSelection, processSettings, messageConsumer, monitor);
}
if(supplier instanceof IMeasurementProcessSupplier<?>) {
IMeasurementProcessSupplier<T> measurementProcessSupplier = (IMeasurementProcessSupplier<T>)supplier;
IChromatogram<?> chromatogram = chromatogramSelection.getChromatogram();
Collection<? extends IMeasurement> collection = measurementProcessSupplier.applyProcessor(Collections.singleton(chromatogram), processSettings, messageConsumer, monitor);
for(IMeasurement measurement : collection) {
if(measurement == chromatogram) {
return chromatogramSelection;
} else if(measurement instanceof IChromatogramMSD) {
return new ChromatogramSelectionMSD((IChromatogramMSD)measurement);
} else if(measurement instanceof IChromatogramCSD) {
return new ChromatogramSelectionCSD((IChromatogramCSD)measurement);
} else if(measurement instanceof IChromatogramWSD) {
return new ChromatogramSelectionWSD((IChromatogramWSD)measurement);
}
}
}
return chromatogramSelection;
}

public static <X> Collection<? extends IMeasurement> applyProcessor(Collection<? extends IMeasurement> measurements, IProcessSupplier<X> supplier, X processSettings, MessageConsumer messageConsumer, IProgressMonitor monitor) {

if(supplier instanceof IMeasurementProcessSupplier<?>) {
IMeasurementProcessSupplier<X> measurementProcessSupplier = (IMeasurementProcessSupplier<X>)supplier;
return measurementProcessSupplier.applyProcessor(measurements, processSettings, messageConsumer, monitor);
}
return measurements;
}

private static final class ProcessEntryProcessorPreferences<T> implements ProcessorPreferences<T> {

private IProcessEntry processEntry;
Expand Down Expand Up @@ -359,6 +320,12 @@ public String getUserSettingsAsString() {

return processEntry.getJsonSettings();
}

@Override
public SettingsSerialization getSerialization() {

return DEFAULT_SETTINGS_SERIALIZATION;
}
}

private static final class NodeProcessorPreferences<T> implements ProcessorPreferences<T> {
Expand Down Expand Up @@ -459,5 +426,11 @@ public IProcessSupplier<T> getSupplier() {

return supplier;
}

@Override
public SettingsSerialization getSerialization() {

return DEFAULT_SETTINGS_SERIALIZATION;
}
}
}

0 comments on commit 5bb4165

Please sign in to comment.