public void saveOrUpdate(DataSharingSettings dataSharingSettings) throws DuplicateDataSharingSettingsException { DataSharingSettings existing = load(); if (dataSharingSettings.hasId() && dataSharingSettings.getId() != existing.getId()) { throw new DuplicateDataSharingSettingsException(); } if (existing != null) { existing.copyFrom(dataSharingSettings); } else { existing = dataSharingSettings; } sessionFactory.getCurrentSession().saveOrUpdate(existing); }
@Test public void shouldCopyDataSharingAttributesFromProvidedObject() { Date currentUpdatedOn = new Date(); currentUpdatedOn.setTime(currentUpdatedOn.getTime() - 10000); DataSharingSettings current = new DataSharingSettings(false, "default", currentUpdatedOn); DataSharingSettings latest = new DataSharingSettings(true, "Bob", new Date()); assertThat(current.allowSharing(), is(not(latest.allowSharing()))); assertThat(current.updatedBy(), is(not(latest.updatedBy()))); assertThat(current.updatedOn().getTime(), is(not(latest.updatedOn().getTime()))); current.copyFrom(latest); assertThat(current.allowSharing(), is(latest.allowSharing())); assertThat(current.updatedBy(), is(latest.updatedBy())); assertThat(current.updatedOn().getTime(), is(latest.updatedOn().getTime())); }
@Test public void shouldNotCopyPersistentObjectIdWhileCopying() { DataSharingSettings current = new DataSharingSettings(); current.setId(1); DataSharingSettings latest = new DataSharingSettings(); latest.setId(2); assertThat(current.getId(), is(1L)); current.copyFrom(latest); assertThat(current.getId(), is(1L)); } }