diff --git a/src/main/java/cz/cvut/kbss/study/persistence/dao/UserDao.java b/src/main/java/cz/cvut/kbss/study/persistence/dao/UserDao.java index 9e461d9..d9c282b 100644 --- a/src/main/java/cz/cvut/kbss/study/persistence/dao/UserDao.java +++ b/src/main/java/cz/cvut/kbss/study/persistence/dao/UserDao.java @@ -2,6 +2,10 @@ import cz.cvut.kbss.jopa.exceptions.NoResultException; import cz.cvut.kbss.jopa.model.EntityManager; +import cz.cvut.kbss.jopa.model.descriptors.Descriptor; +import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor; +import cz.cvut.kbss.jopa.model.metamodel.EntityType; +import cz.cvut.kbss.study.exception.PersistenceException; import cz.cvut.kbss.study.model.Institution; import cz.cvut.kbss.study.model.User; import cz.cvut.kbss.study.model.Vocabulary; @@ -9,9 +13,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; - import java.math.BigInteger; import java.net.URI; +import java.net.URISyntaxException; import java.util.List; import java.util.Objects; @@ -24,6 +28,26 @@ public UserDao(EntityManager em) { super(User.class, em); } + private Descriptor getDescriptor(URI ctx){ + Descriptor descriptor = new EntityDescriptor(ctx); + EntityType et = em.getMetamodel().entity(User.class); + descriptor.addAttributeContext(et.getAttribute("institution"), null); + return descriptor; + } + + @Override + public void persist(User entity) { + Objects.requireNonNull(entity); + try { + entity.generateUri(); + Descriptor descriptor = getDescriptor(new URI(Vocabulary.s_c_Person)); + em.persist(entity, descriptor); + } catch (RuntimeException | URISyntaxException e) { + LOG.error("Error when persisting entity.", e); + throw new PersistenceException(e); + } + } + public User findByUsername(String username) { Objects.requireNonNull(username); try {