/******************************************************************************* * Copyright (c) 2010 Neil Bartlett. * 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: * Neil Bartlett - initial API and implementation *******************************************************************************/ package bndtools.editor.model; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; public class ServiceComponentAttribs { // v1.0.0 attributes public final static String COMPONENT_NAME = "name:"; public final static String COMPONENT_FACTORY = "factory:"; public final static String COMPONENT_SERVICEFACTORY = "servicefactory:"; public final static String COMPONENT_IMMEDIATE = "immediate:"; public final static String COMPONENT_ENABLED = "enabled:"; public final static String COMPONENT_DYNAMIC = "dynamic:"; public final static String COMPONENT_MULTIPLE = "multiple:"; public final static String COMPONENT_PROVIDE = "provide:"; public final static String COMPONENT_OPTIONAL = "optional:"; public final static String COMPONENT_PROPERTIES = "properties:"; public final static String COMPONENT_IMPLEMENTATION = "implementation:"; // v1.1.0 attributes public final static String COMPONENT_VERSION = "version:"; public final static String COMPONENT_CONFIGURATION_POLICY = "configuration-policy:"; public final static String COMPONENT_MODIFIED = "modified:"; public final static String COMPONENT_ACTIVATE = "activate:"; public final static String COMPONENT_DEACTIVATE = "deactivate:"; private String name = null; private String factory = null; private Boolean serviceFactory = null; private Boolean immediate = null; private Boolean enabled = null; private List<String> provide = null; private String implementation = null; private ServiceComponentConfigurationPolicy configurationPolicy = null; private String activate = null; private String deactivate = null; private String modified = null; static ServiceComponentAttribs loadFrom(Map<String,String> map) { ServiceComponentAttribs result = new ServiceComponentAttribs(); result.name = map.get(COMPONENT_NAME); result.factory = map.get(COMPONENT_FACTORY); result.serviceFactory = parseNullableBoolean(map.get(COMPONENT_SERVICEFACTORY)); result.immediate = parseNullableBoolean(map.get(COMPONENT_IMMEDIATE)); result.enabled = parseNullableBoolean(map.get(COMPONENT_ENABLED)); result.provide = parseList(map.get(COMPONENT_PROVIDE)); result.implementation = map.get(COMPONENT_IMPLEMENTATION); try { String configPolicyStr = map.get(COMPONENT_CONFIGURATION_POLICY); ServiceComponentConfigurationPolicy configPolicy = configPolicyStr != null ? ServiceComponentConfigurationPolicy.valueOf(configPolicyStr) : null; result.configurationPolicy = configPolicy; } catch (IllegalArgumentException e) { result.configurationPolicy = null; } result.activate = map.get(COMPONENT_ACTIVATE); result.deactivate = map.get(COMPONENT_DEACTIVATE); result.modified = map.get(COMPONENT_MODIFIED); return result; } private static Boolean parseNullableBoolean(String string) { return string != null ? Boolean.parseBoolean(string) : null; } private static List<String> parseList(String string) { if (string == null) return null; List<String> result = new ArrayList<String>(); StringTokenizer tokenizer = new StringTokenizer(string, ","); while (tokenizer.hasMoreTokens()) { result.add(tokenizer.nextToken().trim()); } return result; } // Getters and Setters public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFactory() { return factory; } public void setFactory(String factory) { this.factory = factory; } public Boolean getServiceFactory() { return serviceFactory; } public void setServiceFactory(Boolean serviceFactory) { this.serviceFactory = serviceFactory; } public Boolean getImmediate() { return immediate; } public void setImmediate(Boolean immediate) { this.immediate = immediate; } public Boolean getEnabled() { return enabled; } public void setEnabled(Boolean enabled) { this.enabled = enabled; } public List<String> getProvide() { return provide; } public void setProvide(List<String> provide) { this.provide = provide; } public String getImplementation() { return implementation; } public void setImplementation(String implementation) { this.implementation = implementation; } public ServiceComponentConfigurationPolicy getConfigurationPolicy() { return configurationPolicy; } public void setConfigurationPolicy(ServiceComponentConfigurationPolicy configurationPolicy) { this.configurationPolicy = configurationPolicy; } public String getActivate() { return activate; } public void setActivate(String activate) { this.activate = activate; } public String getDeactivate() { return deactivate; } public void setDeactivate(String deactivate) { this.deactivate = deactivate; } public String getModified() { return modified; } public void setModified(String modified) { this.modified = modified; } }