Author: tchemit Date: 2011-12-20 00:15:41 +0100 (Tue, 20 Dec 2011) New Revision: 207 Url: http://forge.codelutin.com/repositories/revision/echobase/207 Log: fix association loading Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java 2011-12-19 21:56:39 UTC (rev 206) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbImportService.java 2011-12-19 23:15:41 UTC (rev 207) @@ -271,8 +271,22 @@ ImportToMap importer = MyImportToMap.newImport(model, reader); StringBuilder builder = new StringBuilder(); + try { - String updateString = "UPDATE " + target.getContract().getSimpleName() + " SET " + source.getContract().getSimpleName() + " = '%s' WHERE topiaId ='%s';"; + String updateString; + String targetTableName = target.getContract().getSimpleName(); + String sourceTableName = source.getContract().getSimpleName(); + String table = targetTableName; + if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Echotype) { + table = targetTableName + "_" + sourceTableName; + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; + } else if (source == EchoBaseEntityEnum.Voyage && target == EchoBaseEntityEnum.Strata) { + table = targetTableName + "_" + source.getContract().getSimpleName(); + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE " + meta.getName() + " ='%s';"; + } else { + updateString = "UPDATE " + table + " SET " + sourceTableName + " = '%s' WHERE topiaId ='%s';"; + } + if (log.isDebugEnabled()) { log.debug("Will apply " + updateString); } @@ -283,7 +297,7 @@ for (String association : associations) { builder.append(String.format(updateString, topiaId, association)).append('\n'); compt++; - if (compt == 10000) { + if (compt % 10000 == 0) { // flush it getTransaction().executeSQL(builder.toString()); builder = new StringBuilder(); @@ -291,6 +305,9 @@ } csvResult.incrementsNumberUpdated(); } + if (builder.length() > 0) { + getTransaction().executeSQL(builder.toString()); + } } catch (TopiaException eee) { throw new EchoBaseTechnicalException( "Could not execute sql script", eee);