| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with this |
| * work for additional information regarding copyright ownership. The ASF |
| * licenses this file to You under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package org.apache.sling.provisioning.model; |
| |
| import java.util.Dictionary; |
| import java.util.Hashtable; |
| |
| |
| /** |
| * A configuration has either |
| * - a pid |
| * - or a factory pid and an alias (pid) |
| * and properties. |
| */ |
| public class Configuration extends Commentable implements Comparable<Configuration> { |
| |
| /** The pid. */ |
| private final String pid; |
| /** The factory pid. */ |
| private final String factoryPid; |
| /** The properties. */ |
| private final Dictionary<String, Object> properties = new Hashtable<String, Object>(); |
| |
| /** |
| * Create a new configuration |
| * @param pid The pid or alias for a factory pid |
| * @param factoryPid The factory pid |
| */ |
| public Configuration(final String pid, final String factoryPid) { |
| this.pid = (pid != null ? pid.trim() : null); |
| this.factoryPid = (factoryPid != null ? factoryPid.trim() : null); |
| } |
| |
| private int compareString(final String a, final String b) { |
| if ( a == null ) { |
| if ( b == null ) { |
| return 0; |
| } |
| return -1; |
| } |
| if ( b == null ) { |
| return 1; |
| } |
| return a.compareTo(b); |
| } |
| |
| @Override |
| public int compareTo(final Configuration o) { |
| int result = compareString(this.factoryPid, o.factoryPid); |
| if ( result == 0 ) { |
| result = compareString(this.pid, o.pid); |
| } |
| return result; |
| } |
| |
| |
| /** |
| * Get the pid. |
| * If this is a factory configuration, it returns the alias for the configuration |
| * @return The pid. |
| */ |
| public String getPid() { |
| return this.pid; |
| } |
| |
| /** |
| * Return the factory pid |
| * @return The factory pid or null. |
| */ |
| public String getFactoryPid() { |
| return this.factoryPid; |
| } |
| |
| /** |
| * Is this a special configuration? |
| * @return Special config |
| */ |
| public boolean isSpecial() { |
| if ( pid != null && pid.startsWith(":") ) { |
| return true; |
| } |
| return false; |
| } |
| |
| /** |
| * Get all properties of the configuration. |
| * @return The properties |
| */ |
| public Dictionary<String, Object> getProperties() { |
| return this.properties; |
| } |
| |
| @Override |
| public String toString() { |
| return "Configuration [pid=" + pid |
| + ", factoryPid=" + factoryPid |
| + ", properties=" + properties |
| + ( this.getLocation() != null ? ", location=" + this.getLocation() : "") |
| + "]"; |
| } |
| } |