Adress editable

master
Markus Kreth 7 years ago
parent bb772f29c1
commit 6008483753
  1. 3
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDao.java
  2. 16
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java
  3. 67
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Adress.java
  4. 46
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/AdressComponent.java
  5. 2
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/ContactGrid.java
  6. 27
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java
  7. 1
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/RelationComponent.java

@ -4,6 +4,7 @@ import java.util.List;
import javax.persistence.NoResultException;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Adress;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Contact;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Relation;
@ -25,4 +26,6 @@ public interface PersonDao extends IDao<Person> {
void delete(Contact c);
void delete(Person p);
void delete(Adress a);
}

@ -10,6 +10,7 @@ import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Adress;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Contact;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.EntityAccessor;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
@ -42,6 +43,12 @@ public class PersonDaoImpl extends AbstractDaoImpl<Person> implements PersonDao
persistOrUpdate(c);
}
}
List<Adress> adresses = obj.getAdresses();
if (adresses != null) {
for (Adress a : adresses) {
persistOrUpdate(a);
}
}
}
@Transactional
@ -112,4 +119,13 @@ public class PersonDaoImpl extends AbstractDaoImpl<Person> implements PersonDao
p.setDeleted(new Date());
entityManager.merge(p);
}
@Override
public void delete(Adress a) {
a.setDeleted(new Date());
entityManager.merge(a);
Person person = a.getPerson();
person.getAdresses().remove(a);
}
}

@ -73,4 +73,71 @@ public class Adress extends BaseEntity implements Serializable {
this.person = person;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((adress1 == null) ? 0 : adress1.hashCode());
result = prime * result + ((adress2 == null) ? 0 : adress2.hashCode());
result = prime * result + ((city == null) ? 0 : city.hashCode());
result = prime * result + ((person == null) ? 0 : person.hashCode());
result = prime * result + ((plz == null) ? 0 : plz.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Adress other = (Adress) obj;
if (adress1 == null) {
if (other.adress1 != null) {
return false;
}
} else if (!adress1.equals(other.adress1)) {
return false;
}
if (adress2 == null) {
if (other.adress2 != null) {
return false;
}
} else if (!adress2.equals(other.adress2)) {
return false;
}
if (city == null) {
if (other.city != null) {
return false;
}
} else if (!city.equals(other.city)) {
return false;
}
if (person == null) {
if (other.person != null) {
return false;
}
} else if (!person.equals(other.person)) {
return false;
}
if (plz == null) {
if (other.plz != null) {
return false;
}
} else if (!plz.equals(other.plz)) {
return false;
}
return true;
}
@Override
public String toString() {
return "Adress [adress1=" + adress1 + ", adress2=" + adress2 + ", plz=" + plz + ", city=" + city + "]";
}
}

@ -0,0 +1,46 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.util.Collection;
import java.util.stream.Collectors;
import com.vaadin.data.Binder;
import com.vaadin.data.ValidationResult;
import com.vaadin.data.ValueContext;
import com.vaadin.ui.TextField;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Adress;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
public class AdressComponent extends AbstractDataGrid<Adress> {
private static final long serialVersionUID = 1608846765622407233L;
@Override
protected ValidationResult validate(Adress obj, ValueContext context) {
return ValidationResult.ok();
}
@Override
protected Adress createNewItem() {
return new Adress();
}
@Override
protected void createColumnAndBinding(Binder<Adress> binder) {
addColumn(Adress::getAdress1).setCaption("Adresse 1")
.setEditorBinding(binder.bind(new TextField(), Adress::getAdress1, Adress::setAdress1));
addColumn(Adress::getAdress2).setCaption("Adresse 2")
.setEditorBinding(binder.bind(new TextField(), Adress::getAdress2, Adress::setAdress2));
addColumn(Adress::getPlz).setCaption("PLZ")
.setEditorBinding(binder.bind(new TextField(), Adress::getPlz, Adress::setPlz));
addColumn(Adress::getCity).setCaption("Ort")
.setEditorBinding(binder.bind(new TextField(), Adress::getCity, Adress::setCity));
}
@Override
protected Collection<? extends Adress> readValues(Person person) {
return person.getAdresses().stream().filter(e -> e.getDeleted() == null).collect(Collectors.toList());
}
}

