private static void copyFlagToProperty(MCRBase obj, JsonObject json, String flagName, String propertyName) { obj.getService() .getFlags(flagName) .stream() .findFirst() .ifPresent(c -> { json.addProperty(propertyName, c); }); }
private static void copyServiceDateToProperty(MCRBase obj, JsonObject jsonObj, String dateType, String propertyName) { Optional.ofNullable(obj.getService().getDate(dateType)) .map(Date::toInstant) .map(Instant::toString) .ifPresent(d -> jsonObj.addProperty(propertyName, d)); }
@Override public Predicate<MCRBase> provideRegistrationCondition(String type) { return (MCRBase base) -> { return Optional.ofNullable(base.getService().getState()) .map(state -> state.getID().equals("published")) .orElse(false); }; } }
public static void addFlagToObject(MCRBase obj, MCRPI databaseEntry) { String json = getGson().toJson(databaseEntry); obj.getService().addFlag(PI_FLAG, json); }
public static boolean hasFlag(MCRBase obj, String additional, MCRPIRegistrationInfo mcrpi) { MCRObjectService service = obj.getService(); ArrayList<String> flags = service.getFlags(MCRPIService.PI_FLAG); Gson gson = getGson(); return flags.stream().anyMatch(_stringFlag -> { MCRPI flag = gson.fromJson(_stringFlag, MCRPI.class); return flag.getAdditional().equals(additional) && flag.getIdentifier().equals(mcrpi.getIdentifier()); }); }
private void removeAccessKeys(final MCRBase obj) { LOGGER.debug("Remove access keys from pipe"); for (MIRAccessKeyPair.ServiceFlagType type : MIRAccessKeyPair.ServiceFlagType.values()) { obj.getService().removeFlags(type.value()); } } }
/** * Removes a flag from a {@link MCRObject} * * @param obj the object * @param databaseEntry the database entry * @return the remove entry parsed from json or null */ public static MCRPI removeFlagFromObject(MCRBase obj, MCRPI databaseEntry) { MCRObjectService service = obj.getService(); ArrayList<String> flags = service.getFlags(MCRPIService.PI_FLAG); int flagCount = flags.size(); for (int flagIndex = 0; flagIndex < flagCount; flagIndex++) { String flag = flags.get(flagIndex); MCRPI pi = getGson().fromJson(flag, MCRPI.class); if (pi.getIdentifier().equals(databaseEntry.getIdentifier()) && pi.getAdditional().equals(databaseEntry.getAdditional()) && pi.getService().equals(databaseEntry.getService()) && pi.getType().equals(databaseEntry.getType())) { service.removeFlag(flagIndex); return databaseEntry; } } return null; }
final Date objectCreateDate = mcrBase.getService().getDate(MCRObjectService.DATE_TYPE_CREATEDATE); resultingPI = resultingPI.replace(PLACE_HOLDER_OBJECT_DATE, getDateFormat().format(objectCreateDate));
public void updateFlag(MCRObjectID id, String additional, MCRPI mcrpi) { MCRBase obj = MCRMetadataManager.retrieve(id); MCRObjectService service = obj.getService(); ArrayList<String> flags = service.getFlags(MCRPIService.PI_FLAG); Gson gson = getGson(); String stringFlag = flags.stream().filter(_stringFlag -> { MCRPI flag = gson.fromJson(_stringFlag, MCRPI.class); return flag.getAdditional().equals(additional) && flag.getIdentifier().equals(mcrpi.getIdentifier()); }).findAny().orElseThrow(() -> new MCRException(new MCRPersistentIdentifierException( "Could find flag to update (" + id + "," + additional + "," + mcrpi.getIdentifier() + ")"))); int flagIndex = service.getFlagIndex(stringFlag); service.removeFlag(flagIndex); addFlagToObject(obj, mcrpi); try { MCRMetadataManager.update(obj); } catch (Exception e) { throw new MCRException("Could not update flags of object " + id, e); } } }
@Override public MCRDigitalObjectIdentifier generate(MCRBase mcrObj, String additional) throws MCRPersistentIdentifierException { Date createdate = mcrObj.getService().getDate("createdate"); if (createdate != null) { MCRISO8601Date mcrdate = new MCRISO8601Date(); mcrdate.setDate(createdate); String createDate = mcrdate.format(DATE_PATTERN, Locale.ENGLISH); final int count = getCountForCreateDate(createDate); Optional<MCRDigitalObjectIdentifier> parse = mcrdoiParser.parse(prefix + "/" + createDate + "-" + count); MCRPersistentIdentifier doi = parse.orElseThrow(() -> new MCRException("Error while parsing default doi!")); return (MCRDigitalObjectIdentifier) doi; } else { throw new MCRPersistenceException("The object " + mcrObj.getId() + " doesn't have a createdate!"); } }