implemented editing of item base data
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -209,9 +209,7 @@ public class SqliteDb extends BaseDb implements StockDb {
|
||||
rs.close();
|
||||
|
||||
for (var item : list){
|
||||
var owner = item.owner();
|
||||
var ownerId = owner instanceof Company comp ? -comp.id() : (owner instanceof UmbrellaUser u ? u.id() : 0);
|
||||
if (ownerId == 0) throw databaseException("Encountered unknown item owner of type {0}",owner.getClass().getSimpleName());
|
||||
var ownerId = item.ownerId();
|
||||
rs = select(ALL).from(TABLE_ITEM_PROPERTIES).leftJoin(PROPERTY_ID,TABLE_PROPERTIES,ID).where(OWNER,equal(ownerId)).where(ITEM_ID,equal(item.id())).exec(db);
|
||||
while (rs.next()) item.properties().add(Property.of(rs));
|
||||
rs.close();
|
||||
@@ -224,10 +222,8 @@ public class SqliteDb extends BaseDb implements StockDb {
|
||||
|
||||
@Override
|
||||
public Item loadItem(Mappable owner, long itemId) {
|
||||
var ownerId = owner instanceof Company comp ? -comp.id() : (owner instanceof UmbrellaUser u ? u.id() : 0);
|
||||
if (ownerId == 0) throw databaseException("Failed to load item: unknown owner type ({0})",owner.getClass().getSimpleName());
|
||||
try {
|
||||
var rs = select(ALL).from(TABLE_ITEMS).where(OWNER,equal(ownerId)).where(ID,equal(itemId)).exec(db);
|
||||
var rs = select(ALL).from(TABLE_ITEMS).where(OWNER,equal(Item.ownerId(owner))).where(ID,equal(itemId)).exec(db);
|
||||
Item result = null;
|
||||
if (rs.next()) result = Item.of(rs,owner,null);
|
||||
rs.close();
|
||||
@@ -293,7 +289,29 @@ public class SqliteDb extends BaseDb implements StockDb {
|
||||
|
||||
@Override
|
||||
public Item save(Item item) {
|
||||
LOG.log(ERROR,"StockDb.save(…) not implemented!");
|
||||
if (item.id() == 0){ // TODO
|
||||
LOG.log(ERROR,"StockDb.save(…) not implemented!");
|
||||
} else if (item.isDirty()) {
|
||||
try {
|
||||
var location = item.location();
|
||||
var query = update(TABLE_ITEMS).where(OWNER, equal(item.ownerId())).where(ID, equal(item.id()));
|
||||
if (location == null) {
|
||||
query.set(CODE,NAME);
|
||||
} else {
|
||||
query.set(CODE,NAME,LOCATION_ID);
|
||||
}
|
||||
var pq = query.prepare(db);
|
||||
if (location == null) {
|
||||
pq.apply(item.code(),item.name());
|
||||
} else {
|
||||
pq.apply(item.code(),item.name(),item.location().id());
|
||||
}
|
||||
return item.clear();
|
||||
} catch (SQLException e){
|
||||
throw databaseException("Failed to update item {0}",item.name());
|
||||
}
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user