@ -25,7 +25,7 @@ public class ContactGrid extends AbstractDataGrid<Contact> {
private static final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
@Override
public void createColumnAndBinding(Binder<Contact> binder) {
protected void createColumnAndBinding(Binder<Contact> binder) {
Binding<Contact, String> typeBinding = binder.bind(new ContactTypeComponent(), Contact::getType,
Contact::setType);
Binding<Contact, String> valueBinding = binder.bind(new TextField(), Contact::getValue, Contact::setValue);

@ -39,6 +39,7 @@ public class PersonEditDetails extends HorizontalLayout {
private ContactGrid contactLayout;
private RelationComponent relationshipLayout;
private AdressComponent adressLayout;
public PersonEditDetails(List<GroupDef> groups, PersonDao dao) {
this(groups, dao, true);
@ -93,6 +94,7 @@ public class PersonEditDetails extends HorizontalLayout {
}
contactLayout.setPerson(edited);
relationshipLayout.setPerson(edited);
adressLayout.setPerson(edited);
} else {
List<ValidationResult> errors = validate.getBeanValidationErrors();
StringBuilder msg = new StringBuilder();
@ -120,20 +122,37 @@ public class PersonEditDetails extends HorizontalLayout {
+ c.getPerson().getSurname() + " \"" + c + "\" wirklich löschen?")
.yesCancel().setResultHandler(button -> {
if (button == ConfirmDialog.Buttons.YES) {
if (binder.validate().isOk()) {
dao.delete(c);
}
}
}).build();
getUI().addWindow(dlg);
});
contactLayout.addSuccessConsumer(newContact -> binder.getBean().add(newContact));
relationshipLayout = new RelationComponent(dao);
adressLayout = new AdressComponent();
adressLayout.setDeleteConsumer(a -> {
ConfirmDialog dlg = ConfirmDialog
.builder().setCaption("Adresse löschen").setMessage(a.getPerson().getPrename() + " "
+ a.getPerson().getSurname() + " \"" + a + "\" wirklich löschen?")
.yesCancel().setResultHandler(button -> {
if (button == ConfirmDialog.Buttons.YES) {
dao.delete(a);
}
}).build();
getUI().addWindow(dlg);
});
adressLayout.addSuccessConsumer(newAdress -> binder.getBean().addAdress(newAdress));
TabSheet sheet = new TabSheet();
sheet.addTab(groupLayout, "Gruppen");
sheet.addTab(contactLayout, "Kontakte");
sheet.addTab(relationshipLayout, "Angehörige");
sheet.addTab(adressLayout, "Adresse");
addComponents(layout, sheet);
setExpandRatio(layout, 1f);
setExpandRatio(sheet, 2f);
@ -169,6 +188,7 @@ public class PersonEditDetails extends HorizontalLayout {
binder.setBean(person);
contactLayout.setPerson(person);
relationshipLayout.setPerson(person);
adressLayout.setPerson(person);
if (person != null) {
okButton.setEnabled(true);
@ -197,7 +217,8 @@ public class PersonEditDetails extends HorizontalLayout {
}
public boolean hasChanges() {
return binder.hasChanges() || contactLayout.hasChanges() || relationshipLayout.hasChanges();
return binder.hasChanges() || contactLayout.hasChanges() || relationshipLayout.hasChanges()
|| adressLayout.hasChanges();
}
}

@ -24,7 +24,6 @@ public class RelationComponent extends AbstractDataGrid<Relation> {
protected void createColumnAndBinding(Binder<Relation> binder) {
addColumn(r -> r.getRelation().getLocalized()).setCaption("Beiehung");
addColumn(r -> r.getPerson().getPrename() + " " + r.getPerson().getSurname());
}
@Override

Loading…
Cancel
Save