package org.isatools.isacreator.validateconvert.ui; import org.apache.log4j.Level; import org.apache.log4j.spi.LoggingEvent; import org.isatools.errorreporter.model.*; import org.isatools.errorreporter.ui.ErrorReporterView; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.managers.ApplicationManager; import org.isatools.isacreator.model.Assay; import org.isatools.isacreator.settings.ISAcreatorProperties; import org.isatools.isatab.gui_invokers.AllowedConversions; import org.isatools.isatab.gui_invokers.GUIISATABConverter; import org.isatools.isatab.gui_invokers.GUIInvokerResult; import org.isatools.tablib.utils.BIIObjectStore; import org.isatools.tablib.utils.logging.TabLoggingEventWrapper; import uk.ac.ebi.utils.collections.Pair; import javax.swing.*; import java.awt.*; import java.util.*; import java.util.List; /** * User: eamonnmaguire * Date: 01/09/2014 * Time: 10:54 * To change this template use File | Settings | File Templates. */ public class CommonValidationConversionUI extends JFrame { private ImageIcon conversionSuccess = new ImageIcon("/images/validator/conversion_successful.png"); private ImageIcon validationSuccess = new ImageIcon("/images/validator/validation_successful.png"); public JPanel swappableContainer; protected void swapContainers(final Container newContainer) { SwingUtilities.invokeLater(new Runnable() { public void run() { if (newContainer != null) { swappableContainer.removeAll(); swappableContainer.add(newContainer); swappableContainer.repaint(); swappableContainer.validate(); swappableContainer.updateUI(); newContainer.validate(); newContainer.repaint(); validate(); repaint(); } } }); } protected Map<String, List<ErrorMessage>> getErrorMessages(List<TabLoggingEventWrapper> logEvents) { Map<String, List<ErrorMessage>> fileToErrors = new HashMap<String, List<ErrorMessage>>(); for (TabLoggingEventWrapper event : logEvents) { String fileName = ErrorUtils.extractFileInformation(event.getLogEvent()); if (fileName != null) { if (event.getLogEvent().getLevel().toInt() >= Level.WARN_INT) { if (!fileToErrors.containsKey(fileName)) { fileToErrors.put(fileName, new ArrayList<ErrorMessage>()); } fileToErrors.get(fileName).add(new ErrorMessage(event.getLogEvent().getLevel() == Level.WARN ? ErrorLevel.WARNING : ErrorLevel.ERROR, event.getLogEvent().getMessage().toString())); } } } return fileToErrors; } protected void displayValidationErrorsAndWarnings(Map<String, List<ErrorMessage>> fileToErrors) { List<ISAFileErrorReport> errors = new ArrayList<ISAFileErrorReport>(); for (String fileName : fileToErrors.keySet()) { Pair<Assay, FileType> assayAndType = ValidationUtils.resolveFileTypeFromFileName(fileName, ApplicationManager.getCurrentApplicationInstance().getDataEntryEnvironment().getInvestigation()); errors.add(new ISAFileErrorReport(fileName, assayAndType.fst != null ? assayAndType.fst.getTechnologyType() : "", assayAndType.fst != null ? assayAndType.fst.getMeasurementEndpoint() : "", assayAndType.snd, fileToErrors.get(fileName))); } if (fileToErrors.size() > 0) { ErrorReporterView view = new ErrorReporterView(errors); view.setPreferredSize(new Dimension(750, 440)); view.createGUI(); view.add(UIHelper.createLabel("<html>Validation performed using <i>" + ISAcreatorProperties.getProperty(ISAcreatorProperties.CURRENT_CONFIGURATION) + "</i></html>"), BorderLayout.SOUTH); swapContainers(view); } else { Container successfulValidationContainer = UIHelper.padComponentVerticalBox(70, new JLabel(validationSuccess)); swapContainers(successfulValidationContainer); } } protected GUIInvokerResult convertISAtab(BIIObjectStore store, AllowedConversions conversion, String isatabLocation, String outputLocation) { GUIISATABConverter converter = new GUIISATABConverter(); GUIInvokerResult result = converter.convert(store, isatabLocation, outputLocation, conversion); if (result == GUIInvokerResult.SUCCESS) { Box successContainer = Box.createVerticalBox(); successContainer.add(Box.createVerticalStrut(50)); successContainer.add(UIHelper.wrapComponentInPanel(new JLabel(conversionSuccess))); successContainer.add(UIHelper.wrapComponentInPanel(UIHelper.createLabel("<html>" + "<b>Conversion was a success.</b>" + "<p>Files stored in " + outputLocation + "</p>" + "</html>", UIHelper.VER_11_PLAIN, UIHelper.DARK_GREEN_COLOR))); swapContainers(successContainer); } else { java.util.List<ErrorMessage> messages = new ArrayList<ErrorMessage>(); for (TabLoggingEventWrapper tlew : converter.getLog()) { LoggingEvent le = tlew.getLogEvent(); if (le.getLevel() == Level.ERROR) { messages.add(new ErrorMessage(ErrorLevel.ERROR, le.getMessage().toString())); } } ErrorUI errorContainer = new ErrorUI(); errorContainer.constructErrorPane(messages, "Conversion"); errorContainer.setPreferredSize(new Dimension(650, 440)); swapContainers(errorContainer); } return result; } }