Merge branch 'feature-file-management' into feature-1551-1561-1708
This commit is contained in:
@@ -6,6 +6,10 @@ Author: Trenser
|
||||
Date: 19-May-2026
|
||||
*/
|
||||
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include "Factory.h"
|
||||
#include "StringHelper.h"
|
||||
#include "InventoryItem.h"
|
||||
|
||||
int InventoryItem::m_uid = 0;
|
||||
@@ -43,6 +47,33 @@ InventoryItem::InventoryItem(const std::string& partName, int quantity, double p
|
||||
m_status(util::State::ACTIVE),
|
||||
m_price(price) {}
|
||||
|
||||
/*
|
||||
Function: InventoryItem (parameterized constructor with ID)
|
||||
Description: Initializes an inventory item with an existing ID, part name, quantity,
|
||||
price, and state. Updates UID tracking based on ID.
|
||||
Parameters:
|
||||
- id: const std::string&, unique ID of the item
|
||||
- partName: const std::string&, name of the part
|
||||
- quantity: int, quantity of the part
|
||||
- price: double, price of the part
|
||||
- status: util::State, state of the item (ACTIVE/INACTIVE)
|
||||
Returns:
|
||||
- A new InventoryItem object
|
||||
*/
|
||||
InventoryItem::InventoryItem(const std::string& id, const std::string& partName, int quantity, double price, util::State status)
|
||||
: m_id(id),
|
||||
m_partName(partName),
|
||||
m_quantity(quantity),
|
||||
m_status(status),
|
||||
m_price(price)
|
||||
{
|
||||
int idNumber = util::extractNumber(m_id);
|
||||
if (idNumber > m_uid)
|
||||
{
|
||||
m_uid = idNumber;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Function: getId
|
||||
Description: Retrieves the unique ID of the inventory item.
|
||||
@@ -171,4 +202,77 @@ Returns:
|
||||
void InventoryItem::setState(util::State status)
|
||||
{
|
||||
m_status = status;
|
||||
}
|
||||
|
||||
/*
|
||||
Function: serialize
|
||||
Description: Serializes the inventory item into a CSV-formatted string.
|
||||
Parameters:
|
||||
- None
|
||||
Returns:
|
||||
- std::string: Serialized inventory item record
|
||||
*/
|
||||
std::string InventoryItem::serialize() const
|
||||
{
|
||||
std::ostringstream serializedInventoryItem;
|
||||
serializedInventoryItem << m_id << ','
|
||||
<< m_partName << ','
|
||||
<< m_quantity << ','
|
||||
<< m_price << ','
|
||||
<< util::getStateString(m_status);
|
||||
return serializedInventoryItem.str();
|
||||
}
|
||||
|
||||
/*
|
||||
Function: deserialize
|
||||
Description: Deserializes a CSV-formatted string into an InventoryItem object.
|
||||
Parameters:
|
||||
- record: const std::string&, serialized inventory item record
|
||||
Returns:
|
||||
- InventoryItem*: Pointer to the deserialized InventoryItem object
|
||||
Throws:
|
||||
- std::runtime_error if data is invalid
|
||||
*/
|
||||
InventoryItem* InventoryItem::deserialize(const std::string& record)
|
||||
{
|
||||
std::string id, partName;
|
||||
std::string quantityString, priceString, statusString;
|
||||
int quantity;
|
||||
double price;
|
||||
std::istringstream serializedInventoryItem(record);
|
||||
getline(serializedInventoryItem, id, ',');
|
||||
getline(serializedInventoryItem, partName, ',');
|
||||
getline(serializedInventoryItem, quantityString, ',');
|
||||
getline(serializedInventoryItem, priceString, ',');
|
||||
getline(serializedInventoryItem, statusString, ',');
|
||||
try
|
||||
{
|
||||
quantity = std::stoi(quantityString);
|
||||
price = std::stod(priceString);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
throw std::runtime_error("Invalid inventory item data");
|
||||
}
|
||||
util::State status = util::getState(statusString);
|
||||
return Factory::getObject<InventoryItem>(
|
||||
id,
|
||||
partName,
|
||||
quantity,
|
||||
price,
|
||||
status
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
Function: getHeaders
|
||||
Description: Retrieves the CSV headers for inventory item serialization.
|
||||
Parameters:
|
||||
- None
|
||||
Returns:
|
||||
- std::string: Header string ("ID,PartName,Quantity,Price,Status")
|
||||
*/
|
||||
std::string InventoryItem::getHeaders()
|
||||
{
|
||||
return "ID,PartName,Quantity,Price,Status";
|
||||
}
|
||||
Reference in New Issue
Block a user