@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 public List<Dataset> getCswLinkedDataset(final int cswId) { return dsl.select(DATASET.fields()) .from(DATASET, METADATA, METADATA_X_CSW) .where(METADATA.ID.eq(METADATA_X_CSW.METADATA_ID)) .and(DATASET.ID.eq(METADATA.DATASET_ID)) .and(METADATA_X_CSW.CSW_ID.eq(cswId)) .and(METADATA.DATASET_ID.isNotNull()) .fetchInto(Dataset.class); }
@Override @Transactional(propagation = Propagation.MANDATORY) public void removeDatasetFromCSW(int serviceID, 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.CSW_ID.eq(serviceID)) .and(METADATA_X_CSW.METADATA_ID.eq(metadata.getId())) .execute(); } }
@Override @Transactional(propagation = Propagation.MANDATORY) public void removeAllDatasetFromCSW(int serviceID) { dsl.delete(METADATA_X_CSW).where(METADATA_X_CSW.CSW_ID.eq(serviceID)).execute(); }