@Override
 public MetadataXCsw addDatasetToCSW(final int serviceID, final int datasetID) {
   final Metadata metadata =
       dsl.select()
           .from(METADATA)
           .where(METADATA.DATASET_ID.eq(datasetID))
           .fetchOneInto(Metadata.class);
   if (metadata != null) {
     final MetadataXCsw dxc =
         dsl.select()
             .from(METADATA_X_CSW)
             .where(METADATA_X_CSW.CSW_ID.eq(serviceID))
             .and(METADATA_X_CSW.METADATA_ID.eq(metadata.getId()))
             .fetchOneInto(MetadataXCsw.class);
     if (dxc == null) {
       MetadataXCswRecord newRecord = dsl.newRecord(METADATA_X_CSW);
       newRecord.setCswId(serviceID);
       newRecord.setMetadataId(metadata.getId());
       newRecord.store();
       return newRecord.into(MetadataXCsw.class);
     }
     return dxc;
   }
   return null;
 }
 @Override
 @Transactional(propagation = Propagation.MANDATORY)
 public void removeDatasetFromAllCSW(int datasetID) {
   final Metadata metadata =
       dsl.select()
           .from(METADATA)
           .where(METADATA.DATASET_ID.eq(datasetID))
           .fetchOneInto(Metadata.class);
   if (metadata != null) {
     dsl.delete(METADATA_X_CSW).where(METADATA_X_CSW.METADATA_ID.eq(metadata.getId())).execute();
   }
 }