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();
}
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();
}
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();
}
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;
}
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);
}
});
}
}
});
}
Aggregations