public static AIP earkSIPToAIP(SIP sip, String username, Permissions fullPermissions, ModelService model,
List<String> ingestSIPIds, String ingestJobId, Optional<String> parentId, String ingestSIPUUID, Plugin<?> plugin)
throws RequestNotValidException, NotFoundException, GenericException, AlreadyExistsException,
AuthorizationDeniedException, ValidationException, IOException, LockingException {
AIPState state = AIPState.INGEST_PROCESSING;
Permissions permissions = new Permissions();
boolean notify = false;
String aipType = IngestHelper.getType(sip);
AIP aip = model.createAIP(state, parentId.orElse(null), aipType, permissions, ingestSIPUUID, ingestSIPIds,
ingestJobId, notify, username);
PluginHelper.acquireObjectLock(aip, plugin);
processIPInformation(model, sip, aip.getId(), notify, false);
for (IPRepresentation representation : sip.getRepresentations()) {
processIPRepresentationInformation(model, representation, aip.getId(), notify, false, username, null);
}
model.notifyAipCreated(aip.getId());
AIP createdAIP = model.retrieveAIP(aip.getId());
Permissions readPermissions = PermissionUtils.grantReadPermissionToUserGroup(model, createdAIP,
aip.getPermissions());
Permissions finalPermissions = PermissionUtils.grantAllPermissions(username, readPermissions, fullPermissions);
createdAIP.setPermissions(finalPermissions);
model.updateAIP(createdAIP, username);
return model.retrieveAIP(aip.getId());
}