Browse Source

Pushed initializer code into separate methods

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271865 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
53893e34fb
1 changed files with 95 additions and 91 deletions
  1. +95
    -91
      proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java

+ 95
- 91
proposal/myrmidon/src/java/org/apache/aut/nativelib/Os.java View File

@@ -37,115 +37,51 @@ public class Os
public final static OsFamily OS_FAMILY_WINDOWS = new OsFamily( "windows" ); public final static OsFamily OS_FAMILY_WINDOWS = new OsFamily( "windows" );


/** All DOS based OSes. */ /** All DOS based OSes. */
public final static OsFamily OS_FAMILY_DOS
= new OsFamily( "dos" );
public final static OsFamily OS_FAMILY_DOS = new OsFamily( "dos" );


/** All Windows NT based OSes. */ /** All Windows NT based OSes. */
public final static OsFamily OS_FAMILY_WINNT
= new OsFamily( "nt", new OsFamily[]{OS_FAMILY_WINDOWS} );
public final static OsFamily OS_FAMILY_WINNT =
new OsFamily( "nt", new OsFamily[]{OS_FAMILY_WINDOWS} );


/** All Windows 9x based OSes. */ /** All Windows 9x based OSes. */
public final static OsFamily OS_FAMILY_WIN9X
= new OsFamily( "win9x", new OsFamily[]{OS_FAMILY_WINDOWS, OS_FAMILY_DOS} );
public final static OsFamily OS_FAMILY_WIN9X =
new OsFamily( "win9x", new OsFamily[]{OS_FAMILY_WINDOWS, OS_FAMILY_DOS} );


/** OS/2 */ /** OS/2 */
public final static OsFamily OS_FAMILY_OS2
= new OsFamily( "os/2", new OsFamily[]{OS_FAMILY_DOS} );
public final static OsFamily OS_FAMILY_OS2 =
new OsFamily( "os/2", new OsFamily[]{OS_FAMILY_DOS} );


/** Netware */ /** Netware */
public final static OsFamily OS_FAMILY_NETWARE
= new OsFamily( "netware" );
public final static OsFamily OS_FAMILY_NETWARE =
new OsFamily( "netware" );


/** All UNIX based OSes. */ /** All UNIX based OSes. */
public final static OsFamily OS_FAMILY_UNIX
= new OsFamily( "unix" );
public final static OsFamily OS_FAMILY_UNIX = new OsFamily( "unix" );


/** All Mac based OSes. */ /** All Mac based OSes. */
public final static OsFamily OS_FAMILY_MAC
= new OsFamily( "mac" );
public final static OsFamily OS_FAMILY_MAC = new OsFamily( "mac" );


/** OSX */ /** OSX */
public final static OsFamily OS_FAMILY_OSX
= new OsFamily( "osx", new OsFamily[]{OS_FAMILY_UNIX, OS_FAMILY_MAC} );
public final static OsFamily OS_FAMILY_OSX =
new OsFamily( "osx", new OsFamily[]{OS_FAMILY_UNIX, OS_FAMILY_MAC} );


private final static OsFamily[] ALL_FAMILIES =
{
OS_FAMILY_DOS,
OS_FAMILY_MAC,
OS_FAMILY_NETWARE,
OS_FAMILY_OS2,
OS_FAMILY_OSX,
OS_FAMILY_UNIX,
OS_FAMILY_WINDOWS,
OS_FAMILY_WINNT,
OS_FAMILY_WIN9X
};
private final static OsFamily[] ALL_FAMILIES = new OsFamily[]
{
OS_FAMILY_DOS,
OS_FAMILY_MAC,
OS_FAMILY_NETWARE,
OS_FAMILY_OS2,
OS_FAMILY_OSX,
OS_FAMILY_UNIX,
OS_FAMILY_WINDOWS,
OS_FAMILY_WINNT,
OS_FAMILY_WIN9X
};


static static
{ {
// Determine the most specific OS family
if( OS_NAME.indexOf( "windows" ) > -1 )
{
if( OS_NAME.indexOf( "xp" ) > -1
|| OS_NAME.indexOf( "2000" ) > -1
|| OS_NAME.indexOf( "nt" ) > -1 )
{
OS_FAMILY = OS_FAMILY_WINNT;
}
else
{
OS_FAMILY = OS_FAMILY_WIN9X;
}
}
else if( OS_NAME.indexOf( "os/2" ) > -1 )
{
OS_FAMILY = OS_FAMILY_OS2;
}
else if( OS_NAME.indexOf( "netware" ) > -1 )
{
OS_FAMILY = OS_FAMILY_NETWARE;
}
else if( OS_NAME.indexOf( "mac" ) > -1 )
{
if( OS_NAME.endsWith( "x" ) )
{
OS_FAMILY = OS_FAMILY_OSX;
}
else
{
OS_FAMILY = OS_FAMILY_MAC;
}
}
else if( PATH_SEP.equals( ":" ) )
{
OS_FAMILY = OS_FAMILY_UNIX;
}
else
{
OS_FAMILY = null;
}

// Otherwise, unknown OS

// Determine all families the current OS belongs to
Set allFamilies = new HashSet();
if( OS_FAMILY != null )
{
List queue = new ArrayList();
queue.add( OS_FAMILY );
while( queue.size() > 0 )
{
final OsFamily family = (OsFamily)queue.remove( 0 );
allFamilies.add( family );
final OsFamily[] families = family.getFamilies();
for( int i = 0; i < families.length; i++ )
{
OsFamily parent = families[ i ];
queue.add( parent );
}
}
}
OS_ALL_FAMILIES = (OsFamily[])allFamilies.toArray( new OsFamily[ allFamilies.size() ] );
OS_FAMILY = determineOsFamily();
OS_ALL_FAMILIES = determineAllFamilies();
} }


/** /**
@@ -316,4 +252,72 @@ public class Os
} }
return false; return false;
} }

private static OsFamily[] determineAllFamilies()
{
// Determine all families the current OS belongs to
Set allFamilies = new HashSet();
if( OS_FAMILY != null )
{
List queue = new ArrayList();
queue.add( OS_FAMILY );
while( queue.size() > 0 )
{
final OsFamily family = (OsFamily)queue.remove( 0 );
allFamilies.add( family );
final OsFamily[] families = family.getFamilies();
for( int i = 0; i < families.length; i++ )
{
OsFamily parent = families[ i ];
queue.add( parent );
}
}
}
return (OsFamily[])allFamilies.toArray( new OsFamily[ allFamilies.size() ] );
}

private static OsFamily determineOsFamily()
{
// Determine the most specific OS family
if( OS_NAME.indexOf( "windows" ) > -1 )
{
if( OS_NAME.indexOf( "xp" ) > -1 ||
OS_NAME.indexOf( "2000" ) > -1 ||
OS_NAME.indexOf( "nt" ) > -1 )
{
return OS_FAMILY_WINNT;
}
else
{
return OS_FAMILY_WIN9X;
}
}
else if( OS_NAME.indexOf( "os/2" ) > -1 )
{
return OS_FAMILY_OS2;
}
else if( OS_NAME.indexOf( "netware" ) > -1 )
{
return OS_FAMILY_NETWARE;
}
else if( OS_NAME.indexOf( "mac" ) > -1 )
{
if( OS_NAME.endsWith( "x" ) )
{
return OS_FAMILY_OSX;
}
else
{
return OS_FAMILY_MAC;
}
}
else if( PATH_SEP.equals( ":" ) )
{
return OS_FAMILY_UNIX;
}
else
{
return null;
}
}
} }

Loading…
Cancel
Save