/******************************************************************************* * Copyright (c) 2009, 2010 Progress Software Corporation. * 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 ******************************************************************************/ // Copyright (c) 2009 Progress Software Corporation. package org.fusesource.tools.message.utils; import java.io.File; import java.io.IOException; import java.util.StringTokenizer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.actions.WorkspaceModifyOperation; import org.fusesource.tools.core.message.Message; import org.fusesource.tools.message.MessageConstants; import org.fusesource.tools.message.extensions.IMessageType; public class MessageManager { // singleton?? public MessageManager() { super(); } public static Message loadMessage(String fileToSend) { MessageSAXParser parser = new MessageSAXParser(); MessageMetaInfo metaData = parser.parse(fileToSend); IMessageType msgProvider = MessageExtensionsMgr.getInstance().getMessageTypeExtension(metaData.getType(), metaData.getProviderId()); return msgProvider.load(fileToSend); } public static Message loadMessage(File file) { MessageSAXParser parser = new MessageSAXParser(); MessageMetaInfo metaData = parser.parse(file); IMessageType msgProvider = MessageExtensionsMgr.getInstance().getMessageTypeExtension(metaData.getType(), metaData.getProviderId()); return msgProvider.load(file); } public static Message loadMessage(IFile ifile) { MessageSAXParser parser = new MessageSAXParser(); MessageMetaInfo metaData = parser.parse(ifile); IMessageType msgProvider = MessageExtensionsMgr.getInstance().getMessageTypeExtension(metaData.getType(), metaData.getProviderId()); return msgProvider.load(ifile); } public static void save(final IFile file, final Message msgToSave, IProgressMonitor monitor) throws Exception { WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { // This is the method that gets invoked when the operation runs. @Override public void execute(IProgressMonitor monitor) { try { EMFUtil.saveMessageToDisk(file, msgToSave); file.refreshLocal(1, monitor); } catch (IOException e) { e.printStackTrace(); MessageDialog.openError(Display.getCurrent().getActiveShell(), "Failed to save the Message.", e .getMessage()); } catch (CoreException e) { e.printStackTrace(); } } }; new ProgressMonitorDialog(Display.getCurrent().getActiveShell()).run(true, false, operation); } public static boolean doMatch(IMessageType messageType, String extension) { String extensionType = messageType.getSupportedFileExtension(); if (extensionType != null && extensionType.trim().length() > 0) { extensionType = extensionType.trim(); if (extensionType.contains(MessageConstants.SUPPORTED_EXTENSION_TYPE_DELIM)) { StringTokenizer stringTokenizer = new StringTokenizer(extensionType, MessageConstants.SUPPORTED_EXTENSION_TYPE_DELIM); while (stringTokenizer.hasMoreElements()) { String token = (String) stringTokenizer.nextElement(); if (token.equalsIgnoreCase(extension)) { return true; } } } else { if (extensionType.equalsIgnoreCase(extension)) { return true; } } } return false; } public static String getExtension(Object object) { String extension = null; if (object instanceof IFile) { extension = ((IFile) object).getFileExtension(); } else if (object instanceof String) { String fileUrl = ((String) object); StringTokenizer stringTokenizer = new StringTokenizer(fileUrl, "."); while (stringTokenizer.hasMoreElements()) { String token = (String) stringTokenizer.nextElement(); extension = token; } } return extension; } }