001 /**
002 * Copyright 2005-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.kew.engine.node.var;
017
018 /**
019 * Represents a property that can be accessed relative to a specific "scheme".
020 * Property format: <code>[scheme:]locator</code>
021 * <dl>
022 * <dt>scheme</dt>
023 * <dd>The "scheme" of the property, which is implemented by a PropertyScheme implementation to
024 * resolve the locator to an actual value</dd>
025 * <dt>locator</dt>
026 * <dd>PropertyScheme-implementation-specific property name or URI</dd>
027 * </dl>
028 *
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031 public final class Property {
032 /**
033 * The property scheme (e.g. var:, url:, file:
034 */
035 public String scheme;
036 /**
037 * The property locator; in the case of a variable it is a name; in the case of a url, a url;
038 * in the case of a file, a file path
039 */
040 public String locator;
041
042 /**
043 * Parses the scheme and locator from a property name/locator string
044 * @param string the property name/locator
045 */
046 public Property(String string) {
047 int i = string.indexOf(':');
048 if (i == -1) {
049 locator = string;
050 } else {
051 if (i > 0) {
052 scheme = string.substring(0, i);
053 }
054 locator = string.substring(i + 1);
055 }
056 }
057
058 /**
059 * Initialized the property with specified scheme and locator
060 * @param scheme the scheme
061 * @param locator the locator
062 */
063 public Property(String scheme, String locator) {
064 this.scheme = scheme;
065 this.locator = locator;
066 }
067
068 public String toString() {
069 return "[Property: scheme=" + scheme + ", locator=" + locator + "]";
070 }
071 }