|
What this is
Other links
The source code
package com.ice.syslogd;
import com.ice.syslog.SyslogDefs;
import com.ice.util.StringUtilities;
import java.lang.*;
import java.text.*;
import java.util.*;
/**
* The ConfigFormat class implements the code necessary
* to format and parse syslog configuration entries.
*
* @version $Revision: 1.1.1.1 $
* @author Timothy Gerard Endres,
* <a href="mailto:time@ice.com">time@ice.com.
* @see SyslogServer
*/
public class
ConfigFormat extends Format
{
public static final String RCS_ID = "$Id: ConfigFormat.java,v 1.1.1.1 1998/02/22 05:47:54 time Exp $";
public static final String RCS_REV = "$Revision: 1.1.1.1 $";
public static final String RCS_NAME = "$Name: $";
static public final char configSeparator = '.';
static public final String paramSeparator = " \t";
static public final String facilitySeparator = ",";
static public final ConfigFormat
getInstance()
{
return new ConfigFormat();
}
public
ConfigFormat()
{
super();
}
public String
format( ConfigEntry entry )
throws IllegalArgumentException
{
StringBuffer result =
new StringBuffer();
result.append
( "UNIMPLEMENTED: ConfigFormat.format( ConfigEntry )" );
return result.toString();
}
public StringBuffer
format( Object entry, StringBuffer appendTo, FieldPosition fieldPos )
throws IllegalArgumentException
{
// UNDONE - handle fieldPos!
String tmpFormat = this.format( (ConfigEntry)entry );
appendTo.append( tmpFormat );
return appendTo;
}
public ConfigEntry
parse( String source )
throws ParseException
{
return this.parseEntry( source );
}
public Object
parseObject( String source, ParsePosition pos )
{
ConfigEntry entry = null;
try {
entry = this.parseEntry( source );
}
catch ( ParseException ex )
{
entry = null;
}
return (Object) entry;
}
// UNDONE - all the positions in ParseExceptions are zero.
public ConfigEntry
parseEntry( String source )
throws ParseException
{
String entryStr = source;
String facilityStr = null;
String priorityStr = null;
String actionStr = null;
String matchStr = null;
String parameterStr = null;
String[] params = null;
int index, tabIdx, slashIdx;
int facility, priority;
int tokeCount;
StringTokenizer toker;
boolean hasMatch = false;
index = entryStr.indexOf( ConfigFormat.configSeparator );
if ( index < 0 )
{
throw new ParseException
( "configuration entry has no facility field", 0 );
}
facilityStr = entryStr.substring( 0, index );
entryStr = entryStr.substring( index + 1 );
index = entryStr.indexOf( ConfigFormat.configSeparator );
if ( index < 0 )
{
throw new ParseException
( "configuration entry has no priority field", 0 );
}
priorityStr = entryStr.substring( 0, index );
entryStr = entryStr.substring( index + 1 );
index = entryStr.indexOf( ' ' );
tabIdx = entryStr.indexOf( '\t' );
slashIdx = entryStr.indexOf( '/' );
if ( slashIdx > 0
&& ( index < 0 || slashIdx < index )
&& ( tabIdx < 0 || slashIdx < tabIdx ) )
{
// We have a regeular expression to match...
actionStr = entryStr.substring( 0, slashIdx );
entryStr = entryStr.substring( slashIdx + 1 );
slashIdx = entryStr.indexOf( '/' );
if ( slashIdx < 0 )
{
throw new ParseException
( "configuration entry has bad match expression", 0 );
}
else
{
hasMatch = true;
matchStr = entryStr.substring( 0, slashIdx );
if ( (slashIdx + 1) < entryStr.length() )
parameterStr = entryStr.substring( slashIdx + 1 );
else
parameterStr = null;
}
}
else if ( index < 0 && tabIdx < 0 )
{
actionStr = entryStr;
parameterStr = null;
}
else
{
if ( tabIdx >= 0 && tabIdx < index )
index = tabIdx;
actionStr = entryStr.substring( 0, index );
parameterStr = entryStr.substring( index + 1 );
}
if ( parameterStr != null )
{
params =
com.ice.util.StringUtilities.parseArgumentString
( parameterStr );
}
ConfigEntry result = new ConfigEntry();
SyslogAction action =
new SyslogAction( actionStr, params );
result.setAction( action );
if ( hasMatch )
{
result.setMatchExpr( matchStr );
}
if ( priorityStr.equals( "*" ) )
{
priority = SyslogDefs.LOG_ALL;
}
else
{
priority = SyslogDefs.getPriority( priorityStr );
}
for ( int i = 0 ; i < SyslogDefs.LOG_NFACILITIES ; ++i )
{
result.setFacilityLevel( i, -1 ); // UNDONE !!!
}
if ( facilityStr.equals( "*" ) )
{
for ( int i = 0 ; i < SyslogDefs.LOG_NFACILITIES ; ++i )
{
result.setFacilityLevel( i, priority );
}
}
else
{
toker = new StringTokenizer
( facilityStr, ConfigFormat.facilitySeparator );
tokeCount = toker.countTokens();
if ( tokeCount > 0 )
{
for ( int pIdx = 0 ; pIdx < tokeCount ; ++pIdx )
{
String facilityName = null;
try { facilityName = toker.nextToken(); }
catch ( NoSuchElementException ex )
{ break; }
facility = SyslogDefs.getFacility( facilityName );
result.setFacilityLevel( facility, priority );
}
}
}
return result;
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.