<s> package org . eclipse . jdt . internal . core ; import org . eclipse . core . runtime . CoreException ; import org . eclipse . core . runtime . IPath ; import org . eclipse . core . runtime . IStatus ; import org . eclipse . core . runtime . Status ; import org . eclipse . jdt . core . ClasspathContainerInitializer ; import org . eclipse . jdt . core . IClasspathContainer ; import org . eclipse . jdt . core . IJavaElement ; import org . eclipse . jdt . core . IJavaModelStatus ; import org . eclipse . jdt . core . IJavaModelStatusConstants ; import org . eclipse . jdt . core . IJavaProject ; import org . eclipse . jdt . core . IPackageFragment ; import org . eclipse . jdt . core . JavaCore ; import org . eclipse . jdt . core . JavaModelException ; import org . eclipse . jdt . internal . core . util . Messages ; public class JavaModelStatus extends Status implements IJavaModelStatus , IJavaModelStatusConstants { protected IJavaElement [ ] elements = new IJavaElement [ 0 ] ; protected IPath path ; protected String string ; protected final static IStatus [ ] NO_CHILDREN = new IStatus [ ] { } ; protected IStatus [ ] children = NO_CHILDREN ; public static final IJavaModelStatus VERIFIED_OK = new JavaModelStatus ( OK , OK , Messages . status_OK ) ; public JavaModelStatus ( ) { super ( ERROR , JavaCore . PLUGIN_ID , 0 , "" , null ) ; } public JavaModelStatus ( int code ) { super ( ERROR , JavaCore . PLUGIN_ID , code , "" , null ) ; this . elements = JavaElement . NO_ELEMENTS ; } public JavaModelStatus ( int code , IJavaElement [ ] elements ) { super ( ERROR , JavaCore . PLUGIN_ID , code , "" , null ) ; this . elements = elements ; this . path = null ; } public JavaModelStatus ( int code , String string ) { this ( ERROR , code , string ) ; } public JavaModelStatus ( int severity , int code , String string ) { super ( severity , JavaCore . PLUGIN_ID , code , "" , null ) ; this . elements = JavaElement . NO_ELEMENTS ; this . path = null ; this . string = string ; } public JavaModelStatus ( int code , Throwable throwable ) { super ( ERROR , JavaCore . PLUGIN_ID , code , "" , throwable ) ; this . elements = JavaElement . NO_ELEMENTS ; } public JavaModelStatus ( int code , IPath path ) { super ( ERROR , JavaCore . PLUGIN_ID , code , "" , null ) ; this . elements = JavaElement . NO_ELEMENTS ; this . path = path ; } public JavaModelStatus ( int code , IJavaElement element ) { this ( code , new IJavaElement [ ] { element } ) ; } public JavaModelStatus ( int code , IJavaElement element , String string ) { this ( code , new IJavaElement [ ] { element } ) ; this . string = string ; } public JavaModelStatus ( int code , IJavaElement element , IPath path ) { this ( code , new IJavaElement [ ] { element } ) ; this . path = path ; } public JavaModelStatus ( int code , IJavaElement element , IPath path , String string ) { this ( code , new IJavaElement [ ] { element } ) ; this . path = path ; this . string = string ; } public JavaModelStatus ( int severity , int code , IJavaElement element , IPath path , String msg ) { super ( severity , JavaCore . PLUGIN_ID , code , "" , null ) ; this . elements = new IJavaElement [ ] { element } ; this . path = path ; this . string = msg ; } public JavaModelStatus ( CoreException coreException ) { super ( ERROR , JavaCore . PLUGIN_ID , CORE_EXCEPTION , "" , coreException ) ; this . elements = JavaElement . NO_ELEMENTS ; } protected int getBits ( ) { int severity = 1 << ( getCode ( ) % 100 / 33 ) ; int category = 1 << ( ( getCode ( ) / 100 ) + 3 ) ; return severity | category ; } public IStatus [ ] getChildren ( ) { return this . children ; } public IJavaElement [ ] getElements ( ) { return this . elements ; } public String getMessage ( ) { Throwable exception = getException ( ) ; if ( exception == null ) { switch ( getCode ( ) ) { case CORE_EXCEPTION : return Messages . status_coreException ; case BUILDER_INITIALIZATION_ERROR : return Messages . build_initializationError ; case BUILDER_SERIALIZATION_ERROR : return Messages . build_serializationError ; case DEVICE_PATH : return Messages . bind ( Messages . status_cannotUseDeviceOnPath , getPath ( ) . toString ( ) ) ; case DOM_EXCEPTION : return Messages . status_JDOMError ; case ELEMENT_DOES_NOT_EXIST : return Messages . bind ( Messages . element_doesNotExist , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) ) ; case ELEMENT_NOT_ON_CLASSPATH : return Messages . bind ( Messages . element_notOnClasspath , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) ) ; case EVALUATION_ERROR : return Messages . bind ( Messages . status_evaluationError , this . string ) ; case INDEX_OUT_OF_BOUNDS : return Messages . status_indexOutOfBounds ; case INVALID_CONTENTS : return Messages . status_invalidContents ; case INVALID_DESTINATION : return Messages . bind ( Messages . status_invalidDestination , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) ) ; case INVALID_ELEMENT_TYPES : StringBuffer buff = new StringBuffer ( Messages . operation_notSupported ) ; for ( int i = 0 ; i < this . elements . length ; i ++ ) { if ( i > 0 ) { buff . append ( ", " ) ; } buff . append ( ( ( JavaElement ) this . elements [ i ] ) . toStringWithAncestors ( ) ) ; } return buff . toString ( ) ; case INVALID_NAME : return Messages . bind ( Messages . status_invalidName , this . string ) ; case INVALID_PACKAGE : return Messages . bind ( Messages . status_invalidPackage , this . string ) ; case INVALID_PATH : if ( this . string != null ) { return this . string ; } else { return Messages . bind ( Messages . status_invalidPath , new String [ ] { getPath ( ) == null ? "null" : getPath ( ) . toString ( ) } ) ; } case INVALID_PROJECT : return Messages . bind ( Messages . status_invalidProject , this . string ) ; case INVALID_RESOURCE : return Messages . bind ( Messages . status_invalidResource , this . string ) ; case INVALID_RESOURCE_TYPE : return Messages . bind ( Messages . status_invalidResourceType , this . string ) ; case INVALID_SIBLING : if ( this . string != null ) { return Messages . bind ( Messages . status_invalidSibling , this . string ) ; } else { return Messages . bind ( Messages . status_invalidSibling , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) ) ; } case IO_EXCEPTION : return Messages . status_IOException ; case NAME_COLLISION : if ( this . elements != null && this . elements . length > 0 ) { IJavaElement element = this . elements [ 0 ] ; if ( element instanceof PackageFragment && ( ( PackageFragment ) element ) . isDefaultPackage ( ) ) { return Messages . operation_cannotRenameDefaultPackage ; } } if ( this . string != null ) { return this . string ; } else { return Messages . bind ( Messages . status_nameCollision , "" ) ; } case NO_ELEMENTS_TO_PROCESS : return Messages . operation_needElements ; case NULL_NAME : return Messages . operation_needName ; case NULL_PATH : return Messages . operation_needPath ; case NULL_STRING : return Messages . operation_needString ; case PATH_OUTSIDE_PROJECT : return Messages . bind ( Messages . operation_pathOutsideProject , new String [ ] { this . string , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) } ) ; case READ_ONLY : IJavaElement element = this . elements [ 0 ] ; String name = element . getElementName ( ) ; if ( element instanceof IPackageFragment && name . equals ( IPackageFragment . DEFAULT_PACKAGE_NAME ) ) { return Messages . status_defaultPackageReadOnly ; } return Messages . bind ( Messages . status_readOnly , name ) ; case RELATIVE_PATH : return Messages . bind ( Messages . operation_needAbsolutePath , getPath ( ) . toString ( ) ) ; case TARGET_EXCEPTION : return Messages . status_targetException ; case UPDATE_CONFLICT : return Messages . status_updateConflict ; case NO_LOCAL_CONTENTS : return Messages . bind ( Messages . status_noLocalContents , getPath ( ) . toString ( ) ) ; case CP_CONTAINER_PATH_UNBOUND : IJavaProject javaProject = ( IJavaProject ) this . elements [ 0 ] ; ClasspathContainerInitializer initializer = JavaCore . getClasspathContainerInitializer ( this . path . segment ( 0 ) ) ; String description = null ; if ( initializer != null ) description = initializer . getDescription ( this . path , javaProject ) ; if ( description == null ) description = this . path . makeRelative ( ) . toString ( ) ; return Messages . bind ( Messages . classpath_unboundContainerPath , new String [ ] { description , javaProject . getElementName ( ) } ) ; case INVALID_CP_CONTAINER_ENTRY : javaProject = ( IJavaProject ) this . elements [ 0 ] ; IClasspathContainer container = null ; description = null ; try { container = JavaCore . getClasspathContainer ( this . path , javaProject ) ; } catch ( JavaModelException e ) { } if ( container == null ) { initializer = JavaCore . getClasspathContainerInitializer ( this . path . segment ( 0 ) ) ; if ( initializer != null ) description = initializer . getDescription ( this . path , javaProject ) ; } else { description = container . getDescription ( ) ; } if ( description == null ) description = this . path . makeRelative ( ) . toString ( ) ; return Messages . bind ( Messages . classpath_invalidContainer , new String [ ] { description , javaProject . getElementName ( ) } ) ; case CP_VARIABLE_PATH_UNBOUND : javaProject = ( IJavaProject ) this . elements [ 0 ] ; return Messages . bind ( Messages . classpath_unboundVariablePath , new String [ ] { this . path . makeRelative ( ) . toString ( ) , javaProject . getElementName ( ) } ) ; case CLASSPATH_CYCLE : javaProject = ( IJavaProject ) this . elements [ 0 ] ; return Messages . bind ( Messages . classpath_cycle , javaProject . getElementName ( ) ) ; case DISABLED_CP_EXCLUSION_PATTERNS : javaProject = ( IJavaProject ) this . elements [ 0 ] ; String projectName = javaProject . getElementName ( ) ; IPath newPath = this . path ; if ( this . path . segment ( 0 ) . toString ( ) . equals ( projectName ) ) { newPath = this . path . removeFirstSegments ( 1 ) ; } return Messages . bind ( Messages . classpath_disabledInclusionExclusionPatterns , new String [ ] { newPath . makeRelative ( ) . toString ( ) , projectName } ) ; case DISABLED_CP_MULTIPLE_OUTPUT_LOCATIONS : javaProject = ( IJavaProject ) this . elements [ 0 ] ; projectName = javaProject . getElementName ( ) ; newPath = this . path ; if ( this . path . segment ( 0 ) . toString ( ) . equals ( projectName ) ) { newPath = this . path . removeFirstSegments ( 1 ) ; } return Messages . bind ( Messages . classpath_disabledMultipleOutputLocations , new String [ ] { newPath . makeRelative ( ) . toString ( ) , projectName } ) ; case CANNOT_RETRIEVE_ATTACHED_JAVADOC : if ( this . elements != null && this . elements . length == 1 ) { if ( this . string != null ) { return Messages . bind ( Messages . status_cannot_retrieve_attached_javadoc , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) , this . string ) ; } return Messages . bind ( Messages . status_cannot_retrieve_attached_javadoc , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) , "" ) ; } if ( this . string != null ) { return Messages . bind ( Messages . status_cannot_retrieve_attached_javadoc , this . string , "" ) ; } break ; case UNKNOWN_JAVADOC_FORMAT : return Messages . bind ( Messages . status_unknown_javadoc_format , ( ( JavaElement ) this . elements [ 0 ] ) . toStringWithAncestors ( ) ) ; case DEPRECATED_VARIABLE : javaProject = ( IJavaProject ) this . elements [ 0 ] ; return Messages . bind ( Messages . classpath_deprecated_variable , new String [ ] { this . path . segment ( 0 ) . toString ( ) , javaProject . getElementName ( ) , this . string } ) ; } if ( this . string != null ) { return this . string ; } else { return "" ; } } else { String message = exception . getMessage ( ) ; if ( message != null ) { return message ; } else { return exception . toString ( ) ; } } } public IPath getPath ( ) { return this . path ; } public int getSeverity ( ) { if ( this . children == NO_CHILDREN ) return super . getSeverity ( ) ; int severity = - 1 ; for ( int i = 0 , max = this . children . length ; i < max ; i ++ ) { int childrenSeverity = this . children [ i ] . getSeverity ( ) ; if ( childrenSeverity > severity ) { severity = childrenSeverity ; } } return severity ; } public String getString ( ) { return this . string ; } public boolean isDoesNotExist ( ) { int code = getCode ( ) ; return code == ELEMENT_DOES_NOT_EXIST || code == ELEMENT_NOT_ON_CLASSPATH ; } public boolean isMultiStatus ( ) { return this . children != NO_CHILDREN ; } public boolean isOK ( ) { return getCode ( ) == OK ; } public boolean matches ( int mask ) { if ( ! isMultiStatus ( ) ) { return matches ( this , mask ) ; } else { for ( int i = 0 , max = this . children . length ; i < max ; i ++ ) { if ( matches ( ( JavaModelStatus ) this . children [ i ] , mask ) ) return true ; } return false ; } } protected boolean matches ( JavaModelStatus status , int mask ) { int severityMask = mask & 0x7 ; int categoryMask = mask & ~ 0x7 ; int bits = status . getBits ( ) ; return ( ( severityMask == 0 ) || ( bits & severityMask ) != 0 ) && ( ( categoryMask == 0 ) || ( bits & categoryMask ) != 0 ) ; } public static IJavaModelStatus newMultiStatus ( IJavaModelStatus [ ] children ) { JavaModelStatus jms = new JavaModelStatus ( ) ; jms . children = children ; return jms ; } public String toString ( ) { if ( this == VERIFIED_OK ) { return "" ; } StringBuffer buffer = new StringBuffer ( ) ; buffer . append ( "" ) ; buffer . append ( getMessage ( ) ) ; buffer . append ( "]" ) ; return buffer . toString ( ) ; } } </s>