improved error checking and error messages for ImportOfficeData
This commit is contained in:
parent
5efae66512
commit
7f500d27b6
@ -136,17 +136,17 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
@Value("${hsadminng.superuser}")
|
||||
private String rbacSuperuser;
|
||||
|
||||
private static NavigableMap<Integer, HsOfficeContactEntity> contacts = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficePersonEntity> persons = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficePartnerEntity> partners = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeDebitorEntity> debitors = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeMembershipEntity> memberships = new TreeMap<>();
|
||||
private static Map<Integer, HsOfficeContactEntity> contacts = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficePersonEntity> persons = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficePartnerEntity> partners = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeDebitorEntity> debitors = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeMembershipEntity> memberships = new WriteOnceMap<>();
|
||||
|
||||
private static NavigableMap<Integer, HsOfficeRelationshipEntity> relationships = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeSepaMandateEntity> sepaMandates = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeBankAccountEntity> bankAccounts = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeCoopSharesTransactionEntity> coopShares = new TreeMap<>();
|
||||
private static NavigableMap<Integer, HsOfficeCoopAssetsTransactionEntity> coopAssets = new TreeMap<>();
|
||||
private static Map<Integer, HsOfficeRelationshipEntity> relationships = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeSepaMandateEntity> sepaMandates = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeBankAccountEntity> bankAccounts = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeCoopSharesTransactionEntity> coopShares = new WriteOnceMap<>();
|
||||
private static Map<Integer, HsOfficeCoopAssetsTransactionEntity> coopAssets = new WriteOnceMap<>();
|
||||
|
||||
@PersistenceContext
|
||||
EntityManager em;
|
||||
@ -521,10 +521,10 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
|
||||
private void persist(final Integer id, final HasUuid entity) {
|
||||
try {
|
||||
System.out.println("persisting #" + entity.hashCode() + ": " + entity);
|
||||
//System.out.println("persisting #" + entity.hashCode() + ": " + entity);
|
||||
em.persist(entity);
|
||||
em.flush();
|
||||
System.out.println("persisted #" + entity.hashCode() + " as " + entity.getUuid());
|
||||
//em.flush();
|
||||
//System.out.println("persisted #" + entity.hashCode() + " as " + entity.getUuid());
|
||||
} catch (Exception exc) {
|
||||
System.err.println("failed to persist #" + entity.hashCode() + ": " + entity);
|
||||
System.err.println(exc);
|
||||
@ -645,6 +645,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.personType(HsOfficePersonType.LEGAL_PERSON)
|
||||
.tradeName("Hostsharing eG")
|
||||
.build();
|
||||
assertThat(persons.containsKey(1)).describedAs("overwriting " + persons.get(1) + " index " + 1 + " with " + mandant).isFalse();
|
||||
persons.put(1, mandant);
|
||||
|
||||
records.stream()
|
||||
@ -659,7 +660,10 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.relAnchor(mandant)
|
||||
.contact(null) // is set during contacts import depending on assigned roles
|
||||
.build();
|
||||
relationships.put(relationshipId++, partnerRelationship);
|
||||
final Integer i3 = relationshipId++;
|
||||
assertThat(relationships.containsKey(i3)).describedAs("overwriting " + relationships.get(i3) + " index " + i3
|
||||
+ " with " + partnerRelationship).isFalse();
|
||||
relationships.put(i3, partnerRelationship);
|
||||
|
||||
final var partner = HsOfficePartnerEntity.builder()
|
||||
.partnerNumber(rec.getInteger("member_id"))
|
||||
@ -668,7 +672,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.contact(null) // is set during contacts import depending on assigned roles
|
||||
.person(person)
|
||||
.build();
|
||||
partners.put(rec.getInteger("bp_id"), partner);
|
||||
final Integer i2 = rec.getInteger("bp_id");
|
||||
assertThat(partners.containsKey(i2)).describedAs("overwriting " + partners.get(i2) + " index " + i2 + " with " + partner).isFalse();
|
||||
partners.put(i2, partner);
|
||||
|
||||
final var debitor = HsOfficeDebitorEntity.builder()
|
||||
.partner(partner)
|
||||
@ -680,7 +686,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.vatBusiness("GROSS".equals(rec.getString("indicator_vat"))) // TODO: remove
|
||||
.vatId(rec.getString("uid_vat"))
|
||||
.build();
|
||||
debitors.put(rec.getInteger("bp_id"), debitor);
|
||||
final Integer i1 = rec.getInteger("bp_id");
|
||||
assertThat(debitors.containsKey(i1)).describedAs("overwriting " + debitors.get(i1) + " index " + i1 + " with " + debitor).isFalse();
|
||||
debitors.put(i1, debitor);
|
||||
|
||||
if (isNotBlank(rec.getString("member_since"))) {
|
||||
assertThat(rec.getInteger("member_id")).isEqualTo(partner.getPartnerNumber());
|
||||
@ -697,7 +705,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
: HsOfficeReasonForTermination.UNKNOWN)
|
||||
.mainDebitor(debitor)
|
||||
.build();
|
||||
memberships.put(rec.getInteger("bp_id"), membership);
|
||||
final Integer i = rec.getInteger("bp_id");
|
||||
assertThat(memberships.containsKey(i)).describedAs("overwriting " + memberships.get(i) + " index " + i + " with " + membership).isFalse();
|
||||
memberships.put(i, membership);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -726,7 +736,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.comment( rec.getString("comment"))
|
||||
.build();
|
||||
|
||||
coopShares.put(rec.getInteger("member_share_id"), shareTransaction);
|
||||
final Integer i = rec.getInteger("member_share_id");
|
||||
assertThat(coopShares.containsKey(i)).describedAs("overwriting " + coopShares.get(i) + " index " + i + " with " + shareTransaction).isFalse();
|
||||
coopShares.put(i, shareTransaction);
|
||||
});
|
||||
}
|
||||
|
||||
@ -769,7 +781,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.comment(rec.getString("comment"))
|
||||
.build();
|
||||
|
||||
coopAssets.put(rec.getInteger("member_asset_id"), assetTransaction);
|
||||
final Integer i = rec.getInteger("member_asset_id");
|
||||
assertThat(coopAssets.containsKey(i)).describedAs("overwriting " + coopAssets.get(i) + " index " + i + " with " + assetTransaction).isFalse();
|
||||
coopAssets.put(i, assetTransaction);
|
||||
});
|
||||
}
|
||||
|
||||
@ -812,13 +826,14 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.map(row -> new Record(columns, row))
|
||||
.forEach(rec -> {
|
||||
final var contactId = rec.getInteger("contact_id");
|
||||
final var bpId = rec.getInteger("bp_id");
|
||||
|
||||
if (rec.getString("roles").isBlank()) {
|
||||
fail("empty roles assignment not allowed for contact_id: " + contactId);
|
||||
}
|
||||
|
||||
final var partner = partners.get(rec.getInteger("bp_id"));
|
||||
final var debitor = debitors.get(rec.getInteger("bp_id"));
|
||||
final var partner = partners.get(bpId);
|
||||
final var debitor = debitors.get(bpId);
|
||||
|
||||
final var partnerPerson = partner.getPerson();
|
||||
if (containsPartnerRole(rec)) {
|
||||
@ -870,14 +885,16 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
}
|
||||
|
||||
private static void optionallyAddMissingContractualRelationships() {
|
||||
final var contractualMissing = new HashSet<Integer>();
|
||||
partners.forEach( (id, partner) -> {
|
||||
final var partnerPerson = partner.getPerson();
|
||||
if (relationships.values().stream().filter(rel -> rel.getRelHolder() == partnerPerson && rel.getRelType() == HsOfficeRelationshipType.REPRESENTATIVE).findFirst().isEmpty()) {
|
||||
addRelationship(partnerPerson, partnerPerson, partner.getContact(), HsOfficeRelationshipType.REPRESENTATIVE);
|
||||
contractualMissing.add(partner.getPartnerNumber());
|
||||
}
|
||||
});
|
||||
// assertThat(contractualMissing).isEmpty();
|
||||
}
|
||||
|
||||
private static boolean containsRole(final Record rec, final String role) {
|
||||
final var roles = rec.getString("roles");
|
||||
return ("," + roles + ",").contains("," + role + ",");
|
||||
@ -898,7 +915,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
.contact(contact)
|
||||
.relType(representative)
|
||||
.build();
|
||||
relationships.put(relationshipId++, rel);
|
||||
final Integer i = relationshipId++;
|
||||
assertThat(relationships.containsKey(i)).describedAs("overwriting " + relationships.get(i) + " index " + i + " with " + rel).isFalse();
|
||||
relationships.put(i, rel);
|
||||
return rel;
|
||||
}
|
||||
|
||||
@ -909,7 +928,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
person.setTradeName(contactRecord.getString("firma"));
|
||||
determinePersonType(person, contactRecord.getString("roles"));
|
||||
|
||||
persons.put(contactRecord.getInteger("contact_id"), person);
|
||||
final Integer i = contactRecord.getInteger("contact_id");
|
||||
assertThat(persons.containsKey(i)).describedAs("overwriting " + persons.get(i) + " index " + i + " with " + person).isFalse();
|
||||
persons.put(i, person);
|
||||
return person;
|
||||
}
|
||||
|
||||
@ -923,7 +944,7 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
if (roles.contains("contractual") && !roles.contains("partner") &&
|
||||
!person.getFamilyName().isBlank() && !person.getGivenName().isBlank()) {
|
||||
person.setPersonType(HsOfficePersonType.NATURAL_PERSON);
|
||||
} else if ( endsWithWord(person.getTradeName(), "e.K.", "e.G.", "eG", "GmbH", "AG") ) {
|
||||
} else if ( endsWithWord(person.getTradeName(), "e.K.", "e.G.", "eG", "GmbH", "AG", "KG") ) {
|
||||
person.setPersonType(HsOfficePersonType.LEGAL_PERSON);
|
||||
} else if ( endsWithWord(person.getTradeName(), "OHG") ) {
|
||||
person.setPersonType(HsOfficePersonType.INCORPORATED_FIRM);
|
||||
@ -964,7 +985,9 @@ public class ImportOfficeData extends ContextBasedTest {
|
||||
contact.setPostalAddress(toAddress(contactRecord));
|
||||
contact.setPhoneNumbers(toPhoneNumbers(contactRecord));
|
||||
|
||||
contacts.put(contactRecord.getInteger("contact_id"), contact);
|
||||
final Integer i = contactRecord.getInteger("contact_id");
|
||||
assertThat(contacts.containsKey(i)).describedAs("overwriting " + contacts.get(i) + " index " + i + " with " + contact).isFalse();
|
||||
contacts.put(i, contact);
|
||||
return contact;
|
||||
}
|
||||
|
||||
@ -1160,3 +1183,12 @@ class OrderedDependedTestsExtension implements TestWatcher, BeforeEachCallback {
|
||||
assumeThat(previousTestsPassed).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
class WriteOnceMap<K, V> extends TreeMap<K, V> {
|
||||
|
||||
@Override
|
||||
public V put(final K k, final V v) {
|
||||
assertThat(containsKey(k)).describedAs("overwriting " + get(k) + " index " + k + " with " + v).isFalse();
|
||||
return super.put(k, v);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user