branch feature/6714 created (now 04a00a9)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6714 in repository tutti. See http://git.codelutin.com/tutti.git at 04a00a9 creation de la tache de modification des taxon dans les batchs (refs #6714) This branch includes the following new commits: new 04a00a9 creation de la tache de modification des taxon dans les batchs (refs #6714) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 04a00a9af27ecbe1814d37adba5011d32a65fde2 Author: Kevin Morin <morin@codelutin.com> Date: Thu Dec 17 13:49:20 2015 +0100 creation de la tache de modification des taxon dans les batchs (refs #6714) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6714 in repository tutti. See http://git.codelutin.com/tutti.git commit 04a00a9af27ecbe1814d37adba5011d32a65fde2 Author: Kevin Morin <morin@codelutin.com> Date: Thu Dec 17 13:49:20 2015 +0100 creation de la tache de modification des taxon dans les batchs (refs #6714) --- .../service/TuttiPersistenceServiceLocator.java | 2 +- .../referential/synchro/ReferentialUpdateTask.java | 28 +++++++++ ...aceReferenceTaxonReferentialUpdateTaskImpl.java | 70 ++++++++++++++++++++++ .../TuttiReferentialSynchroServiceImpl.java | 67 +++++++++++++++++++++ ...rvice.referential.synchro.ReferentialUpdateTask | 1 + .../TuttiReferentialSynchronizeService.java | 4 +- 6 files changed, 169 insertions(+), 3 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java index 5134dc9..1d3d860 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java @@ -119,7 +119,7 @@ public class TuttiPersistenceServiceLocator extends ServiceLocator { //TODO Move this to adagio public static ReferentialSynchroService getReferentialSynchroService() { ReferentialSynchroService service = instance().getService( - "referentialSynchroService", ReferentialSynchroService.class); + "referentialSynchroServiceTutti", ReferentialSynchroService.class); return service; } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReferentialUpdateTask.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReferentialUpdateTask.java new file mode 100644 index 0000000..f7f7696 --- /dev/null +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReferentialUpdateTask.java @@ -0,0 +1,28 @@ +package fr.ifremer.tutti.persistence.service.referential.synchro; + +import fr.ifremer.adagio.core.service.technical.synchro.ReferentialSynchroDatabaseMetadata; +import fr.ifremer.adagio.core.service.technical.synchro.ReferentialSynchroTableTool; + +import java.sql.SQLException; +import java.sql.Timestamp; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.2 + */ +public interface ReferentialUpdateTask { + + String getTable(); + + /** + * @param dbMetas + * metas of db + * @param localDao + * dao of local table + * @return the set of pks to remove + * @throws SQLException + */ + void update(ReferentialSynchroDatabaseMetadata dbMetas, + ReferentialSynchroTableTool localDao, + Timestamp lastUpdate) throws SQLException; +} diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReplaceReferenceTaxonReferentialUpdateTaskImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReplaceReferenceTaxonReferentialUpdateTaskImpl.java new file mode 100644 index 0000000..0b59032 --- /dev/null +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/ReplaceReferenceTaxonReferentialUpdateTaskImpl.java @@ -0,0 +1,70 @@ +package fr.ifremer.tutti.persistence.service.referential.synchro; + +import fr.ifremer.adagio.core.service.technical.synchro.ReferentialSynchroDatabaseMetadata; +import fr.ifremer.adagio.core.service.technical.synchro.ReferentialSynchroTableTool; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.service.referential.SpeciesPersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.annotation.Resource; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.2 + */ +public class ReplaceReferenceTaxonReferentialUpdateTaskImpl implements ReferentialUpdateTask { + + @Resource(name = "speciesPersistenceService") + private SpeciesPersistenceService speciesService; + + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(ReplaceReferenceTaxonReferentialUpdateTaskImpl.class); + + @Override + public String getTable() { + return "TRANSCRIBING_ITEM"; + } + + @Override + public void update(ReferentialSynchroDatabaseMetadata dbMetas, + ReferentialSynchroTableTool localDao, + Timestamp lastUpdate) throws SQLException { + + int typeId = 61; + + Map<String, Integer> reftaxToReplace = new HashMap<>(); + + ResultSet incomingData = localDao.getDataToUpdate(lastUpdate); + + int typeColumnIndex = incomingData.findColumn("transcribing_item_type_fk"); + int oldReftaxColumnIndex = incomingData.findColumn("external_code"); + int newReftaxColumnIndex = incomingData.findColumn("object_id"); + + while (incomingData.next()) { + if (typeId == incomingData.getInt(typeColumnIndex)) { + reftaxToReplace.put(incomingData.getString(oldReftaxColumnIndex), + incomingData.getInt(newReftaxColumnIndex)); + } + } + + for (String oldRefTaxId : reftaxToReplace.keySet()) { + + Integer newRefTaxId = reftaxToReplace.get(oldRefTaxId); + + Species source = speciesService.getSpeciesByReferenceTaxonId(Integer.parseInt(oldRefTaxId)); + Species target = speciesService.getSpeciesByReferenceTaxonId(newRefTaxId); + + speciesService.replaceSpecies(source, target, false); + + } + + } +} diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/TuttiReferentialSynchroServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/TuttiReferentialSynchroServiceImpl.java new file mode 100644 index 0000000..39c5817 --- /dev/null +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/referential/synchro/TuttiReferentialSynchroServiceImpl.java @@ -0,0 +1,67 @@ +package fr.ifremer.tutti.persistence.service.referential.synchro; + +import com.google.common.collect.Maps; +import fr.ifremer.adagio.core.service.technical.synchro.*; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Map; +import java.util.ServiceLoader; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.2 + */ +@Service("referentialSynchroServiceTutti") +@Lazy +public class TuttiReferentialSynchroServiceImpl extends ReferentialSynchroServiceImpl { + + protected Map<String, ReferentialUpdateTask> updateTasks; + + public Map<String, ReferentialUpdateTask> getUpdateTasks() { + if (updateTasks == null) { + + updateTasks = Maps.newHashMap(); + + ServiceLoader<ReferentialUpdateTask> loader = ServiceLoader.load(ReferentialUpdateTask.class); + for (ReferentialUpdateTask task : loader) { + updateTasks.put(task.getTable(), task); + } + + } + return updateTasks; + } + /** + * Logger. + */ + private static final Log log = LogFactory.getLog(TuttiReferentialSynchroServiceImpl.class); + + protected void updateSmallTable( + ReferentialSynchroDatabaseMetadata dbMetas, + ReferentialSynchroTableTool localDao, + ResultSet incomingData, + ReferentialSynchroResult result) throws SQLException { + + + Timestamp lastUpdate = localDao.getLastUpdateDate(); + + super.updateSmallTable(dbMetas, localDao, incomingData, result); + + ReferentialSynchroTableMetadata table = localDao.getTable(); + String tableName = table.getName(); + + ReferentialUpdateTask updateTask = getUpdateTasks().get(tableName); + + if (updateTask != null && log.isInfoEnabled()) { + log.info(table.getTableLogPrefix() + " - " + result.getNbRows(tableName) + " Will use specific update task: " + updateTask); + } + if (updateTask != null) { + updateTask.update(dbMetas, localDao, lastUpdate); + } + } +} diff --git a/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.service.referential.synchro.ReferentialUpdateTask b/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.service.referential.synchro.ReferentialUpdateTask new file mode 100644 index 0000000..17a72c4 --- /dev/null +++ b/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.service.referential.synchro.ReferentialUpdateTask @@ -0,0 +1 @@ +fr.ifremer.tutti.persistence.service.referential.synchro.ReplaceReferenceTaxonReferentialUpdateTaskImpl \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialSynchronizeService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialSynchronizeService.java index 21d12cd..c30a997 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialSynchronizeService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialSynchronizeService.java @@ -91,10 +91,10 @@ public class TuttiReferentialSynchronizeService extends AbstractTuttiService { "TAXON_GROUP_INFORMATION", // TRANSCRIBING - "TRANSCRIBING_ITEM", - "TRANSCRIBING_ITEM_TYPE", "TRANSCRIBING_SIDE", "TRANSCRIBING_SYSTEM", + "TRANSCRIBING_ITEM_TYPE", + "TRANSCRIBING_ITEM", // CONVERSION "ROUND_WEIGHT_CONVERSION", -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm