Inheritance in Java

profileski_doosh41
inventory_java_1.zip

gradlew

#!/usr/bin/env bash ############################################################################## ## ## Gradle start up script for UN*X ## ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" # Need this for relative symlinks. while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done SAVED="`pwd`" cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" warn ( ) { echo "$*" } die ( ) { echo echo "$*" echo exit 1 } # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "`uname`" in CYGWIN* ) cygwin=true ;; Darwin* ) darwin=true ;; MINGW* ) msys=true ;; NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD="java" which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi # Increase the maximum file descriptors if we can. if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then MAX_FD="$MAX_FD_LIMIT" fi ulimit -n $MAX_FD if [ $? -ne 0 ] ; then warn "Could not set maximum file descriptor limit: $MAX_FD" fi else warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" fi fi # For Darwin, add options to specify how the application appears in the dock if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi # For Cygwin, switch paths to Windows format before running java if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` SEP="" for dir in $ROOTDIRSRAW ; do ROOTDIRS="$ROOTDIRS$SEP$dir" SEP="|" done OURCYGPATTERN="(^($ROOTDIRS))" # Add a user-defined pattern to the cygpath arguments if [ "$GRADLE_CYGPATTERN" != "" ] ; then OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" fi # Now convert the arguments - kludge to limit ourselves to /bin/sh i=0 for arg in "$@" ; do CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` else eval `echo args$i`="\"$arg\"" fi i=$((i+1)) done case $i in (0) set -- ;; (1) set -- "$args0" ;; (2) set -- "$args0" "$args1" ;; (3) set -- "$args0" "$args1" "$args2" ;; (4) set -- "$args0" "$args1" "$args2" "$args3" ;; (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules function splitJvmOpts() { JVM_OPTS=("$@") } eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then cd "$(dirname "$0")" fi exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

gradlew.bat

@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega

src/main/java/edu/odu/cs/cs330/Storage.java

src/main/java/edu/odu/cs/cs330/Storage.java

package  edu . odu . cs . cs330 ;

import  java . io . FileReader ;
import  java . io . BufferedReader ;
import  java . io . IOException ;
import  java . util . Scanner ;

import  edu . odu . cs . cs330 . items . * ;

public   class   Storage   {
     /**
     * This is the first Java Assignment, Item Storage in Java.
     *
     *  @param  argv[1] items filename
     *  @param  argv[2] inventories filename
     */
     public   static   void  main ( String []  argv )
     {
         BufferedReader  infile  =   null ;
         Inventory  inv  =   null ;
         int  invSize  =   10 ;

         if   ( argv . length  <   1 )   {
             System . err . println ( "Usage: java -jar Storage.jar items-file" );
             System . exit ( 1 );
         }

         // If an inventory size was specified, parse it.
         try   {
            invSize  =   Integer . parseInt ( argv [ 1 ]);
         }
         catch   ( IndexOutOfBoundsException  e )   {
             // pass
            invSize  =   10 ;   //default to 10
         }
         catch   ( NumberFormatException  e )   {
             System . err . println ( "Inventory size must be an integer" );
             System . exit ( 2 );
         }

         // Default to 10 if invSize is invalid--i.e., <= 0
         if   ( invSize  <   1 )   {
            invSize  =   10 ;
         }

         try   {
            infile  =   new   BufferedReader ( new   FileReader ( argv [ 0 ]));
            inv  =  createInventory ( infile ,  invSize );
            infile . close ();

         }
         catch   ( IOException  e )   {
             System . err . println ( "Error: "   +  argv [ 0 ]   +   " could not be opened or read" );
             System . exit ( 3 );
         }

         // Print the Inventory
        printInventorySummary ( inv );
     }

     /**
     * Read an input stream and generate an Inventory.
     *
     *  @param  ins source from which to read Items
     *  @param  size desired number of Inventory slots
     *
     *  @return  initialized Inventory
     *
     *  @throws  IOException if an input error occurs
     */
     public   static   Inventory  createInventory ( BufferedReader  ins ,   int  size )
         throws   IOException
     {
         Scanner    scanner    =   new   Scanner ( ins );
         Inventory  inventory  =   new   Inventory ( size );

         System . out . println ( "Processing Log:" );

         while   ( scanner . hasNext ())   {
             Item  item  =   ItemFactory . parseItemLine ( scanner );

             if   ( item  !=   null )   {
                 boolean  success  =  inventory . addItems ( new   ItemStack ( item ));

                 if   ( success )   {
                     System . out . println ( " (S) "   +  item . getName ());
                 }
                 else   {
                    System . out . println ( " (D) "   +  item . getName ());
                 }
             }
         }
         System . out . println ();

         return  inventory ;
     }

     /**
     * Print the final Inventory summary.
     *
     *  @param  inv Inventory to print
     */
     public   static   void  printInventorySummary ( Inventory  inv )
     {
         System . out . println ( "Player Storage Summary:" );
         System . out . println ( inv );
     }
}

src/main/java/edu/odu/cs/cs330/items/Armour.java

src/main/java/edu/odu/cs/cs330/items/Armour.java

package  edu . odu . cs . cs330 . items ;

import  java . util . Scanner ;

/**
 * This class represents one piece of armour--as found in most video games.
 * This includes boots and helmets.
 *
 * Armour may not be stacked. All Constructors must initialize Item::stackable
 * to false.
 */
public   class   Armour   extends   Item   {

     protected   int     durability ;     ///< decreases each time the armour is used
     protected   int     defense ;        ///< damage that is blocked
     protected   String  material ;       ///< material out of which the armour is composed
     protected   String  modifier ;       ///< one of protection, feather_falling, or unbreaking
     protected   int     modiferLevel ;   ///< modifier level in the range 1 to 3
     protected   String  element ;        ///< associated element--e.g., ice, fire, and lightning.

     /**
     * Default to a armour with an empty name.
     */
     public   Armour ()
     {
         // Make the necessary call to super(...)

         this . durability    =   0 ;
         this . defense       =   0 ;
         this . material      =   "" ;
         this . modifier      =   "" ;
         this . modiferLevel  =   1 ;
         this . element       =   "" ;
     }

     /**
     * This is the Copy Constructor.
     */
     public   Armour ( Armour  src )
     {
         // Make the necessary call to super(...)

         this . durability    =  src . durability ;
         this . defense       =  src . defense ;
         this . material      =  src . material ;
         this . modifier      =  src . modifier ;
         this . modiferLevel  =  src . modiferLevel ;
         this . element       =  src . element ;
     }

     /**
     * Retrieve armour durability.
     */
     public   int  getDurability ()
     {
         return   this . durability ;
     }

     /**
     * Set armour durability.
     */
     public   void  setDurability ( int  durability )
     {
         this . durability  =  durability ;
     }

     /**
     * Retrieve armour defense.
     */
     public   int  getDefense ()
     {
         return   this . defense ;
     }

     /**
     * Set armour defense.
     */
     public   void  setDefense ( int  defense )
     {
         this . defense  =  defense ;
     }

     /**
     * Retrieve armour Material.
     */
     public   String  getMaterial ()
     {
         return   this . material ;
     }

     /**
     * Set armour Material.
     */
     public   void  setMaterial ( String  m )
     {
         this . material  =  m ;
     }

     /**
     * Retrieve armour Modifier.
     */
     public   String  getModifier ()
     {
         return   this . modifier ;
     }

     /**
     * Set armour Modifier.
     */
     public   void  setModifier ( String  m )
     {
         this . modifier  =  m ;
     }

     /**
     * Retrieve armour Modifier Level.
     */
     public   int  getModifierLevel ()
     {
         return   this . modiferLevel ;
     }

     /**
     * Set armour Modifier Level.
     */
     public   void  setModifierLevel ( int  level )
     {
         this . modiferLevel  =  level ;
     }

     /**
     * Retrieve armour Element.
     */
     public   String  getElement ()
     {
         return   this . element ;
     }

     /**
     * Set armour Element.
     */
     public   void  setElement ( String  e )
     {
         this . element  =  e ;
     }

     /**
     * Read Armour attributes.
     */
    @ Override
     public   void  read ( Scanner  s )
     {
         super . name    =  s . next ();

         // Read in the remaining values
     }

     /**
     * Clone--i.e., copy--this Armour.
     */
    @ Override
     public   Item  clone ()
     {
         return   null ;
     }

     /**
     * *Print* one Armour.
     */
    @ Override
     public   String  toString ()
     {
         return   "This Is A Placeholder" ;
     }
}




src/main/java/edu/odu/cs/cs330/items/Consumable.java

src/main/java/edu/odu/cs/cs330/items/Consumable.java

package  edu . odu . cs . cs330 . items ;

import  java . util . Scanner ;

/**
 * This class represents one Consumable Item--as found in most video games. This includes
 * food.
 *
 * Consumable Items must be stackable. All Constructors must initialize Item::stackable
 * to true.
 */
public   class   Consumable   extends   Item   {
     protected   String  effect ;   ///< effect recieved by using the Item
     protected   int  uses ;        ///< number of times this Item can be used

     /**
     * Default to a Comsumable Item with an empty name
     */
     public   Consumable ()
     {
         // Make the necessary call to super(...)

         this . effect  =   "" ;
         this . uses    =   0 ;
     }

     /**
     * Copy Constructor
     */
     public   Consumable ( Consumable  src )
     {
         super ( src . name ,   true );   // Is this a hint???

         this . effect  =  src . effect ;
         this . uses   =  src . uses ;
     }

     /**
     * Retrieve effect
     */
     public   String  getEffect ()
     {
         return   this . effect ;
     }

     /**
     * Set effect
     */
     public   void  setEffect ( String  effect )
     {
         this . effect  =  effect ;
     }

     /**
     * Retrieve number of uses
     */
     public   int  getNumberOfUses ()
     {
         return   this . uses ;
     }

     /**
     * Set number of uses
     */
     public   void  setNumberOfUses ( int  u )
     {
         this . uses  =  u ;
     }

     /**
     * Read Consumable Item attributes
     */
    @ Override
     public   void  read ( Scanner  s )
     {
         super . name  =  s . next ();

         // Read in the remaining values

     }

     /**
     * Clone--i.e., copy--this Consumable Item
     */
    @ Override
     public   Item  clone ()
     {
         return   null ;
     }

     /**
     * *Print* the Consumable Item
     */
    @ Override
     public   String  toString ()
     {
         return   "This is a Placeholder" ;
     }
}

src/main/java/edu/odu/cs/cs330/items/Inventory.java

src/main/java/edu/odu/cs/cs330/items/Inventory.java

package  edu . odu . cs . cs330 . items ;

import  java . util . List ;
import  java . util . ArrayList ;

/**
 * An Inventory is composed of n slots. Each slot may store only
 * one type of item--specified by *slots*.
 * <p>
 * Once all slots are filled, no additional Item types may be
 * stored. Individual slots may contain any number of the same
 * Item--if the Item is stackable.
 */
public   class   Inventory   {
     private   List < ItemStack >  slots ;    ///< Individual item slots--each ItemStack represents one slot
     private   int  capacity ;             ///< Maximum inventory size

     /**
     * Default to 10 slots
     */
     public   Inventory ()
     {
         this . slots     =   new   ArrayList < ItemStack > ();
         this . capacity  =   10 ;
     }

     /**
     * Create an inventory with n slots
     *
     *  @param  desiredCapacity size of the new Inventory
     */
     public   Inventory ( int  desiredCapacity )
     {
         this . slots     =   new   ArrayList < ItemStack > ();
         this . capacity  =  desiredCapacity ;
     }

     /**
     * Add one or more items to the inventory list
     *
     *  @return  true if *stack* was added and false otherwise
     */
     public   boolean  addItems ( ItemStack  stack )
     {
         int  loc  =  slots . indexOf ( stack );

         // if a match was found
         if   ( loc  >=   0 )   {
             // If the Item is stackable, add it to the ItemStack
             if   ( slots . get ( loc ). permitsStacking ())   {
                slots . get ( loc ). addItems ( stack . size ());

                 return   true ;
             }
         }

         if   ( slots . size ()   <  capacity )   {
            slots . add ( stack );
             return   true ;
         }

         return   false ;
     }

     /**
     * *Print* a Summary of the Inventory and all Items contained within.
     */
    @ Override
     public   String  toString ()
     {
         StringBuilder  strBld  =   new   StringBuilder ();

         // Compute % full rounded to nearest whole number
         int  percentFilled  =   ( int )   Math . round ( 100.0   *  slots . size ()   /  capacity );

         // Print the usage summary
        strBld . append ( String . format ( " -Used %3d%% of %d slots%n" ,
                                     percentFilled ,  capacity ));

         // Print the Items
         for   ( ItemStack  slot  :  slots )   {
            strBld . append ( slot  +   "\n" );
         }

         return  strBld . toString ();
     }
};

src/main/java/edu/odu/cs/cs330/items/Item.java

src/main/java/edu/odu/cs/cs330/items/Item.java

package  edu . odu . cs . cs330 . items ;

import  java . util . Scanner ;

/**
 * Item represents an individual Item in an inventory.
 * This includes items such as potions, building materials, and food.
 *
 * Only one of each item can exist--i.e., no two items share the
 * same numeric id.
 */
public   abstract   class   Item   implements   Cloneable   {
     /**
     * Indicates whether this Item can placed in an ItemStack larger than 1.
     */
     private   boolean  stackable ;

     /**
     * Short title--e.g., HP Potion
        */
     protected   String  name ;

     /**
     * Default to name = Air and stackable = true
     */
     public   Item ()
     {
         this . name       =   "Air" ;
         this . stackable  =   true ;
     }

     /**
     * Create an Item with a specified and name
     *
     *  @param  name desired name
     *
     *  @pre
     *  - all items that share a name are of the same type
     *  - differences in capitalization denote different items
     */
     public   Item ( String  name )
     {
         this . name       =  name ;
         this . stackable  =   true ;
     }

     /**
     * Create an Item with a specified id and name
     *
     *  @param  name desired name
     *  @param  stackable flag that indicates whether duplicates
     *      of this item can be stacked
     *
     *  @pre
     *  - all items that share a name are of the same type
     *  - differences in capitalization denote different items
     */
     public   Item ( String  name ,   boolean  stackable )
     {
         this . name       =  name ;
         this . stackable  =  stackable ;
     }

     /**
     * Retrieve name
     */
     public   String  getName ()
     {
         return   this . name ;
     }

     /**
     * Update name
     */
     public   void  setName ( String  n )
     {
         this . name  =  n ;
     }

     /**
     * Check for logical equivalence--based on name
     */
    @ Override
     public   boolean  equals ( Object  rhs )
     {
         Item  r  =   ( Item )  rhs ;

         return   this . name . equals ( r . name );
     }

     /**
     * Generate a hash code based on name
     */
    @ Override
     public   int  hashCode ()
     {
         return   this . name . hashCode ();
     }

     /**
     * Can this item be placed in a stack?
     */
     public   boolean  isStackable ()
     {
         return   this . stackable ;
     }

     /**
     * Read the item from an input array
     */
     public   abstract   void  read ( Scanner  s );

     /**
     * Duplicate this item
     */
    @ Override
     public   abstract   Item  clone ();

     /**
     * *Print* an Item
     */
    @ Override
     public   String  toString ()
     {
         return   " "   +   this . name ;
     }
}


src/main/java/edu/odu/cs/cs330/items/ItemFactory.java

src/main/java/edu/odu/cs/cs330/items/ItemFactory.java

package  edu . odu . cs . cs330 . items ;

import  java . util . Scanner ;

/**
 * The Item Creating Wizard
 */
public   class   ItemFactory   {

     /**
     * Name Item Pair 2-tuple(type, model)
     *
     * Simulate a c++ struct by making all attributes public
     */
     private   static   class   ItemPair   {
         public   String  type ;    ///< Name of the item to clone
         public   Item    model ;   ///< Model of the item to clone

         /**
         * Default Constructor - Used as sentinel
         */
         public   ItemPair ()
         {
            type   =   null ;
            model  =   null ;
         }

         /**
         * Non-Default Constructor
         *
         *  @param  type the type of anqq item
         *  @param  item a cloneable item
         */
         public   ItemPair ( String  theType ,   Item  theItem )
         {
            type   =  theType ;
            model  =  theItem ;
         }
     }

     /**
     * Listing of known items
     */
     private   static   ItemPair []  knownItems  =   {
         new   ItemPair ( "Armour" ,   new   Armour ()),
         new   ItemPair ( "Armor" ,   new   Armour ()),
         //new ItemPair("Tool", new Tool()),
         new   ItemPair ( "Food" ,   new   Consumable ()),
         new   ItemPair ( "Potion" ,   new   Consumable ()),
         new   ItemPair ( "Disposable" ,   new   Consumable ()),
     };

     /**
     * Create a Item
     *
     *  @param  type the item to be created
     *
     *  @return  A item with the specified type
     *     or nullptr if no matching item is found
     */
     public   static   Item  createItem ( String  type )
     {
         for   ( ItemPair  pair  :  knownItems )   {
             if   ( pair . type . equals ( type ))   {
                 return  pair . model . clone ();
             }
         }

         return   null ;
     }

     /**
     * Determine whether a given item is known
     *
     *  @param  type the item for which to query
     */
     public   static   boolean  isKnown ( String  type )
     {
         for   ( ItemPair  pair  :  knownItems )   {
             if   ( pair . type . equals ( type ))   {
                 return   true ;
             }
         }

         return   false ;
     }

     /**
     * Create the appropriate Item class--e.g., Tool, Armour or Consumable.
     *
     * How is **inheritance** used?
     */
     public   static   Item  parseItemLine ( Scanner  s )
     {
         String  keyword  =  s . next ();
         Item  item  =  createItem ( keyword );

         // Parse the remainder of the line
         if   ( item  !=   null )   {
            item . read ( s );
         }
         else   {
            s . nextLine ();
         }

         return  item ;
     }

}



src/main/java/edu/odu/cs/cs330/items/ItemStack.java

src/main/java/edu/odu/cs/cs330/items/ItemStack.java

package  edu . odu . cs . cs330 . items ;

/**
 * A Homogeneous--i.e., uniform--stack of Items.
 */
public   class   ItemStack   {
     private   Item  item ;     ///< Item out of which the stack is composed
     private   int  quantity ;   ///< Number of items in the stack

     /**
     * Default to an empty stack composed of Air
     */
     public   ItemStack ()
     {
         this . item      =   null ;
         this . quantity  =   0 ;
     }

     /**
     * Create a stack of type *item*
     *
     *  @param  item Item out of which the stack is composed
     */
     public   ItemStack ( Item  item )
     {
         this . item      =  item . clone ();
         this . quantity  =   1 ;
     }

     /**
     * Copy Constructor - Why is this necessary?
     */
     public   ItemStack ( ItemStack  src )
     {
         this . item      =  src . item . clone ();
         this . quantity  =  src . quantity ;
     }

     /**
     * Retrieve the Item out of which the stack is composed
     */
     public   Item  getItem ()
     {
         return   this . item ;
     }

     /**
     * Retrieve the size of the stack
     */
     public   int  size ()
     {
         return   this . quantity ;
     }

     /**
     * Increase the size of the stack
     *
     *  @param  a number of items to add
     */
     public   void  addItems ( int  a )
     {
         // Add *a* items if stacking is permitted
         // otherwise, silently discard *a* items
         if   ( item . isStackable ())   {
             this . quantity  +=  a ;
         }
     }

     /**
     * Does that Item contained in this stack permit stacking?
     *
     * This can be less formally phrased, is this a stackable ItemStack?
     */
     public   boolean  permitsStacking ()
     {
         return  item . isStackable ();
     }

     /**
     * Consider two stacks to be the same if
     * they contain the same type of Item
     */
    @ Override
     public   boolean  equals ( Object  rhs )
     {
         if   ( ! ( rhs  instanceof   ItemStack ))   {
             return   false ;
         }

         ItemStack  r  =   ( ItemStack ) rhs ;

         return   this . item . equals ( r . item );
     }

     /**
     * Generate a hash code based on item
     */
    @ Override
     public   int  hashCode ()
     {
         return   this . item . hashCode ();
     }

     /**
     * Order stacks based on Item name
     */
     //boolean operator<(ItemStack rhs);

     /**
     * Print the ItemStack directly
     */
    @ Override
     public   String  toString ()
     {
         String  outs  =   this . item . toString ();

         if   ( this . permitsStacking ())   {
            outs  +=   "  Qty: "   +   this . quantity  +   "\n" ;
         }

         return  outs ;
     }
}

src/main/java/edu/odu/cs/cs330/items/package-info.java

src/main/java/edu/odu/cs/cs330/items/package-info.java

/**
 * All item and inventory classes and code are contained in this package.
 */
package  edu . odu . cs . cs330 . items ;

src/main/java/edu/odu/cs/cs330/package-info.java

src/main/java/edu/odu/cs/cs330/package-info.java

/**
 * The set of all CS 330 Code.
 */
package  edu . odu . cs . cs330 ;

src/main/resources/items-01.txt

Tool Pickaxe Diamond 100 1 Fortune 5 LOLNOTAVALIDITEM potato 7 Tool Shovel Gold 20 3 Unbreaking 2 Tool Pickaxe Diamond 100 1 Fortune 5 Potion Speed-II-Potion Spd*2 1 Food Tomato Hunger-10 2 Disposable PotatoCamera ImageQuality-97% 5 Disposable PotatoCamera ImageQuality-97% 5 Tool Axe Stone 10 2 Unbreaking 2 Armour Boots Diamond 100 10 Protection 3 lightning Armor Boots Diamond 100 10 FeatherFalling 4 lightning

src/main/resources/items-02.txt

Tool Pickaxe Diamond 100 1 Fortune 5 LOLNOTAVALIDITEM potato 7 Disposable PotatoCamera ImageQuality-97% 5 Tool Shovel Gold 20 3 Unbreaking 2 Tool Pickaxe Diamond 100 1 Fortune 5 Potion Speed-II-Potion Spd*2 1 Food Tomato Hunger-10 2 Disposable PotatoCamera ImageQuality-97% 5 Tool Axe Stone 10 2 Unbreaking 2 Armour Boots Diamond 100 10 Protection 3 lightning Armor Boots Diamond 100 10 FeatherFalling 4 lightning Armour ChestPlate Diamond 100 10 Defense 9 light Potion Speed-II-Potion Spd*2 1

src/test/java/edu/odu/cs/cs330/items/TestArmour.java

src/test/java/edu/odu/cs/cs330/items/TestArmour.java

package  edu . odu . cs . cs330 . items ;

import  org . junit . FixMethodOrder ;
import  org . junit . runners . MethodSorters ;
import  org . junit . Test ;
import  org . junit . Before ;

import   static  org . junit . Assert . * ;

import   static  org . hamcrest . CoreMatchers . * ;
import  org . hamcrest . core . IsNull ;

import  java . io . StringReader ;
import  java . util . Scanner ;

/**
 * 1 - Does this piece of code perform the operations
 *     it was designed to perform?
 *
 * 2 - Does this piece of code do something it was not
 *     designed to perform?
 *
 * 1 Test per mutator
 */
@ FixMethodOrder ( MethodSorters . NAME_ASCENDING )
public   class   TestArmour
{
    @ Test
     public   void  testDefaultConstructor ()
     {
         Armour  genericArmour  =   new   Armour ();
         Item   genericRef  =   ( Item )  genericArmour ;

        assertFalse ( genericArmour . isStackable ());
        assertFalse ( genericRef . isStackable ());

         // I should really complete this unit test with calls to each of the
         // accessors. However, I will forgo the remaining checks for this test

         // I should really check display() and/or operator<< here. However, I
         // will do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testCopyConstructor ()
     {
         Armour  fancyArmour  =   new   Armour ();

        fancyArmour . setName ( "Fancy" );
        fancyArmour . setDurability ( 9001 );
        fancyArmour . setDefense ( 62 );
        fancyArmour . setMaterial ( "Vibranium" );
        fancyArmour . setModifier ( "ProcrastinationReduction" );
        fancyArmour . setModifierLevel ( 999999 );
        fancyArmour . setElement ( "H20" );

         Armour  copy  =   new   Armour ( fancyArmour );

         // Checks
        assertThat ( copy . getName (),  equalTo ( "Fancy" ));
        assertFalse ( copy . isStackable ());
        assertThat ( copy . getDurability (),  equalTo ( 9001 ));
        assertThat ( copy . getDefense (),  equalTo ( 62 ));
        assertThat ( copy . getMaterial (),  equalTo ( "Vibranium" ));
        assertThat ( copy . getModifier (),  equalTo ( "ProcrastinationReduction" ));
        assertThat ( copy . getModifierLevel (),  equalTo ( 999999 ));
        assertThat ( copy . getElement (),  equalTo ( "H20" ));

         // I should really check display() and/or operator<< here. However, I will
         // do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testClone ()
     {
         Armour  fancyArmour  =   new   Armour ();

        fancyArmour . setName ( "Fancy" );
        fancyArmour . setDurability ( 9001 );
        fancyArmour . setDefense ( 62 );
        fancyArmour . setMaterial ( "Vibranium" );
        fancyArmour . setModifier ( "ProcrastinationReduction" );
        fancyArmour . setModifierLevel ( 999999 );
        fancyArmour . setElement ( "H20" );

         Armour  copy  =   ( Armour )  fancyArmour . clone ();

         // Checks
        assertThat ( copy . getName (),  equalTo ( "Fancy" ));
        assertFalse ( copy . isStackable ());
        assertThat ( copy . getDurability (),  equalTo ( 9001 ));
        assertThat ( copy . getDefense (),  equalTo ( 62 ));
        assertThat ( copy . getMaterial (),  equalTo ( "Vibranium" ));
        assertThat ( copy . getModifier (),  equalTo ( "ProcrastinationReduction" ));
        assertThat ( copy . getModifierLevel (),  equalTo ( 999999 ));
        assertThat ( copy . getElement (),  equalTo ( "H20" ));

         // I should really check display() and/or operator<< here. However, I will
         // do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testToString ()
     {
         Armour  fancyArmour  =   new   Armour ();

        fancyArmour . setName ( "Fancy" );
        fancyArmour . setDurability ( 9001 );
        fancyArmour . setDefense ( 62 );
        fancyArmour . setMaterial ( "Vibranium" );
        fancyArmour . setModifier ( "ProcrastinationReduction" );
        fancyArmour . setModifierLevel ( 999999 );
        fancyArmour . setElement ( "H20" );

         String  expected  =   "  Nme: Fancy\n"
                         +   "  Dur: 9001\n"
                         +   "  Def: 62\n"
                         +   "  Mtl: Vibranium\n"
                         +   "  Mdr: ProcrastinationReduction (Lvl 999999)\n"
                         +   "  Emt: H20\n" ;

        assertThat ( fancyArmour . toString (),  equalTo ( expected ));
     }

    @ Test
     public   void  testRead ()
     {
         Armour  fancyArmour  =   new   Armour ();

         String  inputStr  =   "Fancy Vibranium 9001 62 ProcrastinationReduction 999999 H20" ;
         Scanner  ins  =   new   Scanner ( new   StringReader ( inputStr ));

        fancyArmour . read ( ins );

         // Checks
        assertThat ( fancyArmour . getName (),  equalTo ( "Fancy" ));
        assertFalse ( fancyArmour . isStackable ());
        assertThat ( fancyArmour . getDurability (),  equalTo ( 9001 ));
        assertThat ( fancyArmour . getDefense (),  equalTo ( 62 ));
        assertThat ( fancyArmour . getMaterial (),  equalTo ( "Vibranium" ));
        assertThat ( fancyArmour . getModifier (),  equalTo ( "ProcrastinationReduction" ));
        assertThat ( fancyArmour . getModifierLevel (),  equalTo ( 999999 ));
        assertThat ( fancyArmour . getElement (),  equalTo ( "H20" ));
     }
}

src/test/java/edu/odu/cs/cs330/items/TestConsumable.java

src/test/java/edu/odu/cs/cs330/items/TestConsumable.java

package  edu . odu . cs . cs330 . items ;

import  org . junit . FixMethodOrder ;
import  org . junit . runners . MethodSorters ;
import  org . junit . Test ;
import  org . junit . Before ;

import   static  org . junit . Assert . * ;

import   static  org . hamcrest . CoreMatchers . * ;
import  org . hamcrest . core . IsNull ;

import  java . io . StringReader ;
import  java . util . Scanner ;

/**
 * 1 - Does this piece of code perform the operations
 *     it was designed to perform?
 *
 * 2 - Does this piece of code do something it was not
 *     designed to perform?
 *
 * 1 Test per mutator
 */
@ FixMethodOrder ( MethodSorters . NAME_ASCENDING )
public   class   TestConsumable
{
    @ Test
     public   void  testDefaultConstructor ()
     {
         Consumable  imagination  =   new   Consumable ();

         Item   genericRef  =   ( Item )  imagination ;

        assertTrue ( imagination . isStackable ());
        assertTrue ( genericRef . isStackable ());

         // I should really complete this unit test with calls to each of the
         // accessors. However, I will forgo the remaining checks for this test

         // I should really check display() and/or operator<< here. However, I will
         // do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testCopyConstructor ()
     {
         Consumable  tea  =   new   Consumable ();
        tea . setName ( "Green Tea" );
        tea . setEffect ( "Wake Up" );
        tea . setNumberOfUses ( 10 );

         Consumable  moreTea  =   new   Consumable ( tea );

        assertThat ( moreTea . isStackable (),  is ( true ));
        assertThat ( moreTea . getName (),  equalTo ( "Green Tea" ));
        assertThat ( moreTea . getEffect (),  equalTo ( "Wake Up" ));
        assertThat ( moreTea . getNumberOfUses (),  is ( 10 ));

         // I should really complete this unit test with calls to each of the
         // accessors. However, I will forgo the remaining checks for this test

         // I should really check display() and/or operator<< here. However, I
         // will do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testClone ()
     {
         Consumable  tea  =   new   Consumable ();
        tea . setName ( "Green Tea" );
        tea . setEffect ( "Wake Up" );
        tea . setNumberOfUses ( 10 );

         Consumable  moreTea  =   ( Consumable )  tea . clone ();

        assertThat ( moreTea . isStackable (),  is ( true ));
        assertThat ( moreTea . getName (),  equalTo ( "Green Tea" ));
        assertThat ( moreTea . getEffect (),  equalTo ( "Wake Up" ));
        assertThat ( moreTea . getNumberOfUses (),  is ( 10 ));

         // I should really complete this unit test with calls to each of the
         // accessors. However, I will forgo the remaining checks for this test

         // I should really check display() and/or operator<< here. However, I
         // will do that in a separate `testDisplay` function
     }

    @ Test
     public   void  testToString ()
     {
         Consumable  tea  =   new   Consumable ();
        tea . setName ( "Green Tea" );
        tea . setEffect ( "Wake Up" );
        tea . setNumberOfUses ( 10 );

         String  expected  =   "  Nme: Green Tea\n"
                         +   "  Eft: Wake Up\n"
                         +   "  Use: 10\n" ;

        assertThat ( tea . toString (),  equalTo ( expected ));
     }

    @ Test
     public   void  testRead ()
     {
         Consumable  tea  =   new   Consumable ();

         String  inputStr  =   "Green-Tea Wake-Up 5" ;
         Scanner  ins  =   new   Scanner ( new   StringReader ( inputStr ));

        tea . read ( ins );

        assertTrue ( tea . isStackable ());
        assertThat ( tea . getName (),  equalTo ( "Green-Tea" ));
        assertThat ( tea . getEffect (),  equalTo ( "Wake-Up" ));
        assertThat ( tea . getNumberOfUses (),  is ( 5 ));
     }
}

gradle/wrapper/gradle-wrapper.jar

META-INF/MANIFEST.MF

Manifest-Version: 1.0 Implementation-Title: Gradle Implementation-Version: 3.1

org/gradle/wrapper/Download$1.class

package org.gradle.wrapper;
synchronized class Download$1 {
}

org/gradle/wrapper/Download$SystemPropertiesProxyAuthenticator.class

package org.gradle.wrapper;
synchronized class Download$SystemPropertiesProxyAuthenticator extends java.net.Authenticator {
    private void Download$SystemPropertiesProxyAuthenticator();
    protected java.net.PasswordAuthentication getPasswordAuthentication();
}

org/gradle/wrapper/IDownload.class

package org.gradle.wrapper;
public abstract interface IDownload {
    public abstract void download(java.net.URI, java.io.File) throws Exception;
}

org/gradle/wrapper/GradleUserHomeLookup.class

package org.gradle.wrapper;
public synchronized class GradleUserHomeLookup {
    public static final String DEFAULT_GRADLE_USER_HOME;
    public static final String GRADLE_USER_HOME_PROPERTY_KEY = gradle.user.home;
    public static final String GRADLE_USER_HOME_ENV_KEY = GRADLE_USER_HOME;
    public void GradleUserHomeLookup();
    public static java.io.File gradleUserHome();
    static void <clinit>();
}

org/gradle/wrapper/ExclusiveFileAccessManager.class

package org.gradle.wrapper;
public synchronized class ExclusiveFileAccessManager {
    public static final String LOCK_FILE_SUFFIX = .lck;
    private final int timeoutMs;
    private final int pollIntervalMs;
    public void ExclusiveFileAccessManager(int, int);
    public Object access(java.io.File, java.util.concurrent.Callable) throws Exception;
    private static void maybeCloseQuietly(java.io.Closeable);
}

org/gradle/wrapper/WrapperConfiguration.class

package org.gradle.wrapper;
public synchronized class WrapperConfiguration {
    private java.net.URI distribution;
    private String distributionBase;
    private String distributionPath;
    private String distributionSha256Sum;
    private String zipBase;
    private String zipPath;
    public void WrapperConfiguration();
    public java.net.URI getDistribution();
    public void setDistribution(java.net.URI);
    public String getDistributionBase();
    public void setDistributionBase(String);
    public String getDistributionPath();
    public void setDistributionPath(String);
    public String getDistributionSha256Sum();
    public void setDistributionSha256Sum(String);
    public String getZipBase();
    public void setZipBase(String);
    public String getZipPath();
    public void setZipPath(String);
}

org/gradle/wrapper/SystemPropertiesHandler.class

package org.gradle.wrapper;
public synchronized class SystemPropertiesHandler {
    static final String SYSTEM_PROP_PREFIX = systemProp.;
    public void SystemPropertiesHandler();
    public static java.util.Map getSystemProperties(java.io.File);
}

org/gradle/wrapper/Logger.class

package org.gradle.wrapper;
public synchronized class Logger implements Appendable {
    private final boolean quiet;
    public void Logger(boolean);
    public void log(String);
    public Appendable append(CharSequence);
    public Appendable append(CharSequence, int, int);
    public Appendable append(char);
}

org/gradle/wrapper/PathAssembler.class

package org.gradle.wrapper;
public synchronized class PathAssembler {
    public static final String GRADLE_USER_HOME_STRING = GRADLE_USER_HOME;
    public static final String PROJECT_STRING = PROJECT;
    private java.io.File gradleUserHome;
    public void PathAssembler();
    public void PathAssembler(java.io.File);
    public PathAssembler$LocalDistribution getDistribution(WrapperConfiguration);
    private String rootDirName(String, WrapperConfiguration);
    private String getHash(String);
    private String removeExtension(String);
    private String getDistName(java.net.URI);
    private java.io.File getBaseDir(String);
}

org/gradle/wrapper/Install.class

package org.gradle.wrapper;
public synchronized class Install {
    public static final String DEFAULT_DISTRIBUTION_PATH = wrapper/dists;
    private final Logger logger;
    private final IDownload download;
    private final PathAssembler pathAssembler;
    private final ExclusiveFileAccessManager exclusiveFileAccessManager;
    public void Install(Logger, IDownload, PathAssembler);
    public java.io.File createDist(WrapperConfiguration) throws Exception;
    private String calculateSha256Sum(java.io.File) throws Exception;
    private java.io.File getAndVerifyDistributionRoot(java.io.File, String) throws Exception;
    private void verifyDownloadChecksum(String, java.io.File, String) throws Exception;
    private java.util.List listDirs(java.io.File);
    private void setExecutablePermissions(java.io.File);
    private boolean isWindows();
    private boolean deleteDir(java.io.File);
    private void unzip(java.io.File, java.io.File) throws java.io.IOException;
    private void copyInputStream(java.io.InputStream, java.io.OutputStream) throws java.io.IOException;
}

org/gradle/wrapper/BootstrapMainStarter.class

package org.gradle.wrapper;
public synchronized class BootstrapMainStarter {
    public void BootstrapMainStarter();
    public void start(String[], java.io.File) throws Exception;
    private java.io.File findLauncherJar(java.io.File);
}

org/gradle/wrapper/WrapperExecutor.class

package org.gradle.wrapper;
public synchronized class WrapperExecutor {
    public static final String DISTRIBUTION_URL_PROPERTY = distributionUrl;
    public static final String DISTRIBUTION_BASE_PROPERTY = distributionBase;
    public static final String DISTRIBUTION_PATH_PROPERTY = distributionPath;
    public static final String DISTRIBUTION_SHA_256_SUM = distributionSha256Sum;
    public static final String ZIP_STORE_BASE_PROPERTY = zipStoreBase;
    public static final String ZIP_STORE_PATH_PROPERTY = zipStorePath;
    private final java.util.Properties properties;
    private final java.io.File propertiesFile;
    private final WrapperConfiguration config;
    public static WrapperExecutor forProjectDirectory(java.io.File);
    public static WrapperExecutor forWrapperPropertiesFile(java.io.File);
    void WrapperExecutor(java.io.File, java.util.Properties);
    private java.net.URI prepareDistributionUri() throws java.net.URISyntaxException;
    private java.net.URI readDistroUrl() throws java.net.URISyntaxException;
    private static void loadProperties(java.io.File, java.util.Properties) throws java.io.IOException;
    public java.net.URI getDistribution();
    public WrapperConfiguration getConfiguration();
    public void execute(String[], Install, BootstrapMainStarter) throws Exception;
    private String getProperty(String);
    private String getProperty(String, String);
    private String getProperty(String, String, boolean);
    private String reportMissingProperty(String);
}

org/gradle/wrapper/GradleWrapperMain.class

package org.gradle.wrapper;
public synchronized class GradleWrapperMain {
    public static final String GRADLE_USER_HOME_OPTION = g;
    public static final String GRADLE_USER_HOME_DETAILED_OPTION = gradle-user-home;
    public static final String GRADLE_QUIET_OPTION = q;
    public static final String GRADLE_QUIET_DETAILED_OPTION = quiet;
    public void GradleWrapperMain();
    public static void main(String[]) throws Exception;
    private static void addSystemProperties(java.io.File, java.io.File);
    private static java.io.File rootDir(java.io.File);
    private static java.io.File wrapperProperties(java.io.File);
    private static java.io.File wrapperJar();
    static String wrapperVersion();
    private static java.io.File gradleUserHome(org.gradle.cli.ParsedCommandLine);
    private static Logger logger(org.gradle.cli.ParsedCommandLine);
}

org/gradle/wrapper/Install$1.class

package org.gradle.wrapper;
synchronized class Install$1 implements java.util.concurrent.Callable {
    void Install$1(Install, java.io.File, java.io.File, java.net.URI, WrapperConfiguration, String);
    public java.io.File call() throws Exception;
}

org/gradle/wrapper/PathAssembler$LocalDistribution.class

package org.gradle.wrapper;
public synchronized class PathAssembler$LocalDistribution {
    private final java.io.File distZip;
    private final java.io.File distDir;
    public void PathAssembler$LocalDistribution(PathAssembler, java.io.File, java.io.File);
    public java.io.File getDistributionDir();
    public java.io.File getZipFile();
}

org/gradle/wrapper/Download.class

package org.gradle.wrapper;
public synchronized class Download implements IDownload {
    private static final int PROGRESS_CHUNK = 20000;
    private static final int BUFFER_SIZE = 10000;
    private final Logger logger;
    private final String applicationName;
    private final String applicationVersion;
    public void Download(Logger, String, String);
    private void configureProxyAuthentication();
    public void download(java.net.URI, java.io.File) throws Exception;
    private void downloadInternal(java.net.URI, java.io.File) throws Exception;
    private String calculateUserAgent();
}

gradle-wrapper-classpath.properties

projects=gradle-cli runtime=

build-receipt.properties

buildTimestamp=20160919105353+0000 commitId=13f38ba699afd86d7cdc4ed8fd7dd3960c0b1f97 isSnapshot=false versionBase=3.1 versionNumber=3.1

org/gradle/cli/AbstractCommandLineConverter.class

package org.gradle.cli;
public abstract synchronized class AbstractCommandLineConverter implements CommandLineConverter {
    public void AbstractCommandLineConverter();
    public Object convert(Iterable, Object) throws CommandLineArgumentException;
}

org/gradle/cli/CommandLineParser$1.class

package org.gradle.cli;
synchronized class CommandLineParser$1 {
}

org/gradle/cli/CommandLineParser$MissingOptionArgState.class

package org.gradle.cli;
synchronized class CommandLineParser$MissingOptionArgState extends CommandLineParser$ParserState {
    private final CommandLineParser$OptionParserState option;
    private void CommandLineParser$MissingOptionArgState(CommandLineParser$OptionParserState);
    public boolean maybeStartOption(String);
    public CommandLineParser$OptionParserState onStartOption(String, String);
    public CommandLineParser$ParserState onNonOption(String);
    public void onCommandLineEnd();
}

org/gradle/cli/CommandLineParser$OptionStringComparator.class

package org.gradle.cli;
final synchronized class CommandLineParser$OptionStringComparator implements java.util.Comparator {
    private void CommandLineParser$OptionStringComparator();
    public int compare(String, String);
}

org/gradle/cli/CommandLineArgumentException.class

package org.gradle.cli;
public synchronized class CommandLineArgumentException extends RuntimeException {
    public void CommandLineArgumentException(String);
    public void CommandLineArgumentException(String, Throwable);
}

org/gradle/cli/CommandLineParser$KnownOptionParserState.class

package org.gradle.cli;
synchronized class CommandLineParser$KnownOptionParserState extends CommandLineParser$OptionParserState {
    private final CommandLineParser$OptionString optionString;
    private final CommandLineOption option;
    private final ParsedCommandLine commandLine;
    private final CommandLineParser$ParserState state;
    private final java.util.List values;
    private void CommandLineParser$KnownOptionParserState(CommandLineParser, CommandLineParser$OptionString, CommandLineOption, ParsedCommandLine, CommandLineParser$ParserState);
    public CommandLineParser$ParserState onArgument(String);
    public CommandLineParser$ParserState onStartNextArg();
    public boolean getHasArgument();
    public CommandLineParser$ParserState onComplete();
}

org/gradle/cli/CommandLineParser$OptionComparator.class

package org.gradle.cli;
final synchronized class CommandLineParser$OptionComparator implements java.util.Comparator {
    private void CommandLineParser$OptionComparator();
    public int compare(CommandLineOption, CommandLineOption);
}

org/gradle/cli/CommandLineParser$UnknownOptionParserState.class

package org.gradle.cli;
synchronized class CommandLineParser$UnknownOptionParserState extends CommandLineParser$OptionParserState {
    private final CommandLineParser$ParserState state;
    private final String arg;
    private final ParsedCommandLine commandLine;
    private void CommandLineParser$UnknownOptionParserState(String, ParsedCommandLine, CommandLineParser$ParserState);
    public boolean getHasArgument();
    public CommandLineParser$ParserState onStartNextArg();
    public CommandLineParser$ParserState onArgument(String);
    public CommandLineParser$ParserState onComplete();
}

org/gradle/cli/CommandLineOption.class

package org.gradle.cli;
public synchronized class CommandLineOption {
    private final java.util.Set options;
    private Class argumentType;
    private String description;
    private String deprecationWarning;
    private boolean incubating;
    private final java.util.Set groupWith;
    public void CommandLineOption(Iterable);
    public java.util.Set getOptions();
    public CommandLineOption hasArgument(Class);
    public CommandLineOption hasArgument();
    public CommandLineOption hasArguments();
    public String getDescription();
    public CommandLineOption hasDescription(String);
    public boolean getAllowsArguments();
    public boolean getAllowsMultipleArguments();
    public CommandLineOption deprecated(String);
    public CommandLineOption incubating();
    public String getDeprecationWarning();
    java.util.Set getGroupWith();
    void groupWith(java.util.Set);
}

org/gradle/cli/CommandLineParser$OptionParserState.class

package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionParserState {
    private void CommandLineParser$OptionParserState();
    public abstract CommandLineParser$ParserState onStartNextArg();
    public abstract CommandLineParser$ParserState onArgument(String);
    public abstract boolean getHasArgument();
    public abstract CommandLineParser$ParserState onComplete();
}

org/gradle/cli/ParsedCommandLine.class

package org.gradle.cli;
public synchronized class ParsedCommandLine {
    private final java.util.Map optionsByString;
    private final java.util.Set presentOptions;
    private final java.util.Set removedOptions;
    private final java.util.List extraArguments;
    void ParsedCommandLine(Iterable);
    public String toString();
    private String quoteAndJoin(Iterable);
    public boolean hasOption(String);
    public boolean hadOptionRemoved(String);
    public boolean hasAnyOption(java.util.Collection);
    public ParsedCommandLineOption option(String);
    public java.util.List getExtraArguments();
    void addExtraValue(String);
    ParsedCommandLineOption addOption(String, CommandLineOption);
    void removeOption(CommandLineOption);
}

org/gradle/cli/ProjectPropertiesCommandLineConverter.class

package org.gradle.cli;
public synchronized class ProjectPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
    public void ProjectPropertiesCommandLineConverter();
    protected String getPropertyOption();
    protected String getPropertyOptionDetailed();
    protected String getPropertyOptionDescription();
}

org/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.class

package org.gradle.cli;
final synchronized class CommandLineParser$CaseInsensitiveStringComparator implements java.util.Comparator {
    private void CommandLineParser$CaseInsensitiveStringComparator();
    public int compare(String, String);
}

org/gradle/cli/CommandLineParser.class

package org.gradle.cli;
public synchronized class CommandLineParser {
    private static final java.util.regex.Pattern OPTION_NAME_PATTERN;
    private java.util.Map optionsByString;
    private boolean allowMixedOptions;
    private boolean allowUnknownOptions;
    private final java.io.PrintWriter deprecationPrinter;
    public void CommandLineParser();
    public void CommandLineParser(java.io.Writer);
    public transient ParsedCommandLine parse(String[]) throws CommandLineArgumentException;
    public ParsedCommandLine parse(Iterable) throws CommandLineArgumentException;
    public CommandLineParser allowMixedSubcommandsAndOptions();
    public CommandLineParser allowUnknownOptions();
    public transient CommandLineParser allowOneOf(String[]);
    public void printUsage(Appendable);
    private static String join(java.util.Collection, String);
    public transient CommandLineOption option(String[]);
    static void <clinit>();
}

org/gradle/cli/CommandLineParser$AfterOptions.class

package org.gradle.cli;
synchronized class CommandLineParser$AfterOptions extends CommandLineParser$ParserState {
    private final ParsedCommandLine commandLine;
    private void CommandLineParser$AfterOptions(ParsedCommandLine);
    public boolean maybeStartOption(String);
    public CommandLineParser$OptionParserState onStartOption(String, String);
    public CommandLineParser$ParserState onNonOption(String);
}

org/gradle/cli/CommandLineParser$OptionString.class

package org.gradle.cli;
synchronized class CommandLineParser$OptionString {
    private final String arg;
    private final String option;
    private void CommandLineParser$OptionString(String, String);
    public String getDisplayName();
    public String toString();
}

org/gradle/cli/AbstractPropertiesCommandLineConverter.class

package org.gradle.cli;
public abstract synchronized class AbstractPropertiesCommandLineConverter extends AbstractCommandLineConverter {
    public void AbstractPropertiesCommandLineConverter();
    protected abstract String getPropertyOption();
    protected abstract String getPropertyOptionDetailed();
    protected abstract String getPropertyOptionDescription();
    public void configure(CommandLineParser);
    public java.util.Map convert(ParsedCommandLine, java.util.Map) throws CommandLineArgumentException;
}

org/gradle/cli/ParsedCommandLineOption.class

package org.gradle.cli;
public synchronized class ParsedCommandLineOption {
    private final java.util.List values;
    public void ParsedCommandLineOption();
    public String getValue();
    public java.util.List getValues();
    public void addArgument(String);
    public boolean hasValue();
}

org/gradle/cli/CommandLineParser$OptionAwareParserState.class

package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionAwareParserState extends CommandLineParser$ParserState {
    protected final ParsedCommandLine commandLine;
    protected void CommandLineParser$OptionAwareParserState(CommandLineParser, ParsedCommandLine);
    public boolean maybeStartOption(String);
    public CommandLineParser$ParserState onNonOption(String);
}

org/gradle/cli/CommandLineConverter.class

package org.gradle.cli;
public abstract interface CommandLineConverter {
    public abstract Object convert(Iterable, Object) throws CommandLineArgumentException;
    public abstract Object convert(ParsedCommandLine, Object) throws CommandLineArgumentException;
    public abstract void configure(CommandLineParser);
}

org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.class

package org.gradle.cli;
synchronized class CommandLineParser$BeforeFirstSubCommand extends CommandLineParser$OptionAwareParserState {
    private void CommandLineParser$BeforeFirstSubCommand(CommandLineParser, ParsedCommandLine);
    public CommandLineParser$OptionParserState onStartOption(String, String);
}

org/gradle/cli/SystemPropertiesCommandLineConverter.class

package org.gradle.cli;
public synchronized class SystemPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
    public void SystemPropertiesCommandLineConverter();
    protected String getPropertyOption();
    protected String getPropertyOptionDetailed();
    protected String getPropertyOptionDescription();
}

org/gradle/cli/CommandLineParser$ParserState.class

package org.gradle.cli;
abstract synchronized class CommandLineParser$ParserState {
    private void CommandLineParser$ParserState();
    public abstract boolean maybeStartOption(String);
    boolean isOption(String);
    public abstract CommandLineParser$OptionParserState onStartOption(String, String);
    public abstract CommandLineParser$ParserState onNonOption(String);
    public void onCommandLineEnd();
}

org/gradle/cli/CommandLineParser$AfterFirstSubCommand.class

package org.gradle.cli;
synchronized class CommandLineParser$AfterFirstSubCommand extends CommandLineParser$OptionAwareParserState {
    private void CommandLineParser$AfterFirstSubCommand(CommandLineParser, ParsedCommandLine);
    public CommandLineParser$OptionParserState onStartOption(String, String);
}

gradle-cli-classpath.properties

projects= runtime=

gradle/wrapper/gradle-wrapper.properties

#Wed Feb 22 15:34:37 EST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-all.zip

config/checkstyle/checkstyle.xml

build.gradle

buildscript { repositories { jcenter() } } plugins { id "java" id "application" id "eclipse" id "checkstyle" id "com.github.spotbugs" version "2.0.0" id "project-report" id "jacoco" id "pmd" } sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { jcenter() } dependencies { testCompile "junit:junit:4.12" testCompile "org.hamcrest:hamcrest-library:1.3" } jar { baseName = "Storage" manifest { attributes( "Main-Class": "edu.odu.cs.cs330.Storage" ) } } application { mainClassName = "edu.odu.cs.cs330.Storage" } run { main = "edu.odu.cs.cs330.Storage" args = ["src/main/resources/items-01.txt"] } test { reports { html.enabled = true } ignoreFailures = true testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" } } javadoc { failOnError false } //------------------------------------------------------------------------------ // Analysis Tools //------------------------------------------------------------------------------ // SpotBugs spotbugsMain { ignoreFailures = true effort = "max" reportLevel = "medium" reports { xml.enabled = false html.enabled = true } } spotbugsTest.enabled = false // End SpotBugs config jacoco { toolVersion = "0.8.5" } jacocoTestReport { reports { html.enabled true xml.enabled true csv.enabled true } } // Check Style Config checkstyle { ignoreFailures = true showViolations = false configFile = "checkstyle.xml" as File } tasks.withType(Checkstyle) { reports { html.destination project.file("build/reports/checkstyle/main.html") } } checkstyleTest.enabled = false // End Checkstyle config pmd { ignoreFailures = true ruleSets = [ "category/java/bestpractices.xml", "category/java/codestyle.xml", "category/java/design.xml", "category/java/errorprone.xml", "category/java/performance.xml" ] }

gradle.properties

org.gradle.daemon=false