Units/amount complete.
This commit is contained in:
parent
6ce0f76483
commit
5b81de7484
@ -173,7 +173,7 @@ public class ShoppingList
|
|||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean send()
|
public boolean sendViaEmail()
|
||||||
{
|
{
|
||||||
StringBuilder shoppingListString = new StringBuilder();
|
StringBuilder shoppingListString = new StringBuilder();
|
||||||
|
|
||||||
|
@ -59,6 +59,9 @@ public class ShoppingListEntry
|
|||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if(amount <= 0 && unit != null && !unit.isDummy)
|
||||||
|
return false;
|
||||||
|
|
||||||
conn = DatabaseHandler.getInstance().getConnection();
|
conn = DatabaseHandler.getInstance().getConnection();
|
||||||
|
|
||||||
if(!combinationExists(this.getParentList(), this.getProduct(), this.getUnit()))
|
if(!combinationExists(this.getParentList(), this.getProduct(), this.getUnit()))
|
||||||
@ -85,7 +88,7 @@ public class ShoppingListEntry
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
updateAmount();
|
return updateAmount(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
@ -113,6 +116,9 @@ public class ShoppingListEntry
|
|||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if(amount <= 0 && unit != null && !unit.isDummy)
|
||||||
|
return false;
|
||||||
|
|
||||||
conn = DatabaseHandler.getInstance().getConnection();
|
conn = DatabaseHandler.getInstance().getConnection();
|
||||||
|
|
||||||
if(this.getAmount() == 0 || this.getUnit().isDummy())
|
if(this.getAmount() == 0 || this.getUnit().isDummy())
|
||||||
@ -127,7 +133,7 @@ public class ShoppingListEntry
|
|||||||
|
|
||||||
long numAffectedRows = preparedStmt.executeUpdate();
|
long numAffectedRows = preparedStmt.executeUpdate();
|
||||||
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
||||||
ResultSet rs = preparedStmt.getGeneratedKeys();
|
// ResultSet rs = preparedStmt.getGeneratedKeys();
|
||||||
// if (numAffectedRows > 0)
|
// if (numAffectedRows > 0)
|
||||||
// {
|
// {
|
||||||
preparedStmt.close();
|
preparedStmt.close();
|
||||||
@ -137,7 +143,9 @@ public class ShoppingListEntry
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(combinationExists(this.getParentList(), this.getProduct(), this.getUnit()))
|
if(combinationExists(this.getParentList(), this.getProduct(), this.getUnit()))
|
||||||
return updateAmount();
|
return updateAmount(true);
|
||||||
|
else
|
||||||
|
return true; // Combination to be deleted does not exist. So what?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
@ -159,7 +167,7 @@ public class ShoppingListEntry
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean updateAmount()
|
protected boolean updateAmount(boolean delete)
|
||||||
{
|
{
|
||||||
String query = "SELECT * FROM listEntries WHERE listId=? AND productId=? AND unit=?";
|
String query = "SELECT * FROM listEntries WHERE listId=? AND productId=? AND unit=?";
|
||||||
|
|
||||||
@ -179,14 +187,22 @@ public class ShoppingListEntry
|
|||||||
if(res.next())
|
if(res.next())
|
||||||
{
|
{
|
||||||
float currentAmount = res.getFloat("amount");
|
float currentAmount = res.getFloat("amount");
|
||||||
if(currentAmount + this.getAmount() > 0)
|
|
||||||
|
boolean condition = true;
|
||||||
|
if(delete)
|
||||||
|
condition = currentAmount - this.getAmount() > 0;
|
||||||
|
|
||||||
|
if(condition)
|
||||||
{
|
{
|
||||||
// Update the amount
|
// Update the amount
|
||||||
String updateQuery = "UPDATE listEntries set=? WHERE listId=? AND productId=? AND unit=?";
|
String updateQuery = "UPDATE listEntries SET amount=? WHERE listId=? AND productId=? AND unit=?";
|
||||||
preparedStmt = conn.prepareStatement(updateQuery);
|
preparedStmt = conn.prepareStatement(updateQuery);
|
||||||
|
|
||||||
preparedStmt.setFloat(1, currentAmount + this.getAmount());
|
if(delete)
|
||||||
preparedStmt.setLong(2, this.getProduct().getId());
|
preparedStmt.setFloat(1, currentAmount - this.getAmount());
|
||||||
|
else
|
||||||
|
preparedStmt.setFloat(1, currentAmount + this.getAmount());
|
||||||
|
preparedStmt.setLong(2, this.getParentList().getId());
|
||||||
preparedStmt.setLong(3, this.getProduct().getId());
|
preparedStmt.setLong(3, this.getProduct().getId());
|
||||||
preparedStmt.setLong(4, this.getUnit().getId());
|
preparedStmt.setLong(4, this.getUnit().getId());
|
||||||
|
|
||||||
@ -194,11 +210,11 @@ public class ShoppingListEntry
|
|||||||
|
|
||||||
long numAffectedRows = preparedStmt.executeUpdate();
|
long numAffectedRows = preparedStmt.executeUpdate();
|
||||||
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
||||||
ResultSet rs = preparedStmt.getGeneratedKeys();
|
// ResultSet rs = preparedStmt.getGeneratedKeys();
|
||||||
if (numAffectedRows > 0)
|
if (numAffectedRows > 0)
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("Amount added to existing entry.", 2);
|
Miscellaneous.logEvent("Amount added to existing entry.", 2);
|
||||||
rs.close();
|
// rs.close();
|
||||||
preparedStmt.close();
|
preparedStmt.close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -209,7 +225,7 @@ public class ShoppingListEntry
|
|||||||
String updateQuery = "DELETE FROM listEntries WHERE listId=? AND productId=? AND unit=?";
|
String updateQuery = "DELETE FROM listEntries WHERE listId=? AND productId=? AND unit=?";
|
||||||
preparedStmt = conn.prepareStatement(updateQuery);
|
preparedStmt = conn.prepareStatement(updateQuery);
|
||||||
|
|
||||||
preparedStmt.setLong(1, this.getProduct().getId());
|
preparedStmt.setLong(1, this.getParentList().getId());
|
||||||
preparedStmt.setLong(2, this.getProduct().getId());
|
preparedStmt.setLong(2, this.getProduct().getId());
|
||||||
preparedStmt.setLong(3, this.getUnit().getId());
|
preparedStmt.setLong(3, this.getUnit().getId());
|
||||||
|
|
||||||
@ -217,14 +233,16 @@ public class ShoppingListEntry
|
|||||||
|
|
||||||
long numAffectedRows = preparedStmt.executeUpdate();
|
long numAffectedRows = preparedStmt.executeUpdate();
|
||||||
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
Miscellaneous.logEvent("AMOUNT OF UPDATED ROWS: " + numAffectedRows, 5);
|
||||||
ResultSet rs = preparedStmt.getGeneratedKeys();
|
// ResultSet rs = preparedStmt.getGeneratedKeys();
|
||||||
if (numAffectedRows > 0)
|
if (numAffectedRows > 0)
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("Resulting amount < 0, entry deleted.", 2);
|
Miscellaneous.logEvent("Resulting amount < 0, entry deleted.", 2);
|
||||||
rs.close();
|
// rs.close();
|
||||||
preparedStmt.close();
|
preparedStmt.close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
preparedStmt.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,8 +272,6 @@ public class ShoppingListEntry
|
|||||||
|
|
||||||
ResultSet res = preparedStmt.executeQuery();
|
ResultSet res = preparedStmt.executeQuery();
|
||||||
|
|
||||||
boolean found = false;
|
|
||||||
|
|
||||||
if(res.next())
|
if(res.next())
|
||||||
entryAmount = res.getLong("combinationAmount");
|
entryAmount = res.getLong("combinationAmount");
|
||||||
|
|
||||||
@ -272,4 +288,18 @@ public class ShoppingListEntry
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
if(this.getUnit() != null)
|
||||||
|
{
|
||||||
|
if(!this.getUnit().isDummy())
|
||||||
|
return String.valueOf(getAmount()) + " " + getUnit().getMainName() + " " + getProduct().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getProduct().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,9 +31,9 @@ public class Start
|
|||||||
// System.out.println("Found double dash with command " + argstring.substring(2, len) );
|
// System.out.println("Found double dash with command " + argstring.substring(2, len) );
|
||||||
String argName = argstring.substring(2, len);
|
String argName = argstring.substring(2, len);
|
||||||
doubleOptsList.add(argName);
|
doubleOptsList.add(argName);
|
||||||
if(argName.equalsIgnoreCase("amount"))
|
if(argName.equalsIgnoreCase("shoppingAmount"))
|
||||||
amount = Float.parseFloat(args[i+1].replace("\"", ""));
|
amount = Float.parseFloat(args[i+1].replace("\"", ""));
|
||||||
else if(argName.equalsIgnoreCase("unitName"))
|
else if(argName.equalsIgnoreCase("shoppingUnit"))
|
||||||
unitName = args[i+1].replace("\"", "");
|
unitName = args[i+1].replace("\"", "");
|
||||||
else if(argName.equalsIgnoreCase("shoppingProduct"))
|
else if(argName.equalsIgnoreCase("shoppingProduct"))
|
||||||
productName = args[i+1].replace("\"", "");
|
productName = args[i+1].replace("\"", "");
|
||||||
@ -75,25 +75,28 @@ public class Start
|
|||||||
Unit u = Unit.getByName(unitName);
|
Unit u = Unit.getByName(unitName);
|
||||||
Product p = Product.getByName(productName);
|
Product p = Product.getByName(productName);
|
||||||
|
|
||||||
if(list == null)
|
|
||||||
exitWithError(Settings.languageBlock.get("couldNotCreateList"));
|
|
||||||
|
|
||||||
if(p == null)
|
|
||||||
exitWithError(Settings.languageBlock.get("productNotFound") + " " + productName);
|
|
||||||
|
|
||||||
ShoppingListEntry entry = new ShoppingListEntry();
|
ShoppingListEntry entry = new ShoppingListEntry();
|
||||||
entry.setParentList(list);
|
entry.setParentList(list);
|
||||||
entry.setProduct(p);
|
entry.setProduct(p);
|
||||||
entry.setAmount(amount);
|
entry.setAmount(amount);
|
||||||
entry.setUnit(u);
|
entry.setUnit(u);
|
||||||
|
|
||||||
|
if(amount > 0 && (u == null || u.isDummy))
|
||||||
|
entry.setUnit(Unit.getPieceUnit());
|
||||||
|
|
||||||
|
if(list == null)
|
||||||
|
exitWithError(Settings.languageBlock.get("couldNotCreateList"));
|
||||||
|
|
||||||
|
if(p == null)
|
||||||
|
exitWithError(Settings.languageBlock.get("productNotFound") + " " + entry.toString());
|
||||||
|
|
||||||
if(entry.create())
|
if(entry.create())
|
||||||
{
|
{
|
||||||
DatabaseHandler.getInstance().disconnect();
|
DatabaseHandler.getInstance().disconnect();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
exitWithError(Settings.languageBlock.get("couldNotAddProdToList") + " " + productName);
|
exitWithError(Settings.languageBlock.get("couldNotAddProdToList") + " " + entry.toString());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
System.out.println(Settings.languageBlock.get("noProdSpecified"));
|
System.out.println(Settings.languageBlock.get("noProdSpecified"));
|
||||||
@ -103,26 +106,57 @@ public class Start
|
|||||||
{
|
{
|
||||||
ShoppingList list = ShoppingList.getMostRecentList();
|
ShoppingList list = ShoppingList.getMostRecentList();
|
||||||
Product p = Product.getByName(productName);
|
Product p = Product.getByName(productName);
|
||||||
|
Unit u = Unit.getByName(unitName);
|
||||||
|
|
||||||
|
ShoppingListEntry entry = new ShoppingListEntry();
|
||||||
|
entry.setParentList(list);
|
||||||
|
entry.setProduct(p);
|
||||||
|
entry.setAmount(amount);
|
||||||
|
entry.setUnit(u);
|
||||||
|
|
||||||
|
if(amount > 0 && (u == null || u.isDummy))
|
||||||
|
entry.setUnit(Unit.getPieceUnit());
|
||||||
|
|
||||||
if(list == null)
|
if(list == null)
|
||||||
exitWithError(Settings.languageBlock.get("couldNotCreateList"));
|
exitWithError(Settings.languageBlock.get("couldNotCreateList"));
|
||||||
|
|
||||||
if(p == null)
|
if(p == null)
|
||||||
exitWithError(Settings.languageBlock.get("productNotFound") + " " + productName);
|
exitWithError(Settings.languageBlock.get("productNotFound") + " " + entry.toString());
|
||||||
|
|
||||||
for(ShoppingListEntry entry : list.getEntries())
|
if(entry.delete())
|
||||||
{
|
{
|
||||||
if(entry.getProduct().equals(p))
|
DatabaseHandler.getInstance().disconnect();
|
||||||
{
|
System.exit(0);
|
||||||
if(entry.delete())
|
|
||||||
{
|
|
||||||
DatabaseHandler.getInstance().disconnect();
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Miscellaneous.logEvent(Settings.languageBlock.get("couldNotRemoveProdFromList") + " " + productName, 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
exitWithError(Settings.languageBlock.get("couldNotRemoveProdFromList") + " " + entry.toString());
|
||||||
|
|
||||||
|
// for(ShoppingListEntry entry : list.getEntries())
|
||||||
|
// {
|
||||||
|
// if(entry.getProduct().equals(p))
|
||||||
|
// {
|
||||||
|
// if(amount > 0 && u != null && !u.isDummy())
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// * Amount and unit specified. Adjust entries that may exist.
|
||||||
|
// */
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// /*
|
||||||
|
// * No amount unit or unit specified. Delete all existing entries
|
||||||
|
// * of that product from the list.
|
||||||
|
// */
|
||||||
|
// if(entry.delete())
|
||||||
|
// {
|
||||||
|
// DatabaseHandler.getInstance().disconnect();
|
||||||
|
// System.exit(0);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// Miscellaneous.logEvent(Settings.languageBlock.get("couldNotRemoveProdFromList") + " " + productName, 2);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
// If it wasn't on the list - why care?
|
// If it wasn't on the list - why care?
|
||||||
DatabaseHandler.getInstance().disconnect();
|
DatabaseHandler.getInstance().disconnect();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
@ -131,7 +165,7 @@ public class Start
|
|||||||
System.out.println(Settings.languageBlock.get("noProdSpecified"));
|
System.out.println(Settings.languageBlock.get("noProdSpecified"));
|
||||||
break;
|
break;
|
||||||
case "sendList":
|
case "sendList":
|
||||||
if(ShoppingList.getMostRecentList().send())
|
if(ShoppingList.getMostRecentList().sendViaEmail())
|
||||||
{
|
{
|
||||||
// System.out.println("Liste wurde verschickt.");
|
// System.out.println("Liste wurde verschickt.");
|
||||||
DatabaseHandler.getInstance().disconnect();
|
DatabaseHandler.getInstance().disconnect();
|
||||||
|
@ -19,6 +19,7 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
String abbreviation;
|
String abbreviation;
|
||||||
boolean isDefault;
|
boolean isDefault;
|
||||||
boolean isDummy;
|
boolean isDummy;
|
||||||
|
boolean isPiece;
|
||||||
|
|
||||||
public long getId()
|
public long getId()
|
||||||
{
|
{
|
||||||
@ -29,6 +30,14 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMainName()
|
||||||
|
{
|
||||||
|
if(name.contains(";"))
|
||||||
|
return name.split(";")[0];
|
||||||
|
else
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return name;
|
return name;
|
||||||
@ -65,6 +74,15 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
this.isDummy = isDummy;
|
this.isDummy = isDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPiece()
|
||||||
|
{
|
||||||
|
return isPiece;
|
||||||
|
}
|
||||||
|
public void setPiece(boolean isPiece)
|
||||||
|
{
|
||||||
|
this.isPiece = isPiece;
|
||||||
|
}
|
||||||
|
|
||||||
public static ArrayList<Unit> readAllUnits()
|
public static ArrayList<Unit> readAllUnits()
|
||||||
{
|
{
|
||||||
if(unitCache == null)
|
if(unitCache == null)
|
||||||
@ -97,6 +115,7 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
u.setAbbreviation(res.getString("abbreviation"));
|
u.setAbbreviation(res.getString("abbreviation"));
|
||||||
u.setDefault(res.getInt("isDefault") == 1);
|
u.setDefault(res.getInt("isDefault") == 1);
|
||||||
u.setDummy(res.getInt("isDummy") == 1);
|
u.setDummy(res.getInt("isDummy") == 1);
|
||||||
|
u.setPiece(res.getInt("isPiece") == 1);
|
||||||
|
|
||||||
unitCache.add(u);
|
unitCache.add(u);
|
||||||
}
|
}
|
||||||
@ -133,10 +152,13 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
|
|
||||||
for(Unit u : readAllUnits())
|
for(Unit u : readAllUnits())
|
||||||
{
|
{
|
||||||
if(u.getName().equalsIgnoreCase(unitName))
|
for(String unitSynonym : u.getName().split(";"))
|
||||||
return u;
|
{
|
||||||
else if(u.getName().equalsIgnoreCase(unitName.replace("-", " ")))
|
if(unitSynonym.equalsIgnoreCase(unitName))
|
||||||
return u;
|
return u;
|
||||||
|
else if(unitSynonym.equalsIgnoreCase(unitName.replace("-", " ")))
|
||||||
|
return u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -145,7 +167,10 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return getName();
|
if(getName().contains(";"))
|
||||||
|
return getName().split(";")[0];
|
||||||
|
else
|
||||||
|
return getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Unit getById(long id)
|
public static Unit getById(long id)
|
||||||
@ -161,7 +186,7 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
|
|
||||||
public boolean create()
|
public boolean create()
|
||||||
{
|
{
|
||||||
String query = "INSERT INTO units (name, abbreviation, isDefault, isDummy) VALUES (?, ?, ?, ?)";
|
String query = "INSERT INTO units (name, abbreviation, isDefault, isDummy, isPiece) VALUES (?, ?, ?, ?, ?)";
|
||||||
Connection conn = DatabaseHandler.getInstance().getConnection();
|
Connection conn = DatabaseHandler.getInstance().getConnection();
|
||||||
PreparedStatement preparedStmt = null;
|
PreparedStatement preparedStmt = null;
|
||||||
try
|
try
|
||||||
@ -180,6 +205,11 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
else
|
else
|
||||||
preparedStmt.setInt(4, 0);
|
preparedStmt.setInt(4, 0);
|
||||||
|
|
||||||
|
if(this.isPiece)
|
||||||
|
preparedStmt.setInt(5, 1);
|
||||||
|
else
|
||||||
|
preparedStmt.setInt(5, 0);
|
||||||
|
|
||||||
preparedStmt.executeUpdate();
|
preparedStmt.executeUpdate();
|
||||||
ResultSet rs = preparedStmt.getGeneratedKeys();
|
ResultSet rs = preparedStmt.getGeneratedKeys();
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
@ -219,4 +249,26 @@ static ArrayList<Unit> unitCache = null;
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Unit getDefaultUnit()
|
||||||
|
{
|
||||||
|
for(Unit u : readAllUnits())
|
||||||
|
{
|
||||||
|
if(u.isDefault())
|
||||||
|
return u;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Unit getPieceUnit()
|
||||||
|
{
|
||||||
|
for(Unit u : readAllUnits())
|
||||||
|
{
|
||||||
|
if(u.isPiece())
|
||||||
|
return u;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user