/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* 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:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.shell.internal.formatting;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.List;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.eclipse.virgo.kernel.model.management.ManageableArtifact;
public final class ConfigInstallArtifactCommandFormatter extends AbstractInstallArtifactCommandFormatter<ManageableArtifact> {
private final ConfigurationAdmin configurationAdmin;
public ConfigInstallArtifactCommandFormatter(ConfigurationAdmin configurationAdmin) {
this.configurationAdmin = configurationAdmin;
}
public List<String> formatExamine(ManageableArtifact artifact) {
List<String> lines = new ArrayList<String>();
Configuration configuration;
try {
configuration = this.configurationAdmin.getConfiguration(artifact.getName(), null);
} catch (IOException e) {
throw new RuntimeException(e);
}
String factoryPid = configuration.getFactoryPid();
String bundleLocation = configuration.getBundleLocation();
lines.add(String.format("Factory pid: %s", factoryPid == null ? "" : factoryPid));
lines.add(String.format("Bundle Location: %s", bundleLocation == null ? "" : bundleLocation));
lines.addAll(formatProperties(configuration));
return lines;
}
private List<String> formatProperties(Configuration configuration) {
List<String> lines = new ArrayList<String>();
List<String> propertyKeys = new ArrayList<String>();
Dictionary<String, Object> properties = configuration.getProperties();
if (properties != null) {
Enumeration<String> keys = properties.keys();
while (keys.hasMoreElements()) {
propertyKeys.add(keys.nextElement());
}
Collections.sort(propertyKeys);
lines.add("");
lines.add(String.format("Properties:"));
for (String propertyKey : propertyKeys) {
lines.add(String.format(" %s:", propertyKey));
List<String> values = PropertyFormatter.formatPropertyValue(properties.get(propertyKey), MAX_LINE_LENGTH);
for (String value : values) {
lines.add(String.format(" %s", value));
}
}
}
return lines;
}
}