//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // 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 // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.importing.services; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.eclipse.epf.authoring.ui.preferences.LibraryLocationData; import org.eclipse.epf.uma.MethodConfiguration; import org.eclipse.epf.uma.MethodPlugin; /** * Encapsulates the input data required to import a method plug-in. * * @author Jinhua Xi * @since 1.0 */ public class PluginImportData { // these are set by the wizard public LibraryLocationData llData = new LibraryLocationData(); public boolean deleteExistingPlugins; // these are filled in by the importing service public String libraryVersion; private List<PluginInfo> plugins = new ArrayList<PluginInfo>(); private List configs = new ArrayList(); private ErrorInfo error = new ErrorInfo(); // ap the guid to url for base plugin, this is the only formation available public Map basePluginUrlMap = new HashMap(); /** * Creates a new instance. */ public PluginImportData() { } /** * Clears the contents. */ public void clear() { plugins.clear(); configs.clear(); error.errorMessage.setLength(0); } /** * Validates the plugins. */ public void validatePlugins() { PluginInfo info; int i = 0; while (i < plugins.size()) { info = (PluginInfo) plugins.get(i); if (info.url == null) { plugins.remove(i); } else { i++; } } } /** * Returns a PluginInfo object given the guid. */ public PluginInfo getPluginInfo(String guid) { PluginInfo info; for (Iterator<PluginInfo> it = plugins.iterator(); it.hasNext();) { info = (PluginInfo) it.next(); if (info.guid.equals(guid)) { return info; } } return null; } /** * Removes a PluginInfo object given the guid. */ public void removePluginInfo(String guid) { PluginInfo info; for (Iterator<PluginInfo> it = plugins.iterator(); it.hasNext();) { info = (PluginInfo) it.next(); if (info.guid.equals(guid)) { plugins.remove(info); break; } } } /** * Returns a ConfiguarationInfo object given the guid. */ public ConfiguarationInfo getConfigInfo(String guid) { if ( guid == null ) { return null; } PluginImportData.ConfiguarationInfo cinfo; for (Iterator it = getConfigs().iterator(); it.hasNext();) { cinfo = (PluginImportData.ConfiguarationInfo) it.next(); if (guid.equals(cinfo.guid) ) { return cinfo; } } return null; } /** * return a list of PluginInfo object * * @return List a list of PluginInfo objects */ public List<PluginInfo> getPlugins() { return plugins; } /** * return a list of ConfigInfo objects * * @return List */ public List getConfigs() { return configs; } /** * return the error message if any * * @return String */ public ErrorInfo getErrorInfo() { return error; } public class PluginInfo { // If not null, this is a valid plug-in. public String url = null; public String name; public String guid; public String version; public String brief_desc; public String authors; public String changeDate; public List usedPlugins = new ArrayList(); // If null, this plug-in does not exists in the current library. public MethodPlugin existingPlugin = null; // If true, replace the current plug-in with the one in the import // library. If false, don't import the plug-in. public boolean selected = false; public PluginInfo() { } public String toString() { return name; } } public class ConfiguarationInfo { public String name; public String guid; public String version; // The current configuration. public MethodConfiguration existingConfig = null; public boolean selected = true; public ConfiguarationInfo() { } } public class ErrorInfo { private StringBuffer errorMessage = new StringBuffer(); public ErrorInfo() { } public void addError(String message) { errorMessage.append(message); } public String getError() { return errorMessage.toString(); } public void clear() { errorMessage.setLength(0); } } }