private Map<Long, Long> convertArtifactAndConflicts(ExchangeDataProcessor processor) throws OseeCoreException { V0_9_2ArtifactVersionHandler handler = new V0_9_2ArtifactVersionHandler(); processor.parse("osee.artifact.version.data.xml", handler); Map<Long, Long> artifactGammaToNetGammaId = handler.getArtifactGammaToNetGammaId(); Map<Integer, Long> artIdToNetGammaId = handler.getArtIdToNetGammaId(); processor.transform( ExportItem.OSEE_ARTIFACT_DATA, new V0_9_2ArtifactDataTransformer(artIdToNetGammaId)); processor.transform( ExportItem.OSEE_CONFLICT_DATA, new V0_9_2ConflictTransformer(artifactGammaToNetGammaId)); return artifactGammaToNetGammaId; }
@Override public Version applyTransform(ExchangeDataProcessor processor, Log logger) throws OseeCoreException { List<Long> branchUuids = convertBranchTable(processor); Map<Long, Long> artifactGammaToNetGammaId = convertArtifactAndConflicts(processor); consolidateTxsAddressing( processor, ExportItem.OSEE_TXS_DATA, branchUuids, artifactGammaToNetGammaId); HashCollection<String, String> tableToColumns = new HashCollection<>(); tableToColumns.put("osee_artifact", "<column id=\"gamma_id\" type=\"NUMERIC\" />\n"); tableToColumns.put( "osee_branch", "<column id=\"baseline_transaction_id\" type=\"INTEGER\" />\n"); processor.transform(ExportItem.EXPORT_DB_SCHEMA, new DbSchemaRuleAddColumn(tableToColumns)); processor.transform( ExportItem.EXPORT_MANIFEST, new ReplaceAll("<entry id=\"osee.artifact.version.data.xml[^<]+", "")); processor.deleteExportItem("osee.artifact.version.data.xml"); return getMaxVersion(); }
private void consolidateTxsAddressing( ExchangeDataProcessor processor, ExportItem exportItem, List<Long> branchUuids, Map<Long, Long> artifactGammaToNetGammaId) throws OseeCoreException { File targetFile = processor.getDataProvider().getFile(exportItem); File tempFile = new File(Lib.changeExtension(targetFile.getPath(), "temp")); Writer fileWriter = null; HashCollection<Long, Address> addressMap = new HashCollection<>(false, TreeSet.class); V0_9_2TxsConsolidateParser transformer = new V0_9_2TxsConsolidateParser(artifactGammaToNetGammaId, addressMap); try { fileWriter = processor.startTransform(targetFile, tempFile, transformer); ExchangeUtil.readExchange(tempFile, transformer); for (long branchUuid : branchUuids) { transformer.setBranchId(branchUuid); ExchangeUtil.readExchange(tempFile, transformer); for (Long gammaId : addressMap.keySet()) { Collection<Address> addresses = addressMap.getValues(gammaId); fixAddressing(addresses); writeAddresses(transformer.getWriter(), addresses); } addressMap.clear(); } tempFile.delete(); } catch (Exception ex) { OseeExceptions.wrapAndThrow(ex); } finally { try { transformer.finish(); } catch (Exception ex) { OseeExceptions.wrapAndThrow(ex); } finally { Lib.close(fileWriter); } } }
private List<Long> convertBranchTable(ExchangeDataProcessor processor) throws OseeCoreException { Map<Long, Integer> branchToBaseTx = new HashMap<>(10000); processor.parse(ExportItem.OSEE_TX_DETAILS_DATA, new V0_9_2TxDetailsHandler(branchToBaseTx)); processor.transform(ExportItem.OSEE_BRANCH_DATA, new V0_9_2BranchTransformer(branchToBaseTx)); return new ArrayList<Long>(branchToBaseTx.keySet()); }