Addrobj unmarshalling adapter
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user