blob: 6aedd6ff40dc9fc78d71d17474ee225a6948b8b4 [file] [log] [blame]
package jpos.util;
///////////////////////////////////////////////////////////////////////////////
//
// This software is provided "AS IS". The JavaPOS working group (including
// each of the Corporate members, contributors and individuals) MAKES NO
// REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NON-INFRINGEMENT. The JavaPOS working group shall not be liable for
// any damages suffered as a result of using, modifying or distributing this
// software or its derivatives. Permission to use, copy, modify, and distribute
// the software and its documentation for any purpose is hereby granted.
//
// The JavaPOS Config/Loader (aka JCL) is now under the CPL license, which
// is an OSS Apache-like license. The complete license is located at:
// http://oss.software.ibm.com/developerworks/opensource/license-cpl.html
//
///////////////////////////////////////////////////////////////////////////////
import java.util.Iterator;
import java.util.Enumeration;
import java.util.List;
/**
* Sample interface that contains constants for all the JposProperties (names, default
* values, etc...) and some methods that the implementing property class must define.
* @since 1.2 (NY 2K 99 meeting)
* @author E. Michael Maximilien (maxim@us.ibm.com)
*/
public interface JposProperties extends JposPropertiesConst
{
//-------------------------------------------------------------------------
// Public methods
//
/**
* Loads the jpos.properties file from the "./jpos/res" directory
* @since 1.2 (NY 2K meeting)
*/
public void loadJposProperties();
/**
* @return true if the properties are loaded
* @since 1.3 (Washington DC 2001 meeting)
*/
public boolean isLoaded();
/**
* @return the String property by name specified looking in System then the "jpos.properties" resource bundle
* @param propName the property name to search for
* @since 1.2 (NY 2K meeting)
*/
public String getPropertyString( String propName );
/**
* @return true if this property is defined in the Java System properties or in
* the jpos.properties resource file
* @param propName the property name to look for
* @since 1.2 (NY 2K meeting)
*/
public boolean isPropertyDefined( String propName );
/**
* @return an enumeration of properties names defined
* @since 1.2 (NY 2K meeting)
*/
public Enumeration getPropertyNames();
/**
* @return a List of property value parsed from the property value found
* for the property name
* @param propName the property name for which the values will be parsed from
* @since 2.1.0
*/
public List getStringListProperty( String propName );
/**
* @return the MultiProperty by the name passed. MultiProperty are properties
* named like <propName>.<n> where n = 0, 1, ... If the multi-property does not
* exist then null is returned
* @param multiPropName the multi-property name
* @since 1.3 (Wahington DC 2001 meeting)
*/
public JposProperties.MultiProperty getMultiProperty( String multiPropName );
/**
* @return true if the MultiProperty by the name passed exist otherwise false
* @param multiPropName the multi-property name
* @since 1.3 (Wahington DC 2001 meeting)
*/
public boolean hasMultiProperty( String multiPropName );
/**
* @return an iterator of JposProperties.Prop for all the properties in this
* JposProperties. Changes to these properties do not affect the JposProperties properties
* @see jpos.util.JposProperties.Prop
* @since 1.3 (Washington DC 2001)
*/
public Iterator getProps();
/**
* @return the number of properties in this JposProperties
* @since 1.3 (Washington DC 2001 meeting)
*/
public int size();
//-------------------------------------------------------------------------
// Public inner interfaces
//
/**
* Speficies an interface used for returning multi properties. That is
* properties that are named like <name>.x where x = 0, 1, ...x
* @author E. Michael Maximilien (maxim@us.ibm.com)
* @since 1.3 (Washington DC 2001 meeting)
*/
public interface MultiProperty
{
/**
* @return the number of this property name that is for property <propName>.x returns x
* @param propName the property name to get the number of
* @throws java.lang.IllegalArgumentException if the property name does not follow the <propName>.x name pattern
*/
public int propertyNumber( String propName ) throws IllegalArgumentException;
/**
* @return the base property name for this multi-property that is the
* name w/o the number suffix
*/
public String getBasePropertyName();
/** @return an iterator of the property names for this multi-property */
public Iterator getPropertyNames();
/** @return an iterator of the property names alphabetically sorted for this multi-property */
public Iterator getSortedPropertyNames();
/** @return an iterator of the property values for this multi-property */
public Iterator getPropertyValues();
/**
* @return the value for this property from the full property name
* @param propName the full property name <name>.x
*/
public String getPropertyString( String propName );
/**
* @return the value for this property from the full property name
* @param number suffix for the property name
* @throws java.lang.IllegalArgumentException if the i negative
*/
public String getPropertyString( int i ) throws IllegalArgumentException;
/** @return the number of properties defined in this multi-property */
public int getNumberOfProperties();
}
/**
* Simple wrapper class for a property pair <name, value>
* @author E. Michael Maximilien (maxim@us.ibm.com)
* @since 1.3 (Washington DC 2001)
*/
public interface Prop extends Comparable
{
/** @return the name of this property */
public String getName();
/** @return the value of this property */
public String getValue();
/**
* Sets the value of this property
* @param s the new prop name
*/
public void setName( String s );
/**
* Sets the value of this property
* @param s the name String
*/
public void setValue( String s );
/**
* @return 0 if 2 objects same -1 if this is less or +1 if this is more than other
* @param other the other object to compare against this
*/
public int compareTo( JposProperties.Prop other );
/**
* @return 0 if 2 objects same -1 if this is less or +1 if this is more than other
* @param other the other object to compare against this
*/
public int compareTo( Object other );
}
//-------------------------------------------------------------------------
// Public static constants
//
public static final String TRACING_PROP_NAME = "jpos.util.tracing";
public static final String TRACING_ON_PROP_VALUE = "ON";
public static final String TRACING_TRUE_PROP_VALUE = "TRUE";
}