Search in sources :

Example 16 with MCRPI

use of org.mycore.pi.backend.MCRPI in project mycore by MyCoRe-Org.

the class MCRPersistentIdentifierManager method getCount.

public int getCount(String type) {
    EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Number> rowCountQuery = cb.createQuery(Number.class);
    Root<MCRPI> pi = rowCountQuery.from(MCRPI.class);
    return em.createQuery(rowCountQuery.select(cb.count(pi)).where(cb.equal(pi.get(MCRPI_.type), type))).getSingleResult().intValue();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) MCRPI(org.mycore.pi.backend.MCRPI)

Example 17 with MCRPI

use of org.mycore.pi.backend.MCRPI in project mycore by MyCoRe-Org.

the class MCRPersistentIdentifierManager method getInfo.

public List<MCRPIRegistrationInfo> getInfo(String identifier) {
    EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<MCRPIRegistrationInfo> getQuery = cb.createQuery(MCRPIRegistrationInfo.class);
    Root<MCRPI> pi = getQuery.from(MCRPI.class);
    return em.createQuery(getQuery.select(pi).where(cb.equal(pi.get(MCRPI_.identifier), identifier))).getResultList();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) MCRPI(org.mycore.pi.backend.MCRPI)

Example 18 with MCRPI

use of org.mycore.pi.backend.MCRPI in project mycore by MyCoRe-Org.

the class MCRPersistentIdentifierManager method getRegistered.

public List<MCRPIRegistrationInfo> getRegistered(MCRObject object) {
    EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<MCRPIRegistrationInfo> getQuery = cb.createQuery(MCRPIRegistrationInfo.class);
    Root<MCRPI> pi = getQuery.from(MCRPI.class);
    return em.createQuery(getQuery.select(pi).where(cb.equal(pi.get(MCRPI_.mycoreID), object.getId().toString()))).getResultList();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) MCRPI(org.mycore.pi.backend.MCRPI)

Example 19 with MCRPI

use of org.mycore.pi.backend.MCRPI in project mycore by MyCoRe-Org.

the class MCRPersistentIdentifierManager method exist.

public boolean exist(MCRPIRegistrationInfo mcrpiRegistrationInfo) {
    EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Number> rowCountQuery = cb.createQuery(Number.class);
    Root<MCRPI> pi = rowCountQuery.from(MCRPI.class);
    return em.createQuery(rowCountQuery.select(cb.count(pi)).where(cb.equal(pi.get(MCRPI_.type), mcrpiRegistrationInfo.getType()), cb.equal(pi.get(MCRPI_.additional), mcrpiRegistrationInfo.getAdditional()), cb.equal(pi.get(MCRPI_.identifier), mcrpiRegistrationInfo.getIdentifier()), cb.equal(pi.get(MCRPI_.service), mcrpiRegistrationInfo.getService()), cb.equal(pi.get(MCRPI_.mycoreID), mcrpiRegistrationInfo.getMycoreID()))).getSingleResult().intValue() > 0;
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) MCRPI(org.mycore.pi.backend.MCRPI)

Example 20 with MCRPI

use of org.mycore.pi.backend.MCRPI in project mycore by MyCoRe-Org.

the class MCRPICommands method migrateURNGranularToServiceID.

@MCRCommand(syntax = "migrate urn granular to service id {0}", help = "Used to migrate urn granular to MyCoRe-PI. " + "{0} should be your granular service id.")
public static void migrateURNGranularToServiceID(String serviceID) {
    Session session = MCRHIBConnection.instance().getSession();
    MCRXMLMetadataManager.instance().listIDsOfType("derivate").forEach(derivateID -> {
        MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derivateID));
        String urn = derivate.getDerivate().getURN();
        if (urn != null) {
            LOGGER.info("Found URN in :{}", derivateID);
            MCRPI derivatePI = new MCRPI(urn, MCRDNBURN.TYPE, derivateID, "", serviceID, new Date());
            if (MCRPersistentIdentifierManager.getInstance().exist(derivatePI)) {
                LOGGER.warn("PI-Entry for {} already exist!", urn);
            } else {
                session.save(derivatePI);
                derivate.getUrnMap().forEach((file, fileURN) -> {
                    MCRPI filePI = new MCRPI(fileURN, MCRDNBURN.TYPE, derivateID, file, serviceID, new Date());
                    if (MCRPersistentIdentifierManager.getInstance().exist(filePI)) {
                        LOGGER.warn("PI-Entry for {} already exist!", fileURN);
                    } else {
                        session.save(fileURN);
                    }
                });
            }
        }
    });
}
Also used : MCRPI(org.mycore.pi.backend.MCRPI) MCRDerivate(org.mycore.datamodel.metadata.MCRDerivate) Date(java.util.Date) Session(org.hibernate.Session) MCRCommand(org.mycore.frontend.cli.annotation.MCRCommand)

Aggregations

MCRPI (org.mycore.pi.backend.MCRPI)23 Date (java.util.Date)8 EntityManager (javax.persistence.EntityManager)6 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)6 MCRPersistentIdentifierException (org.mycore.pi.exceptions.MCRPersistentIdentifierException)6 MCRBase (org.mycore.datamodel.metadata.MCRBase)4 MCRCommand (org.mycore.frontend.cli.annotation.MCRCommand)4 Session (org.hibernate.Session)3 MCRAccessException (org.mycore.access.MCRAccessException)3 MCRException (org.mycore.common.MCRException)3 MCRActiveLinkException (org.mycore.datamodel.common.MCRActiveLinkException)3 MCRDerivate (org.mycore.datamodel.metadata.MCRDerivate)3 MCRObject (org.mycore.datamodel.metadata.MCRObject)3 MCRObjectID (org.mycore.datamodel.metadata.MCRObjectID)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Collectors (java.util.stream.Collectors)2 LogManager (org.apache.logging.log4j.LogManager)2 Logger (org.apache.logging.log4j.Logger)2 Test (org.junit.Test)2