@Transactional(readOnly = false, propagation = Propagation.REQUIRED) @Override public void addGeneralLocationDatumMetadata( Long locationId, String sourceId, GeneralDatumMetadata meta) { assert locationId != null; assert sourceId != null; assert meta != null; LocationSourcePK pk = new LocationSourcePK(locationId, sourceId); GeneralLocationDatumMetadata gdm = generalLocationDatumMetadataDao.get(pk); GeneralDatumMetadata newMeta = meta; if (gdm == null) { gdm = new GeneralLocationDatumMetadata(); gdm.setCreated(new DateTime()); gdm.setId(pk); newMeta = meta; } else if (gdm.getMeta() != null && gdm.getMeta().equals(meta) == false) { newMeta = new GeneralDatumMetadata(gdm.getMeta()); newMeta.merge(meta, true); } if (newMeta != null && newMeta.equals(gdm.getMeta()) == false) { // have changes, so persist gdm.setMeta(newMeta); generalLocationDatumMetadataDao.store(gdm); } }
@Transactional(readOnly = false, propagation = Propagation.REQUIRED) @Override public void storeGeneralLocationDatumMetadata( Long locationId, String sourceId, GeneralDatumMetadata meta) { assert locationId != null; assert sourceId != null; assert meta != null; LocationSourcePK pk = new LocationSourcePK(locationId, sourceId); GeneralLocationDatumMetadata gdm = generalLocationDatumMetadataDao.get(pk); if (gdm == null) { gdm = new GeneralLocationDatumMetadata(); gdm.setCreated(new DateTime()); gdm.setId(pk); gdm.setMeta(meta); } else { gdm.setMeta(meta); } generalLocationDatumMetadataDao.store(gdm); }