Mozilla/mozilla/cmd/dialup/java/plugin/NameValueSet.java
timm b45b7eeb9d Lots of changes for 2 step
git-svn-id: svn://10.0.0.236/trunk@444 18797224-902f-48f8-a5cc-f745e15eee43
1998-04-21 06:59:12 +00:00

254 lines
7.1 KiB
Java

/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.npasw;
//import Trace;
import java.io.*;
import java.lang.*;
import java.util.*;
class FileCreationException extends Exception
{
public FileCreationException( String s )
{
super( s );
}
}
class MalformedNameValueStringException extends Exception
{
public MalformedNameValueStringException( String s )
{
super( s );
}
}
public class NameValueSet
{
Hashtable nameValuePairs;
boolean ignoreSections = false;
final static int READ_AHEAD = 8192;
protected void init()
{
nameValuePairs = new Hashtable();
}
protected void initWithFile( File inputFile, boolean ignoreSects ) throws Exception
{
init();
if ( inputFile == null )
throw new NullPointerException( "constructor for NameValueSet requires non-null parameter" );
ignoreSections = ignoreSects;
if ( inputFile.exists() == false )
return;
Trace.TRACE("parsing NameValueSet: " + inputFile.getAbsolutePath() );
BufferedReader bufferedReader = new BufferedReader( new FileReader( inputFile ) );
this.read( bufferedReader );
}
public NameValueSet()
{
// * XXX
init();
}
/*
@param inputFile file to be parsed into nameValuePairs
*/
public NameValueSet( File inputFile, boolean ignoreSects ) throws Exception
{
initWithFile( inputFile, ignoreSects );
}
public NameValueSet( File inputFile ) throws Exception
{
initWithFile( inputFile, false );
}
/*
@param nvPairs string in the form "name1=value2&name2=value2&..." to
be parsed into nameValuePairs
*/
public NameValueSet( String nvPairs ) throws Exception
{
nameValuePairs = new Hashtable();
StringReader stringReader = new StringReader( nvPairs );
int ch = 0;
StringBuffer buffer = new StringBuffer();
String name = null;
String value = null;
ch = stringReader.read();
while ( ch != -1 )
{
buffer.setLength( 0 );
while ( ch == ' ' )
ch = stringReader.read();
while ( ch != -1 && ch != '=' && ch != ' ' )
{
buffer.append( (char)ch );
ch = stringReader.read();
}
if ( ch == ' ' )
{
while ( ch == ' ' )
ch = stringReader.read();
}
if ( ch == '=' )
{
name = new String( buffer );
buffer.setLength( 0 );
ch = stringReader.read();
while ( ch == ' ' )
ch = stringReader.read();
while ( ch != -1 && ch != ' ' )
{
buffer.append( (char)ch );
ch = stringReader.read();
}
value = new String( buffer );
nameValuePairs.put( name, value );
if ( ch == ' ' )
{
while ( ch == ' ' )
ch = stringReader.read();
}
}
}
}
private void readLine( String line )
{
if ( !line.startsWith( IniFileData.COMMENT_PREFIX ) )
{
int equalsSignAt = line.indexOf( "=" );
if ( equalsSignAt != -1 )
{
String nameString = new String( line.substring( 0, equalsSignAt ).trim() );
String valueString = new String( line.substring( ++equalsSignAt ).trim() );
//Trace.TRACE( "name: " + nameString + " value: " + valueString );
if ( nameString.length() != 0 && valueString.length() != 0 )
nameValuePairs.put( nameString, valueString );
}
}
}
public void read( BufferedReader reader ) throws Exception
{
reader.mark( READ_AHEAD );
String line = reader.readLine();
while ( line != null )
{
//Trace.TRACE( "line: " + line );
if ( ignoreSections || !line.startsWith( IniFileData.SECTION_PREFIX ) )
{
reader.mark( READ_AHEAD );
this.readLine( line );
line = reader.readLine();
}
else
{
reader.reset();
break;
}
}
}
public void write( BufferedWriter writer ) throws Exception
{
for ( Enumeration names = nameValuePairs.keys(); names.hasMoreElements(); )
{
String name = (String)names.nextElement();
String value = (String)nameValuePairs.get( name );
writer.write( name + "=" + value );
writer.newLine();
}
}
public boolean unsetName( String inputName )
{
if ( nameValuePairs.remove( inputName ) != null )
return true;
return false;
}
public boolean containsNameValuePair( NameValuePair inputNVPair )
{
String value = (String)nameValuePairs.get( inputNVPair.name );
if ( value != null && ( value.compareTo( inputNVPair.value ) == 0 ) )
return true;
return false;
}
public boolean isSubsetOf( NameValueSet inputNVSet )
{
for ( Enumeration names = nameValuePairs.keys(); names.hasMoreElements(); )
{
String name = (String)names.nextElement();
String value = (String)nameValuePairs.get( name );
if ( !inputNVSet.containsNameValuePair( new NameValuePair( name, value ) ) )
return false;
}
return true;
}
public String getValue( String name )
{
String result;
result = (String)nameValuePairs.get( name );
if ( result == null )
return new String( "" );
else
return result;
}
public void setValue( String name, String value )
{
nameValuePairs.put( name, value );
}
public final void printNameValueSet()
{
for ( Enumeration names = nameValuePairs.keys(); names.hasMoreElements(); )
{
String name = (String)names.nextElement();
String value = (String)nameValuePairs.get( name );
Trace.PrintToConsole( "name: " + name + " value: " + value );
}
}
}