Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2011 SAP AG 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: Lazar Kirchev, SAP AG - initial API and implementation /
 
 
 package org.eclipse.equinox.console.commands;
 
 import java.net.URL;
 import java.util.List;
 
Converter for the arguments of the migrated equinox commands.
 
 public class EquinoxCommandsConverter implements Converter {
 	
 		this. = context;
 	}
 	
 	public Object convert(Class<?> desiredTypeObject inthrows Exception {
 		if(desiredType == Bundle[].class) {
 			if (in instanceof String) {
 				if("*".equals((Stringin)) {
 					return .getBundles();
 				}
 			} else if (in instanceof List<?>) {
 				List<?> args = (List<?>) in;
 				if (checkStringElements(args)) {
 					try {
 						ArrayList<Bundlebundles = new ArrayList<Bundle>();
 						for (Object arg : args) {
 							long id = Long.parseLong((String)arg);
 							bundles.add(.getBundle(id));
 						}
 						return bundles.toArray(new Bundle[0]);
 					} catch (Exception e) {
 						return null;
 					}
 				}
 			}
 		}
 		
 		if(desiredType == Bundle.class) {
 			Bundle bundle = null;
 			try {
 				long id = Long.parseLong((Stringin);
 				bundle = .getBundle(id);
 			} catch (NumberFormatException nfe) {
 
 				// if not found, assume token is either symbolic name@version, or location
 				String symbolicName = (Stringin;
 				Version version = null;
 
 				// check for @ -- this may separate either the version string, or be part of the
 				// location
 				int ix = symbolicName.indexOf("@"); //$NON-NLS-1$
 				if (ix != -1) {
 					if ((ix + 1) != symbolicName.length()) {
 						try {
 							// if the version parses, then use the token prior to @ as a symbolic name
 							version = Version.parseVersion(symbolicName.substring(ix + 1, symbolicName.length()));
 							symbolicName = symbolicName.substring(0, ix);
 						} catch (IllegalArgumentException e) {
 							// version doesn't parse, assume token is symbolic name without version, or location
 						}
 					}
 				}
 
 				Bundle[] bundles = .getBundles();
 				for (Bundle b : bundles) {
 					
 					// if symbolicName matches, then matches if there is no version specific on command, or the version matches
 					// if there is no version specified on command, pick first matching bundle
 					if ((symbolicName.equals(b.getSymbolicName()) && (version == null || version.equals(b.getVersion()))) || ((String)in).equals(b.getLocation())) {
 						bundle = b;
 						break;
 					}
 				}
 			}
 			return bundle;
 		}
 		
 		if (desiredType == URL.class) {
 			URL url = null;
			try {
				url = new URL((Stringin);
catch (Exception e) {
				//do nothing
			}
			return url;
		}
		return null;
	}
	private boolean checkStringElements(List<?> list) {
		for (Object element : list) {
			if (!(element instanceof String)) {
				return false;
			}
		}
		return true;
	}
	public CharSequence format(Object targetint levelConverter escapethrows Exception {
		if (target instanceof Dictionary<?, ?>) {
			Dictionary<?, ?> dic = (Dictionary<?, ?>) target;
			return printDictionary(dic);
		}
		if (target instanceof List<?>) {
			List<?> list = (List<?>) target;
				StringBuilder builder = new StringBuilder();
				for(Object dic : list) {
					builder.append("Bundle headers:\r\n");
					builder.append(printDictionary((Dictionary<?, ?>)dic));
					builder.append("\r\n");
					builder.append("\r\n");
				}
				return builder.toString();
			}
		}
		return null;
	}
	private boolean checkDictionaryElements(List<?> list) {
		for (Object element : list) {
			if (!(element instanceof Dictionary<?, ?>)) {
				return false;
			}
		}
		return true;
	}
	private String printDictionary(Dictionary<?, ?> dic) {
		int count = dic.size();
		String[] keys = new String[count];
		Enumeration<?> keysEnum = dic.keys();
		int i = 0;
		while (keysEnum.hasMoreElements()) {
			keys[i++] = (StringkeysEnum.nextElement();
		}
		Util.sortByString(keys);
		StringBuilder builder = new StringBuilder();
		for (i = 0; i < counti++) {
			builder.append(" " + keys[i] + " = " + dic.get(keys[i])); //$NON-NLS-1$//$NON-NLS-2$
			builder.append("\r\n");
		}
		builder.append("\r\n");
		return builder.toString();
	}
New to GrepCode? Check out our FAQ X