comparison backend/src/main/java/org/dive4elements/river/importer/ImportAttribute.java @ 9488:c347512a07bd

Fixed: finding attributes record first case sensitive, insensitive then as fallback
author mschaefer
date Tue, 18 Sep 2018 17:27:09 +0200
parents a275ddf7a3a1
children
comparison
equal deleted inserted replaced
9487:504f63512379 9488:c347512a07bd
57 57
58 public Attribute getPeer() { 58 public Attribute getPeer() {
59 if (this.peer != null) 59 if (this.peer != null)
60 return this.peer; 60 return this.peer;
61 final Session session = ImporterSession.getInstance().getDatabaseSession(); 61 final Session session = ImporterSession.getInstance().getDatabaseSession();
62 final Query query = session.createQuery("FROM Attribute WHERE value=:value");
63 query.setString("value", this.value.trim());
64 final List<Attribute> attributes = query.list();
65 if (attributes.isEmpty()) {
66 this.peer = getPeerCaseInsensitive();
67 if (this.peer == null) {
68 this.peer = new Attribute(this.value);
69 session.save(this.peer);
70 }
71 }
72 else {
73 this.peer = attributes.get(0);
74 }
75 return this.peer;
76 }
77
78 private Attribute getPeerCaseInsensitive() {
79 if (this.peer != null)
80 return this.peer;
81 final Session session = ImporterSession.getInstance().getDatabaseSession();
62 final Query query = session.createQuery("FROM Attribute WHERE lower(value)=:value"); 82 final Query query = session.createQuery("FROM Attribute WHERE lower(value)=:value");
63 query.setString("value", this.value.trim().toLowerCase()); 83 query.setString("value", this.value.trim().toLowerCase());
64 final List<Attribute> attributes = query.list(); 84 final List<Attribute> attributes = query.list();
65 if (attributes.isEmpty()) { 85 if (attributes.isEmpty()) {
66 this.peer = new Attribute(this.value); 86 this.peer = new Attribute(this.value);

http://dive4elements.wald.intevation.org