separating fields from other constants

This commit is contained in:
2025-10-27 18:34:10 +01:00
parent cbec6cc856
commit 25f41cf66b
15 changed files with 255 additions and 281 deletions

View File

@@ -12,97 +12,49 @@ public class Constants {
public static final String ADDRESS = "address";
public static final String ADDRESS = "address";
public static final String ALLOWED_STATES = "allowed_states";
public static final String ATTACHMENTS = "attachments";
public static final String AUTHORIZATION = "Authorization";
public static final String ATTACHMENTS = "attachments";
public static final String AUTHORIZATION = "Authorization";
public static final String BODY = "body";
public static final String BODY = "body";
public static final String BOOKMARK = "bookmark";
public static final String CODE = "code";
public static final String COMMENT = "comment";
public static final String COMPANY = "company";
public static final String COMPANY_ID = "company_id";
public static final String CONTENT = "content";
public static final String CONTENT_DISPOSITION = "Content-Disposition";
public static final String CONTENT_TYPE = "Content-Type";
public static final String CODE = "code";
public static final String COMMENT = "comment";
public static final String COMPANY = "company";
public static final String COMPANY_ID = "company_id";
public static final String CONTENT = "content";
public static final String CONTENT_DISPOSITION = "Content-Disposition";
public static final String CONTENT_TYPE = "Content-Type";
public static final String CUSTOMER_NUMBER_PREFIX = "customer_number_prefix";
public static final String DATA = "data";
public static final String DB_VERSION = "db_version";
public static final String DATE = "date";
public static final String DECIMALS = "decimals";
public static final String DATA = "data";
public static final String DB_VERSION = "db_version";
public static final String DATE = "date";
public static final String DECIMALS = "decimals";
public static final String DECIMAL_SEPARATOR = "decimal_separator";
public static final String DEFAULT_LANGUAGE = "en";
public static final String DEFAULT_THEME = "winter";
public static final String DELETED = "deleted";
public static final String DESCRIPTION = "description";
public static final String DOMAIN = "domain";
public static final String DROP_MEMBER = "drop_member";
public static final String DUE_DATE = "due_date";
public static final String DURATION = "duration";
public static final String DELETED = "deleted";
public static final String DESCRIPTION = "description";
public static final String DOMAIN = "domain";
public static final String DROP_MEMBER = "drop_member";
public static final String DUE_DATE = "due_date";
public static final String DURATION = "duration";
public static final String EMAIL = "email";
public static final String END_TIME = "end_time";
public static final String ENTITY_ID = "entity_id";
public static final String EMAIL = "email";
public static final String END_TIME = "end_time";
public static final String ENTITY_ID = "entity_id";
public static final String ERROR_FAILED_CREATE_TABLE = "Failed to create \"{0}\" table!";
public static final String ERROR_INVALID_FIELD = "Expected {0} to be {1}!";
public static final String ERROR_MISSING_CONFIG = "Config is missing value for {0}!";
public static final String ERROR_MISSING_FIELD = "Json is missing {0} field!";
public static final String ERROR_READ_TABLE = "Failed to read {0} from {1} table";
public static final String EST_TIME = "est_time";
public static final String ESTIMATED_TIME = "estimated_time";
public static final String EXPIRATION = "expiration";
public static final String ERROR_INVALID_FIELD = "Expected {0} to be {1}!";
public static final String ERROR_MISSING_CONFIG = "Config is missing value for {0}!";
public static final String ERROR_MISSING_FIELD = "Json is missing {0} field!";
public static final String ERROR_READ_TABLE = "Failed to read {0} from {1} table";
public static final String EST_TIME = "est_time";
public static final String ESTIMATED_TIME = "estimated_time";
public static final String EXPIRATION = "expiration";
public static final String FALLBACK_LANG = "de";
public static final String FIELD_BANK_ACCOUNT = "bank_account";
public static final String FIELD_COURT = "court";
public static final String FIELD_CURRENCY = "currency";
public static final String FIELD_END_TIME = "end_time";
public static final String FIELD_PHONE = "phone";
public static final String FIELD_START_TIME = "start_time";
public static final String FIELD_TASKS = "tasks";
public static final String FIELD_TAX_NUMBER = "tax_number";
public static final String FIELD_TAX = "tax";
public static final String FIELD_UNIT_PRICE = "unit_price";
public static final String FALLBACK_LANG = "de";
public static final String FIELD_AMOUNT = "amount";
public static final String FIELD_COMPANY = "company";
public static final String FIELD_COMPANY_ID = "company_id";
public static final String FIELD_CUSTOMER = "customer";
public static final String FIELD_CUSTOMER_EMAIL = "customer_email";
public static final String FIELD_CUSTOMER_NUMBER = "customer_number";
public static final String FIELD_CUSTOMER_TAX_NUMBER = "customer_tax_number";
public static final String FIELD_DEFAULT_HEADER = "default_header";
public static final String FIELD_DEFAULT_FOOTER = "default_footer";
public static final String FIELD_DEFAULT_MAIL = "type_mail_text";
public static final String FIELD_DELIVERY = "delivery";
public static final String FIELD_DELIVERY_DATE = "delivery_date";
public static final String FIELD_DOCUMENT = "document";
public static final String FIELD_DOCUMENT_ID = "document_id";
public static final String FIELD_DOC_TYPE_ID = "document_type_id";
public static final String FIELD_FOOTER = "footer";
public static final String FIELD_GROSS_SUM = "gross_sum";
public static final String FIELD_HEAD = "head";
public static final String FIELD_ITEM = "item";
public static final String FIELD_ITEM_CODE = "item_code";
public static final String FIELD_NET_PRICE = "net_price";
public static final String FIELD_NET_SUM = "net_sum";
public static final String FIELD_NEXT_TYPE = "next_type_id";
public static final String FIELD_POS = "pos";
public static final String FIELD_POSITIONS = "positions";
public static final String FIELD_PRICE = "single_price";
public static final String FIELD_PRICE_FORMAT = "price_format";
public static final String FIELD_TEMPLATE_ID = "template_id";
public static final String FIELD_TAX_ID = "tax_id";
public static final String FIELD_TIME_ID = "time_id";
public static final String FIELD_TYPE = "type";
public static final String FIELD_TYPE_ID = "type_id";
public static final String FIELD_TYPE_NUMBER = "type_number";
public static final String FIELD_TYPE_PREFIX = "type_prefix";
public static final String FIELD_TYPE_SUFFIX = "type_suffix";
public static final String FIELD_UNIT = "unit";
public static final String FROM = "from";
public static final String FULLTEXT = "fulltext";
@@ -187,7 +139,6 @@ public class Constants {
public static final String UMBRELLA = "Umbrella";
public static final String UNIT = "unit";
public static final String UNIT_PRICE = "unit_price";
public static final String URI = "uri";
public static final String URL = "url";
public static final String USER = "user";

View File

@@ -3,6 +3,9 @@ package de.srsoftware.umbrella.core.model;
import static de.srsoftware.tools.Optionals.emptyIfNull;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Constants.COMPANY;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.Field.TYPE;
import static java.util.Map.entry;
import de.srsoftware.tools.Mappable;
@@ -125,11 +128,11 @@ public class Company implements Mappable, Owner {
var name = json.getString(NAME);
var address = json.getString(ADDRESS);
var email = json.getString(EMAIL);
var phone = json.getString(FIELD_PHONE);
var bankAccount = json.getString(FIELD_BANK_ACCOUNT);
var court = json.getString(FIELD_COURT);
var currency = json.getString(FIELD_CURRENCY);
var taxId = json.getString(FIELD_TAX_NUMBER);
var phone = json.getString(PHONE);
var bankAccount = json.getString(BANK_ACCOUNT);
var court = json.getString(COURT);
var currency = json.getString(CURRENCY);
var taxId = json.getString(TAX_NUMBER);
var decimals = json.getInt(DECIMALS);
var decimalSep = json.getString(DECIMAL_SEPARATOR);
var thousandsSep = json.getString(THOUSANDS_SEPARATOR);
@@ -146,17 +149,17 @@ public class Company implements Mappable, Owner {
switch (key){
case NAME: name = json.getString(NAME); break;
case ADDRESS: address = json.getString(ADDRESS); break;
case FIELD_COURT: court = json.getString(FIELD_COURT); break;
case FIELD_TAX_NUMBER: taxId = json.getString(FIELD_TAX_NUMBER); break;
case FIELD_PHONE: phone = json.getString(FIELD_PHONE); break;
case COURT: court = json.getString(COURT); break;
case TAX_NUMBER: taxId = json.getString(TAX_NUMBER); break;
case PHONE: phone = json.getString(PHONE); break;
case DECIMAL_SEPARATOR: decimalSeparator = json.getString(DECIMAL_SEPARATOR); break;
case THOUSANDS_SEPARATOR: thousandsSeparator = json.getString(THOUSANDS_SEPARATOR); break;
case LAST_CUSTOMER_NUMBER: lastCustomerNumber = json.getLong(LAST_CUSTOMER_NUMBER); break;
case DECIMALS: decimals = json.getInt(DECIMALS); break;
case CUSTOMER_NUMBER_PREFIX: customerNumberPrefix = json.getString(CUSTOMER_NUMBER_PREFIX); break;
case FIELD_CURRENCY: currency = json.getString(FIELD_CURRENCY); break;
case CURRENCY: currency = json.getString(CURRENCY); break;
case EMAIL: email = json.getString(EMAIL); break;
case FIELD_BANK_ACCOUNT: bankAccount = json.getString(FIELD_BANK_ACCOUNT); break;
case BANK_ACCOUNT: bankAccount = json.getString(BANK_ACCOUNT); break;
default: key = null;
}
if (key != null) dirtyFields.add(key);
@@ -196,17 +199,17 @@ public class Company implements Mappable, Owner {
return Map.ofEntries(
entry(NAME,name),
entry(ADDRESS,emptyIfNull(address)),
entry(FIELD_COURT,emptyIfNull(court)),
entry(FIELD_TAX_NUMBER,emptyIfNull(taxId)),
entry(FIELD_PHONE,emptyIfNull(phone)),
entry(COURT,emptyIfNull(court)),
entry(TAX_NUMBER,emptyIfNull(taxId)),
entry(PHONE,emptyIfNull(phone)),
entry(DECIMAL_SEPARATOR,emptyIfNull(decimalSeparator)),
entry(THOUSANDS_SEPARATOR,emptyIfNull(thousandsSeparator)),
entry(LAST_CUSTOMER_NUMBER,lastCustomerNumber),
entry(DECIMALS,decimals),
entry(CUSTOMER_NUMBER_PREFIX,emptyIfNull(customerNumberPrefix)),
entry(FIELD_CURRENCY,emptyIfNull(currency)),
entry(CURRENCY,emptyIfNull(currency)),
entry(EMAIL,emptyIfNull(email)),
entry(FIELD_BANK_ACCOUNT,emptyIfNull(bankAccount)),
entry(BANK_ACCOUNT,emptyIfNull(bankAccount)),
entry(MEMBERS,memberMap),
entry(TYPE,type()),
entry(ID,id)

View File

@@ -2,6 +2,7 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
import de.srsoftware.tools.Mappable;
@@ -72,7 +73,7 @@ public final class Customer implements Mappable {
if (!json.has(ID) || !(json.get(ID) instanceof String id)) throw missingFieldException(ID);
if (!json.has(NAME) || !(json.get(NAME) instanceof String name)) throw missingFieldException(NAME);
if (!json.has(EMAIL) || !(json.get(EMAIL) instanceof String email)) throw missingFieldException(EMAIL);
if (!json.has(FIELD_TAX_ID) || !(json.get(FIELD_TAX_ID) instanceof String taxId)) throw missingFieldException(FIELD_TAX_ID);
if (!json.has(TAX_ID) || !(json.get(TAX_ID) instanceof String taxId)) throw missingFieldException(TAX_ID);
var lang = json.has(LANGUAGE) && json.get(LANGUAGE) instanceof String l ? l : FALLBACK_LANG;
return new Customer(id,name,email,taxId,lang);
}
@@ -83,7 +84,7 @@ public final class Customer implements Mappable {
case ID: id = json.getString(key); break;
case NAME: name = json.getString(key); break;
case EMAIL: email = json.getString(key); break;
case FIELD_TAX_ID: taxNumber = json.getString(key); break;
case TAX_ID: taxNumber = json.getString(key); break;
default: key = null;
}
if (key != null) dirtyFields.add(key);

View File

@@ -2,6 +2,9 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.Field.COMPANY;
import static de.srsoftware.umbrella.core.Field.TYPE;
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_UNPROCESSABLE;
import static de.srsoftware.umbrella.core.Util.mapMarkdown;
import static java.util.Optional.empty;
@@ -193,17 +196,17 @@ public final class Document implements Mappable {
public void patch(JSONObject json) throws UmbrellaException {
for (var key : json.keySet()){
switch (key){
case FIELD_CUSTOMER: if (json.get(key) instanceof JSONObject nested) customer.patch(nested); break;
case FIELD_CURRENCY: currency = json.getString(key); break;
case CUSTOMER: if (json.get(key) instanceof JSONObject nested) customer.patch(nested); break;
case CURRENCY: currency = json.getString(key); break;
case DATE: date = LocalDate.parse(json.getString(key)); break;
case FIELD_DELIVERY: delivery = json.getString(key); break;
case FIELD_FOOTER: footer = json.getString(key); break;
case FIELD_HEAD: head = json.getString(key); break;
case DELIVERY: delivery = json.getString(key); break;
case FOOTER: footer = json.getString(key); break;
case HEAD: head = json.getString(key); break;
case NUMBER: number = json.getString(key); break;
case SENDER: if (json.get(key) instanceof JSONObject nested) sender.patch(nested); break;
case STATE: state = State.of(json.getInt(key)).orElseThrow(() -> new UmbrellaException(HTTP_UNPROCESSABLE,"Invalid state")); break;
case FIELD_POS: if (json.get(key) instanceof JSONObject nested) positions.patch(nested); break;
case FIELD_TEMPLATE_ID: if (json.get(key) instanceof Number num) template = new Template(num.longValue(),companyId,null,null); break;
case POS: if (json.get(key) instanceof JSONObject nested) positions.patch(nested); break;
case TEMPLATE_ID: if (json.get(key) instanceof Number num) template = new Template(num.longValue(),companyId,null,null); break;
default: key = null;
}
if (key != null) dirtyFields.add(key);
@@ -217,21 +220,21 @@ public final class Document implements Mappable {
public Map<String, Object> renderToMap() {
var map = new HashMap<String, Object>();
map.put(ID, id);
map.put(FIELD_COMPANY, Map.of(ID,companyId, NAME,companyName));
map.put(COMPANY, Map.of(ID,companyId, NAME,companyName));
map.put(NUMBER, number);
map.put(FIELD_TYPE, type.name());
map.put(TYPE, type.name());
map.put(DATE, date);
map.put(STATE, state.code);
map.put(FIELD_DELIVERY, delivery == null ? "" : delivery);
map.put(FIELD_HEAD, mapMarkdown(head));
map.put(FIELD_FOOTER, mapMarkdown(footer));
map.put(FIELD_CURRENCY, currency);
map.put(DELIVERY, delivery == null ? "" : delivery);
map.put(HEAD, mapMarkdown(head));
map.put(FOOTER, mapMarkdown(footer));
map.put(CURRENCY, currency);
map.put(SENDER, sender.toMap());
map.put(FIELD_CUSTOMER, customer.toMap());
map.put(FIELD_POSITIONS, positions.asMap(true));
map.put(CUSTOMER, customer.toMap());
map.put(POSITIONS, positions.asMap(true));
map.put("taxes",positions.taxNetSums(true));
map.put(FIELD_NET_SUM, netSum());
map.put(FIELD_GROSS_SUM, grossSum());
map.put(NET_SUM, netSum());
map.put(GROSS_SUM, grossSum());
if (template != null) map.put("template", template.toMap());
return map;
}
@@ -277,8 +280,8 @@ public final class Document implements Mappable {
"type", type.name(),
STATE, Map.of(NAME,state.toString(),ID,state.code),
DATE, date,
FIELD_CURRENCY, currency,
FIELD_CUSTOMER, customer.toMap(),
CURRENCY, currency,
CUSTOMER, customer.toMap(),
"sum", positions.grossSum(true)
);
}
@@ -291,21 +294,21 @@ public final class Document implements Mappable {
public Map<String, Object> toMap() {
var map = new HashMap<String, Object>();
map.put(ID, id);
map.put(FIELD_COMPANY, companyId);
map.put(COMPANY, companyId);
map.put(NUMBER, number);
map.put(FIELD_TYPE, type);
map.put(TYPE, type);
map.put(DATE, date);
map.put(STATE, state.code);
map.put(FIELD_DELIVERY, delivery);
map.put(FIELD_HEAD, head);
map.put(FIELD_FOOTER, footer);
map.put(FIELD_CURRENCY, currency);
map.put(DELIVERY, delivery);
map.put(HEAD, head);
map.put(FOOTER, footer);
map.put(CURRENCY, currency);
map.put(SENDER, sender.toMap());
map.put(FIELD_CUSTOMER, customer.toMap());
map.put(FIELD_POSITIONS, positions.asMap(false));
map.put(CUSTOMER, customer.toMap());
map.put(POSITIONS, positions.asMap(false));
map.put("taxes",positions.taxNetSums(true));
map.put(FIELD_NET_SUM, netSum());
map.put(FIELD_GROSS_SUM, grossSum());
map.put(NET_SUM, netSum());
map.put(GROSS_SUM, grossSum());
if (template != null) map.put("template", template.toMap());
return map;
}

View File

@@ -3,6 +3,9 @@ package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.Field.TAX;
import static de.srsoftware.umbrella.core.Field.UNIT;
import static de.srsoftware.umbrella.core.Util.mapMarkdown;
import de.srsoftware.tools.Mappable;
@@ -91,7 +94,7 @@ public final class Position implements Mappable {
}
public boolean isNew(){
return dirtyFields.contains(FIELD_DOCUMENT_ID);
return dirtyFields.contains(DOCUMENT_ID);
}
public String itemCode() {
@@ -113,14 +116,14 @@ public final class Position implements Mappable {
public void patch(JSONObject json) {
for (var key : json.keySet()) {
switch (key) {
case FIELD_AMOUNT: amount = json.getDouble(key); break;
case AMOUNT: amount = json.getDouble(key); break;
case DESCRIPTION: description = json.getString(key); break;
case FIELD_ITEM: itemCode = json.getString(key); break;
case ITEM: itemCode = json.getString(key); break;
case OPTIONAL: optional = json.getBoolean(key); break;
case FIELD_TAX: tax = json.getInt(key); break;
case TAX: tax = json.getInt(key); break;
case TITLE: title = json.getString(key); break;
case FIELD_UNIT: unit = json.getString(key); break;
case FIELD_UNIT_PRICE: unitPrice = json.getLong(key); break;
case UNIT: unit = json.getString(key); break;
case UNIT_PRICE: unitPrice = json.getLong(key); break;
default: key = null;
}
if (key != null) dirtyFields.add(key);
@@ -129,25 +132,25 @@ public final class Position implements Mappable {
public Position setDocId(long docId) {
this.docId = docId;
dirtyFields.add(FIELD_DOCUMENT_ID);
dirtyFields.add(DOCUMENT_ID);
return this;
}
public Position setItemCode(String newValue) {
this.itemCode = newValue;
dirtyFields.add(FIELD_ITEM);
dirtyFields.add(ITEM);
return this;
}
public Position setUnit(String newValue) {
unit = newValue;
dirtyFields.add(FIELD_UNIT);
dirtyFields.add(UNIT);
return this;
}
public void setUnitPrice(long price) {
unitPrice = price;
dirtyFields.add(FIELD_UNIT_PRICE);
dirtyFields.add(UNIT_PRICE);
}
public int tax() {
@@ -171,35 +174,35 @@ public final class Position implements Mappable {
@Override
public Map<String, Object> toMap() {
var map = new HashMap<String, Object>();
map.put(FIELD_DOCUMENT_ID, docId);
map.put(DOCUMENT_ID, docId);
map.put(NUMBER, num);
map.put(FIELD_ITEM, itemCode);
map.put(FIELD_AMOUNT, amount);
map.put(FIELD_UNIT, unit);
map.put(ITEM, itemCode);
map.put(AMOUNT, amount);
map.put(UNIT, unit);
map.put(TITLE, title);
map.put(DESCRIPTION, description);
map.put(FIELD_UNIT_PRICE, unitPrice);
map.put(FIELD_TAX, tax);
map.put(FIELD_TIME_ID, timeId);
map.put(UNIT_PRICE, unitPrice);
map.put(TAX, tax);
map.put(TIME_ID, timeId);
map.put(OPTIONAL, optional);
map.put(FIELD_NET_PRICE, netPrice());
map.put(NET_PRICE, netPrice());
return map;
}
public Map<String, Object> renderToMap() {
var map = new HashMap<String, Object>();
map.put(FIELD_DOCUMENT_ID, docId);
map.put(DOCUMENT_ID, docId);
map.put(NUMBER, num);
map.put(FIELD_ITEM, itemCode);
map.put(FIELD_AMOUNT, amount);
map.put(FIELD_UNIT, unit);
map.put(ITEM, itemCode);
map.put(AMOUNT, amount);
map.put(UNIT, unit);
map.put(TITLE, title);
map.put(DESCRIPTION, mapMarkdown(description));
map.put(FIELD_UNIT_PRICE, unitPrice);
map.put(FIELD_TAX, tax);
map.put(FIELD_TIME_ID, timeId);
map.put(UNIT_PRICE, unitPrice);
map.put(TAX, tax);
map.put(TIME_ID, timeId);
map.put(OPTIONAL, optional);
map.put(FIELD_NET_PRICE, netPrice());
map.put(NET_PRICE, netPrice());
return map;
}

View File

@@ -2,6 +2,11 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.Field.END_TIME;
import static de.srsoftware.umbrella.core.Field.START_TIME;
import static de.srsoftware.umbrella.core.Field.TAX;
import static de.srsoftware.umbrella.core.Field.UNIT;
import de.srsoftware.tools.Pair;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
@@ -23,8 +28,8 @@ public class PositionList extends HashMap<Integer,Position> {
var unit = item.getString(UNIT);
var name = item.getString(NAME);
var description = item.getString(DESCRIPTION);
var unitPrice = item.getLong(FIELD_UNIT_PRICE);
var tax = item.getInt(FIELD_TAX);
var unitPrice = item.getLong(UNIT_PRICE);
var tax = item.getInt(TAX);
var position = new Position(size()+1,itemCode,1.0,unit,name,description,unitPrice,tax,null,false);
add(position);
return position;
@@ -44,15 +49,15 @@ public class PositionList extends HashMap<Integer,Position> {
public Position addTime(JSONObject time) {
var id = time.getLong(ID);
var start = time.getLong(FIELD_START_TIME);
var end = time.getLong(FIELD_END_TIME);
var start = time.getLong(START_TIME);
var end = time.getLong(END_TIME);
var amount = (end - start)/3600d;
var name = time.getString(SUBJECT);
var desc = time.getString(DESCRIPTION).trim();
var description = new StringBuilder();
if (!desc.isEmpty()) description.append(desc);
if (time.has(FIELD_TASKS)){
var tasks = time.getJSONObject(FIELD_TASKS);
if (time.has(TASKS)){
var tasks = time.getJSONObject(TASKS);
var taskKeys = tasks.keySet();
if (taskKeys.size()>1) { // description normally came from first task
if (!desc.isEmpty()) description.append("\n\n");

View File

@@ -2,6 +2,7 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
import de.srsoftware.tools.Mappable;
@@ -65,19 +66,19 @@ public final class Sender implements Mappable {
public static Sender of(JSONObject json) throws UmbrellaException {
if (!json.has(NAME) || !(json.get(NAME) instanceof String name)) throw missingFieldException(NAME);
if (!json.has(FIELD_BANK_ACCOUNT) || !(json.get(FIELD_BANK_ACCOUNT) instanceof String bankAccount)) throw missingFieldException(FIELD_BANK_ACCOUNT);
if (!json.has(FIELD_TAX_ID) || !(json.get(FIELD_TAX_ID) instanceof String taxId)) throw missingFieldException(FIELD_TAX_ID);
if (!json.has(FIELD_COURT) || !(json.get(FIELD_COURT) instanceof String court)) throw missingFieldException(FIELD_COURT);
if (!json.has(BANK_ACCOUNT) || !(json.get(BANK_ACCOUNT) instanceof String bankAccount)) throw missingFieldException(BANK_ACCOUNT);
if (!json.has(TAX_ID) || !(json.get(TAX_ID) instanceof String taxId)) throw missingFieldException(TAX_ID);
if (!json.has(COURT) || !(json.get(COURT) instanceof String court)) throw missingFieldException(COURT);
return new Sender(name,bankAccount,taxId,court);
}
public void patch(JSONObject json) {
for (var key : json.keySet()){
switch (key){
case FIELD_BANK_ACCOUNT: bankAccount = json.getString(key); break;
case BANK_ACCOUNT: bankAccount = json.getString(key); break;
case NAME: name = json.getString(key); break;
case FIELD_COURT: court = json.getString(key); break;
case FIELD_TAX_ID: taxNumber = json.getString(key); break;
case COURT: court = json.getString(key); break;
case TAX_ID: taxNumber = json.getString(key); break;
default: key = null;
}
if (key != null) dirtyFields.add(key);
@@ -91,10 +92,10 @@ public final class Sender implements Mappable {
@Override
public Map<String, Object> toMap() {
return Map.of(
FIELD_BANK_ACCOUNT, bankAccount,
FIELD_COURT, court,
BANK_ACCOUNT, bankAccount,
COURT, court,
NAME, name,
FIELD_TAX_ID, taxNumber
TAX_ID, taxNumber
);
}

View File

@@ -2,6 +2,8 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Field.COMPANY;
import static de.srsoftware.umbrella.core.Field.COMPANY_ID;
import de.srsoftware.tools.Mappable;
import java.sql.ResultSet;
@@ -16,6 +18,6 @@ public record Template(long id, long company, String name, byte[] data) implemen
@Override
public Map<String, Object> toMap() {
return Map.of(ID,id, FIELD_COMPANY,company, NAME,name);
return Map.of(ID,id, COMPANY,company, NAME,name);
}
}