From 528398710dec07f69e32c34aeaafc0ff34725aff Mon Sep 17 00:00:00 2001 From: Vincent BOUSSAUD Date: Tue, 17 Feb 2026 16:50:10 +0100 Subject: [PATCH 1/5] [SAFRAN-1211] Create bases of merging wizard --- .../plugin.xml | 43 ++-- .../handlers/GlobalChangelogHandler.java | 92 ++++++++ .../ui/GlobalChangelogSelectionWizard.java | 222 ++++++++++++++++++ 3 files changed, 342 insertions(+), 15 deletions(-) create mode 100644 reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java create mode 100644 reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml index 1762202a5..d03cdf26d 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml @@ -22,6 +22,10 @@ optional="true"> + + @@ -29,6 +33,10 @@ class="org.obeonetwork.dsl.database.liquibasegen.handlers.ChangelogHandler" commandId="org.obeonetwork.dsl.database.liquibasegen.command"> + + @@ -53,22 +61,27 @@ name="org.obeonetwork.dsl.database.liquibasegen.file" value="org.obeonetwork.dsl.database.liquibasegen.parameter1"> + + + + + + + + + + - - - - - - - - diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java new file mode 100644 index 000000000..6fc977500 --- /dev/null +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java @@ -0,0 +1,92 @@ +/** + * + */ +package org.obeonetwork.dsl.database.liquibasegen.handlers; + +import java.io.IOException; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.FileVisitResult; +import java.nio.file.FileVisitor; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.PathMatcher; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.internal.resources.Container; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; +import org.obeonetwork.dsl.database.liquibasegen.ui.GlobalChangelogSelectionWizard; +import org.obeonetwork.utils.common.ui.handlers.EventHelper; + +/** + * Merge changelog into a global changelog file + * + */ +@SuppressWarnings("restriction") +public class GlobalChangelogHandler extends AbstractHandler { + + + private Shell shell; + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + shell = HandlerUtil.getActiveShell(event); + + Container projectDBDir = EventHelper.uwrapSingleSelection(event, Container.class); + + if(projectDBDir == null) { + return null; + } + + try { + if (openChangelogSelectionWizard(projectDBDir)) { + + } + }catch (IOException e) { + // TODO: handle exception + } + + return null; + } + + private boolean openChangelogSelectionWizard(Container projectDBDir) throws IOException { + // get list of files + SearchFileByWildcard sfbw = new SearchFileByWildcard(); + List changelogs = sfbw.searchWithWc(Paths.get(projectDBDir.getLocation().toOSString()), + "run.changelog.xml"); + WizardDialog dialog = new WizardDialog(shell, new GlobalChangelogSelectionWizard(changelogs, projectDBDir.getLocation().toOSString())); + dialog.create(); + dialog.open(); + + return false; + } + +} + +class SearchFileByWildcard { + static List matchesList = new ArrayList(); + List searchWithWc(Path rootDir, String pattern) throws IOException { + matchesList.clear(); + FileVisitor matcherVisitor = new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attribs) throws IOException { + if (Pattern.matches(pattern, file.getFileName().toString())) { + matchesList.add(rootDir.relativize(file).toString()); + } + return FileVisitResult.CONTINUE; + } + }; + Files.walkFileTree(rootDir, matcherVisitor); + return matchesList; + } +} diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java new file mode 100644 index 000000000..ae1603f65 --- /dev/null +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java @@ -0,0 +1,222 @@ +package org.obeonetwork.dsl.database.liquibasegen.ui; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.eclipse.jface.viewers.CheckStateChangedEvent; +import org.eclipse.jface.viewers.CheckboxTreeViewer; +import org.eclipse.jface.viewers.ICheckStateListener; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +/** + * Wizard principal + */ +public class GlobalChangelogSelectionWizard extends Wizard { + + private SelectionTreeWizardPage selectionPage; + private final List cachedSelection = new ArrayList<>(); + private List nodes; + private String rootSelectionDir; + + public GlobalChangelogSelectionWizard(List nodes, String rootSelectionDir) { + setWindowTitle("Selection of changelogs to merge"); + this.nodes = nodes; + this.rootSelectionDir = rootSelectionDir; + } + + @Override + public void addPages() { + selectionPage = new SelectionTreeWizardPage("treePage", nodes, cachedSelection); + addPage(selectionPage); + } + + @Override + public boolean performFinish() { + cachedSelection.clear(); + cachedSelection.addAll(selectionPage.getSelectedItems()); + return selectionPage.doMergingChangelog(rootSelectionDir); + } +} + +/** + * Page avec CheckboxTreeViewer + */ +class SelectionTreeWizardPage extends WizardPage { + + private final static String GLOBAL_CHANGELOG_FILE_NAME = "global_run.changelog.xml"; //$NON-NLS-1$ + + private CheckboxTreeViewer treeViewer; + private final List cache; + + private final Node[] roots; + + protected SelectionTreeWizardPage(String pageName, List nodes, List cache) { + super(pageName); + setTitle("Merge liquibase changelogs"); + setDescription("Choose which changelog to include in the merging process."); + roots = nodes.stream().map(Node::new).toArray(Node[]::new); + this.cache = cache; + } + + public boolean doMergingChangelog(String rootSelectionDir) { + try { + final DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + final Document mergedDoc = dBuilder.newDocument(); + + Element rootElement = null; + + for (String xmlFile : getSelectedItems().stream().filter(fileName -> fileName.endsWith(".changelog.xml")).toList()) { + if (rootElement == null) { + //we initialize root using an existing document to use all the attributes including xmlns + rootElement = (Element) mergedDoc.importNode(dBuilder.parse(rootSelectionDir + File.separator + xmlFile) + .getDocumentElement(),true); + }else { + // we add children in the other xml root + final NodeList nodes = dBuilder.parse(new File(rootSelectionDir + File.separator+xmlFile)).getDocumentElement().getChildNodes(); + for (int i = 0; i < nodes.getLength(); i++) { + org.w3c.dom.Node importedNode = mergedDoc.importNode(nodes.item(i), true); + rootElement.appendChild(importedNode); + } + } + } + + mergedDoc.appendChild(rootElement); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(mergedDoc); + StreamResult result = new StreamResult(new File(rootSelectionDir + File.separator + GLOBAL_CHANGELOG_FILE_NAME)); + transformer.transform(source, result); + return true; + } catch (ParserConfigurationException | SAXException | IOException | TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return false; + } + } + + @Override + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(new GridLayout(1, false)); + + treeViewer = new CheckboxTreeViewer(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); + treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + + treeViewer.setContentProvider(new ITreeContentProvider() { + @Override + public Object[] getElements(Object input) { + return roots; + } + + @Override + public Object[] getChildren(Object parent) { + return ((Node) parent).children; + } + + @Override + public Object getParent(Object element) { + return ((Node) element).parent; + } + + @Override + public boolean hasChildren(Object element) { + return ((Node) element).children.length > 0; + } + }); + + treeViewer.setLabelProvider(new LabelProvider() { + @Override + public String getText(Object element) { + return ((Node) element).name; + } + }); + + treeViewer.setInput(roots); + + restoreFromCache(); + + treeViewer.addCheckStateListener(new ICheckStateListener() { + @Override + public void checkStateChanged(CheckStateChangedEvent event) { + updateCache(); + setPageComplete(!cache.isEmpty()); + } + }); + + setControl(container); + setPageComplete(!cache.isEmpty()); + } + + private void updateCache() { + cache.clear(); + Object[] checked = treeViewer.getCheckedElements(); + for (Object o : checked) { + Node n = (Node) o; + if (n.children.length == 0) { // on ne garde que les feuilles + cache.add(n.name); + } + } + } + + private void restoreFromCache() { + List toCheck = new ArrayList<>(); + for (Node root : roots) { + for (Node child : root.children) { + if (cache.contains(child.name)) { + toCheck.add(child); + } + } + } + treeViewer.setCheckedElements(toCheck.toArray()); + } + + public List getSelectedItems() { + return Stream.of(treeViewer.getCheckedElements()).filter(Node.class::isInstance).map(Node.class::cast) + .map(Node::getName).toList(); + } +} + +/** + * Small tree object + */ +class Node { + final String name; + final Node[] children; + Node parent; + + Node(String name, Node... children) { + this.name = name; + this.children = children; + for (Node c : children) { + c.parent = this; + } + } + + String getName() { + return name; + } +} From 9ac9197cd3f6f06eec28e308a11e85d3624b52c9 Mon Sep 17 00:00:00 2001 From: Vincent BOUSSAUD Date: Wed, 18 Feb 2026 10:35:13 +0100 Subject: [PATCH 2/5] [SAFRAN-1211] Add visibility rule for new command --- .../plugin.xml | 22 ++++++++++++++ .../database/liquibasegen/ui/TestDirName.java | 29 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/TestDirName.java diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml index d03cdf26d..7375f2a66 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/plugin.xml @@ -81,6 +81,21 @@ commandId="org.obeonetwork.dsl.database.liquibasegen.createGlobal" label="Create global changelog" style="push"> + + + + + + + + @@ -94,6 +109,13 @@ properties="testFileExtension" type="java.lang.Object"> + + diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/TestDirName.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/TestDirName.java new file mode 100644 index 000000000..7be15563d --- /dev/null +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/TestDirName.java @@ -0,0 +1,29 @@ +/** + * + */ +package org.obeonetwork.dsl.database.liquibasegen.ui; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.core.internal.resources.Container; + +/** + * @author Vincent BOUSSAUD + * + */ +@SuppressWarnings("restriction") +public class TestDirName extends PropertyTester { + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + if (receiver instanceof Container) { + Container container = (Container) receiver; + if (container.getParent() == null || container.getProject() == null) { + return false; + }else { + return container.getName().equals(container.getProject().getName()+"-"+container.getParent().getName()); + } + } + return false; + } + +} From 450f5cd41bcb60433dae3287beea846a60d9c660 Mon Sep 17 00:00:00 2001 From: Vincent BOUSSAUD Date: Wed, 18 Feb 2026 11:18:56 +0100 Subject: [PATCH 3/5] [SAFRAN-1211] Add warning message while continuity is broken --- .../ui/GlobalChangelogSelectionWizard.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java index ae1603f65..e90346372 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Stream; @@ -16,6 +17,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.viewers.ICheckStateListener; @@ -163,6 +165,7 @@ public String getText(Object element) { @Override public void checkStateChanged(CheckStateChangedEvent event) { updateCache(); + checkContinuity(); setPageComplete(!cache.isEmpty()); } }); @@ -171,12 +174,27 @@ public void checkStateChanged(CheckStateChangedEvent event) { setPageComplete(!cache.isEmpty()); } + protected void checkContinuity() { + setMessage(null); + if (!cache.isEmpty()) { + final List rootsNames = Arrays.asList(roots).stream().map(Node::getName).toList(); + int startIndex = rootsNames.indexOf(cache.get(0)); + for (int i = 0; i < cache.size(); i++) { + if (!cache.get(i).equals(rootsNames.get(startIndex+i))) { + setMessage("Some changelogs are not selected between others. This may result in an inconsistent global changelog.", + IMessageProvider.WARNING); + } + } + } + + } + private void updateCache() { cache.clear(); Object[] checked = treeViewer.getCheckedElements(); for (Object o : checked) { Node n = (Node) o; - if (n.children.length == 0) { // on ne garde que les feuilles + if (n.children.length == 0) { // we keep only leaves cache.add(n.name); } } From a0dea6ad287db730b4c5b8f59a36e593340f3296 Mon Sep 17 00:00:00 2001 From: Vincent BOUSSAUD Date: Wed, 18 Feb 2026 15:41:20 +0100 Subject: [PATCH 4/5] [SAFRAN-1211] Add comments in GlobalChangelogSelectionWizard --- .../ui/GlobalChangelogSelectionWizard.java | 77 +++++++++++-------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java index e90346372..c6f712248 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java @@ -35,12 +35,18 @@ import org.xml.sax.SAXException; /** - * Wizard principal + * Wizard to select changelogs to merge */ public class GlobalChangelogSelectionWizard extends Wizard { private SelectionTreeWizardPage selectionPage; + /** + * Keep track of selection in the wizard + */ private final List cachedSelection = new ArrayList<>(); + /** + * All the available name of files that can be selected + */ private List nodes; private String rootSelectionDir; @@ -52,7 +58,7 @@ public GlobalChangelogSelectionWizard(List nodes, String rootSelectionDi @Override public void addPages() { - selectionPage = new SelectionTreeWizardPage("treePage", nodes, cachedSelection); + selectionPage = new SelectionTreeWizardPage("Selection page of changelogs", nodes, cachedSelection); addPage(selectionPage); } @@ -65,7 +71,7 @@ public boolean performFinish() { } /** - * Page avec CheckboxTreeViewer + * Page with CheckboxTreeViewer */ class SelectionTreeWizardPage extends WizardPage { @@ -74,6 +80,9 @@ class SelectionTreeWizardPage extends WizardPage { private CheckboxTreeViewer treeViewer; private final List cache; + /** + * All the available nodes that can be selected + */ private final Node[] roots; protected SelectionTreeWizardPage(String pageName, List nodes, List cache) { @@ -86,36 +95,38 @@ protected SelectionTreeWizardPage(String pageName, List nodes, List fileName.endsWith(".changelog.xml")).toList()) { - if (rootElement == null) { - //we initialize root using an existing document to use all the attributes including xmlns - rootElement = (Element) mergedDoc.importNode(dBuilder.parse(rootSelectionDir + File.separator + xmlFile) - .getDocumentElement(),true); - }else { - // we add children in the other xml root - final NodeList nodes = dBuilder.parse(new File(rootSelectionDir + File.separator+xmlFile)).getDocumentElement().getChildNodes(); - for (int i = 0; i < nodes.getLength(); i++) { - org.w3c.dom.Node importedNode = mergedDoc.importNode(nodes.item(i), true); - rootElement.appendChild(importedNode); + final DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + final Document mergedDoc = dBuilder.newDocument(); + + Element rootElement = null; + + for (String xmlFile : getSelectedItems().stream().filter(fileName -> fileName.endsWith(".changelog.xml")) + .toList()) { + if (rootElement == null) { + // we initialize root using an existing document to use all the attributes including xmlns + rootElement = (Element) mergedDoc.importNode( + dBuilder.parse(rootSelectionDir + File.separator + xmlFile).getDocumentElement(), true); + } else { + // we add children in the other xml root + final NodeList nodes = dBuilder.parse(new File(rootSelectionDir + File.separator + xmlFile)) + .getDocumentElement().getChildNodes(); + for (int i = 0; i < nodes.getLength(); i++) { + org.w3c.dom.Node importedNode = mergedDoc.importNode(nodes.item(i), true); + rootElement.appendChild(importedNode); + } } } - } - - mergedDoc.appendChild(rootElement); - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - DOMSource source = new DOMSource(mergedDoc); - StreamResult result = new StreamResult(new File(rootSelectionDir + File.separator + GLOBAL_CHANGELOG_FILE_NAME)); - transformer.transform(source, result); - return true; + + mergedDoc.appendChild(rootElement); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(mergedDoc); + StreamResult result = new StreamResult( + new File(rootSelectionDir + File.separator + GLOBAL_CHANGELOG_FILE_NAME)); + transformer.transform(source, result); + return true; } catch (ParserConfigurationException | SAXException | IOException | TransformerException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + setErrorMessage("An error occur while loading the contents of changelogs files. Check the state of the files before retrying."); return false; } } @@ -174,6 +185,9 @@ public void checkStateChanged(CheckStateChangedEvent event) { setPageComplete(!cache.isEmpty()); } + /** + * Check if the selection + */ protected void checkContinuity() { setMessage(null); if (!cache.isEmpty()) { @@ -212,6 +226,9 @@ private void restoreFromCache() { treeViewer.setCheckedElements(toCheck.toArray()); } + /** + * @return selected items in the tree viewer + */ public List getSelectedItems() { return Stream.of(treeViewer.getCheckedElements()).filter(Node.class::isInstance).map(Node.class::cast) .map(Node::getName).toList(); From a61ac980532d5853338ad7f811d45f6cf3a044d2 Mon Sep 17 00:00:00 2001 From: Vincent BOUSSAUD Date: Thu, 19 Feb 2026 13:22:25 +0100 Subject: [PATCH 5/5] [SAFRAN-1211] Some little fixes --- .../handlers/GlobalChangelogHandler.java | 13 ++++++------- .../ui/GlobalChangelogSelectionWizard.java | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java index 6fc977500..b28a5ba66 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/handlers/GlobalChangelogHandler.java @@ -49,11 +49,9 @@ public Object execute(ExecutionEvent event) throws ExecutionException { } try { - if (openChangelogSelectionWizard(projectDBDir)) { - - } + openChangelogSelectionWizard(projectDBDir); }catch (IOException e) { - // TODO: handle exception + throw new ExecutionException(e.getMessage(), e); } return null; @@ -63,7 +61,7 @@ private boolean openChangelogSelectionWizard(Container projectDBDir) throws IOEx // get list of files SearchFileByWildcard sfbw = new SearchFileByWildcard(); List changelogs = sfbw.searchWithWc(Paths.get(projectDBDir.getLocation().toOSString()), - "run.changelog.xml"); + "\\run.changelog.xml"); WizardDialog dialog = new WizardDialog(shell, new GlobalChangelogSelectionWizard(changelogs, projectDBDir.getLocation().toOSString())); dialog.create(); dialog.open(); @@ -80,8 +78,9 @@ List searchWithWc(Path rootDir, String pattern) throws IOException { FileVisitor matcherVisitor = new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attribs) throws IOException { - if (Pattern.matches(pattern, file.getFileName().toString())) { - matchesList.add(rootDir.relativize(file).toString()); + final String fileNameAndDir = rootDir.relativize(file).toString(); + if (fileNameAndDir.endsWith(pattern)) { + matchesList.add(fileNameAndDir); } return FileVisitResult.CONTINUE; } diff --git a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java index c6f712248..fa241e965 100644 --- a/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java +++ b/reversers/database-synchroniser/plugins/org.obeonetwork.dsl.database.liquibasegen/src/org/obeonetwork/dsl/database/liquibasegen/ui/GlobalChangelogSelectionWizard.java @@ -11,7 +11,6 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource;