- This system can manage items of different dimensions (in cubic metre dimensions) in various slots (with cubic metre sizes).
- Items that cannot be added to the Warehouse on a particular day is put into a Queue, and further put into the Warehouse when possible.
- Periodically, the Warehouse will optimize its storage slots by rearranging the items in the best possible manner.
- The Warehouse Management System is available for both Windows OS and other operating systems.
- If the system is running Windows OS, download and run the Windows exe file WMS4W.exe
- If the system is running other operating systems, download the jar file convert to a suitable file type.
Please note that in addition to the JRE System Library, the following JAR files / Libraries were used:
- JUnit 5 (for testing)
- Log4j and Jcabi and the Eclipse Plugin ANSI Escape in Console (for logging)
- Maven Project in Eclipse
- First, a user is required to choose the input method, either through File Input or System Input.
- If a user choose the file input method, the user is required to input the file path for the command file (Text file is recommended). The available command is listed in the "List of commands" section. For example, if a user need to add an item, the command file should contain a line of "addItem|4|14-Oct-2020", indicate the command of adding an item of size 4, deliver at 14-Oct-2020. Please be noted that system date should be set before a user create a slot, and a slot should be created before an item is added. Or else exceptions will be thrown.
- However, if the system input is selected, then the user will only need to follow the prompt instructions and type the representing number of the command when prompted. For details, please refer to "list of command" section.
- No matter what method a user is using (file input method or system input method), the user is always manipulating the same warehouse system. As the methods are interrelated, the changes made in either method can also been seen in the system.
- In addition, for the optimization command, a user can manually input the optimization command and turn the automatic optimization off by using "changeStatus" command (Not recommend). In normal situation, the warehouse will automatically optimize the warehouse when the warehouse is half full. So it is not necessary to use the manually optimize command.
- Last but not least, all other commands can be found in the next section, there are three types of command which serve the purpose in warehouse operation, visualization, and system settings.
- Lastly, if the warehouse requires reset, a user can reset through system command input. (Highly not recommended)
The following list is represented in the format:-
Command Name: Command with expected Arguments in expected Format
Note: The arguments are enclosed in parenthesis here only for understanding purposes
- Add Slot: addSlot|(Size)
- Add Item: addItem|(Size)|(DeliveryDate)
- Manually Optimize: optimize
- Visualize: visualize
- List Slot By ID: listSlotByID|(ItemID)
- List Item By ID: listItemByID|(SlotID)
- List Warehouse Details: listWarehouse
- Undo: undo Note: Not every command can be undone
- Redo: redo Note: Not every command can be redone
- System Reset Note: Not available in file input method
- (For Demo) Set Date: setNewDay|(Date)
- (For Demo) Change Auto Optimization Status: changeStatus
- EXIT Note: Not available in file input method
- Denial of negative volume valued items.
- Terminate the execution of items that have the delivery date earlier than the arrival date.
- Handling the exception when slot value=null
- Handling the IndexOutOfBounds Exception
- Process items that should be delivered up to this date.
- Necessity to check if the given date is valid or not (54-Oct-2014 or 29-Feb-2021).
- Lack of the method to check for the expiration of items in the queue.
- Exception Handling needed for the CmdListItemByID.
- Items added from queue to the warehouse is limited to the number of items left instead of limiting it to the volume released by those items.
- Exception Handling needed for the Optimize.
- Exception Handling needed for CmdListWarehouse
- Denny
- Daniyar
- Anirudh
- Harvey
- Kalys
- Nursultan