Addrobj unmarshalling adapter

change_data_scheme
Terekhin Alexander 5 years ago
parent c2a3417f0c
commit 9fae8eb95c
  1. 3
      src/main/java/me/bearns/fias/domain/House.java
  2. 3
      src/main/java/me/bearns/fias/repository/AddrobjRepository.java
  3. 39
      src/main/java/me/bearns/fias/xml/AddrObjAdapter.java

@ -2,9 +2,11 @@ package me.bearns.fias.domain;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import me.bearns.fias.xml.AddrObjAdapter;
import javax.persistence.*;
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
@ -45,6 +47,7 @@ public class House implements Serializable {
//@Column(name = "aoguid")
@ManyToOne(targetEntity = Addrobj.class)
@JoinColumn(name = "aoguid", referencedColumnName = "aoguid")
@XmlJavaTypeAdapter(AddrObjAdapter.class)
public Addrobj aoguid;
//@Type(type="uuid-char")

@ -4,9 +4,12 @@ import me.bearns.fias.domain.Addrobj;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
import java.util.UUID;
@Repository
public interface AddrobjRepository extends JpaRepository<Addrobj, UUID> {
public Optional<Addrobj> findByAoguid(UUID aoguid);
}

@ -0,0 +1,39 @@
package me.bearns.fias.xml;
import me.bearns.fias.domain.Addrobj;
import me.bearns.fias.repository.AddrobjRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.util.Optional;
import java.util.UUID;
@Component
public class AddrObjAdapter extends XmlAdapter<String, Addrobj> {
@Autowired
private static AddrobjRepository repository;
@Override
public Addrobj unmarshal(String v) throws Exception {
final UUID aoguid = UUID.fromString(v);
final Addrobj addrobj = repository.findByAoguid(aoguid).orElseGet(Addrobj::new);
addrobj.aoguid = aoguid;
return addrobj;
}
@Override
public String marshal(Addrobj v) throws Exception {
if(v!=null){
final UUID aoguid = v.aoguid;
if(aoguid!=null) return aoguid.toString();
}
return null;
}
}
Loading…
Cancel
Save