@Override public int save(T object) { if (!Interpretation.class.isAssignableFrom(clazz) && currentUserService.getCurrentUser() != null && SharingUtils.isSupported(clazz)) { BaseIdentifiableObject identifiableObject = (BaseIdentifiableObject) object; // TODO we might want to allow setting sharing props on save, but for now we null them out identifiableObject.setPublicAccess(null); identifiableObject.setUserGroupAccesses(new HashSet<UserGroupAccess>()); if (identifiableObject.getUser() == null) { identifiableObject.setUser(currentUserService.getCurrentUser()); } if (SharingUtils.canCreatePublic(currentUserService.getCurrentUser(), identifiableObject)) { if (SharingUtils.defaultPublic(clazz)) { String build = AccessStringHelper.newInstance() .enable(AccessStringHelper.Permission.READ) .enable(AccessStringHelper.Permission.WRITE) .build(); identifiableObject.setPublicAccess(build); } else { String build = AccessStringHelper.newInstance().build(); identifiableObject.setPublicAccess(build); } } else if (SharingUtils.canCreatePrivate( currentUserService.getCurrentUser(), identifiableObject)) { identifiableObject.setPublicAccess(AccessStringHelper.newInstance().build()); } else { AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_CREATE_DENIED); throw new CreateAccessDeniedException(object.toString()); } } AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_CREATE); return (Integer) sessionFactory.getCurrentSession().save(object); }
@Override public void mergeWith(IdentifiableObject other) { super.mergeWith(other); if (other.getClass().isInstance(this)) { Map map = (Map) other; user = map.getUser() == null ? user : map.getUser(); longitude = map.getLongitude() == null ? longitude : map.getLongitude(); latitude = map.getLatitude() == null ? latitude : map.getLatitude(); zoom = map.getZoom() == null ? zoom : map.getZoom(); mapViews.clear(); mapViews.addAll(map.getMapViews()); } }
@Override public void mergeWith(IdentifiableObject other) { super.mergeWith(other); if (other.getClass().isInstance(this)) { DataDictionary dataDictionary = (DataDictionary) other; description = dataDictionary.getDescription() == null ? description : dataDictionary.getDescription(); region = dataDictionary.getRegion() == null ? region : dataDictionary.getRegion(); removeAllDataElements(); dataElements.addAll(dataDictionary.getDataElements()); removeAllIndicators(); indicators.addAll(dataDictionary.getIndicators()); } }
@Override public void mergeWith(IdentifiableObject other) { super.mergeWith(other); if (other.getClass().isInstance(this)) { ProgramStage programStage = (ProgramStage) other; description = programStage.getDescription(); minDaysFromStart = programStage.getMinDaysFromStart(); irregular = programStage.getIrregular(); program = programStage.getProgram(); dataEntryForm = programStage.getDataEntryForm(); standardInterval = programStage.getStandardInterval(); reportDateDescription = programStage.getReportDateDescription(); autoGenerateEvent = programStage.isAutoGenerated(); validCompleteOnly = programStage.getValidCompleteOnly(); displayGenerateEventBox = programStage.getDisplayGenerateEventBox(); captureCoordinates = programStage.getCaptureCoordinates(); blockEntryForm = programStage.getBlockEntryForm(); remindCompleted = programStage.getRemindCompleted(); generatedByEnrollmentDate = programStage.getGeneratedByEnrollmentDate(); allowGenerateNextVisit = programStage.getAllowGenerateNextVisit(); openAfterEnrollment = programStage.getOpenAfterEnrollment(); reportDateToUse = programStage.getReportDateToUse(); preGenerateUID = programStage.getPreGenerateUID(); programStageDataElements.clear(); programStageDataElements.addAll(programStage.getProgramStageDataElements()); programStageSections.clear(); programStageSections.addAll(programStage.getProgramStageSections()); reminders.clear(); reminders.addAll(programStage.getReminders()); } }