commit 80e535dd68a67830476ccf055b97baeaf08bbe48
Author: b.stoever <stoever@bioinfweb.info>
Date:   Sat Nov 19 13:29:13 2016 +0100

    Additional strings externalized in molecular plugin.
    Wizard for exporting single read alignments now warns and prompts if files are overwritten.
    Bug fix: Changes in the format selection in the wizard now trigger validation again.
    ExportSingleReadAlignmentWizardModel uses format list instead of map again.

diff --git a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties
index b1559046c..607567da1 100644
--- a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties
+++ b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages.properties
@@ -1,3 +1,7 @@
+exportSequenceToFileHandlerIOErrorMessage=An error occurred when trying to export a consensus sequence alignment to the file "%s".
+exportSequenceToFileHandlerIOErrorTitle=I/O error
+exportSequenceToFileHandlerOverwriteTitle=Overwrite file
+exportSequenceToFileHandlerOverwriteText=The file \"%s\" already exists.\n\nDo you want to overwrite it?
 wizardExportAlignmentAppendExtensionButton=Append default extension
 wizardExportAlignmentBrowseButton=Browse...
 wizardExportAlignmentDataLabel=Select the data to export:
@@ -14,5 +18,11 @@ wizardExportAlignmentFileLabel=Alignment file:
 wizardExportAlignmentTitle=Sequence export
 wizardExportAlignmentWarningFileNameStartsDot=File starting with '.' are not supported on all operating systems.
 wizardExportAlignmentwarningMissingExtension=The file name does have a valid extension for the selected format.
-exportSequenceToFileHandlerIOErrorMessage=An error occurred when trying to export a consensus sequence alignment to the file "%s".
-exportSequenceToFileHandlerIOErrorTitle=I/O error
+wizardExportAlignmentWarningFileExists=The file already exists and will be overwritten.
+wizardExportAlignmentOptionsDescription=Specify additional export parameters.
+wizardExportAlignmentOptionsTitle=Export options
+wizardExportAlignmentExportedSeqHeading=Specify the sequences to be exported:
+wizardExportAlignmentAdditionalOptionsHeading=Specify additional export options:
+wizardExportAlignmentElongateSeqHeading=Elongate sequences to have equal length with:
+wizardExportAlignmentElongateSeqMissingData=Missing data ('?')"
+wizardExportAlignmentElongateSeqGap=Gap ('-')
diff --git a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties
index c865d5f2b..5eab68603 100644
--- a/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties
+++ b/eu.etaxonomy.taxeditor.molecular/OSGI-INF/l10n/messages_de.properties
@@ -1,3 +1,7 @@
+exportSequenceToFileHandlerIOErrorMessage=Beim Schreiben der Datei "%s" ist ein Fehler aufgetreten.
+exportSequenceToFileHandlerIOErrorTitle=E/A Fehler
+exportSequenceToFileHandlerOverwriteTitle=Datei �berschreiben
+exportSequenceToFileHandlerOverwriteText=Die Datei \"%s\" existiert bereits.\n\nSoll sie �berschrieben werden?
 wizardExportAlignmentAppendExtensionButton=Standarddateiendung anh�ngen
 wizardExportAlignmentBrowseButton=Durchsuchen...
 wizardExportAlignmentDataLabel=Zu exportierende Daten:
@@ -14,5 +18,11 @@ wizardExportAlignmentFileLabel=Alignment Datei:
 wizardExportAlignmentTitle=Sequenzexport
 wizardExportAlignmentWarningFileNameStartsDot=Dateinamen, die mit einem '.' beginnen, werden nicht auf allen Betriebssystemen unterst�tzt.
 wizardExportAlignmentwarningMissingExtension=Der momentane Dateiname hat keine zum aktuellen Format passende Endung.
-exportSequenceToFileHandlerIOErrorMessage=Beim Schreiben der Datei "%s" ist ein Fehler aufgetreten.
-exportSequenceToFileHandlerIOErrorTitle=E/A Fehler
+wizardExportAlignmentWarningFileExists=The existiert bereits und w�rde �berschrieben.
+wizardExportAlignmentOptionsDescription=Geben Sie weitere Exportparameter an!
+wizardExportAlignmentOptionsTitle=Exportoptionen
+wizardExportAlignmentExportedSeqHeading=Zu exportierende Sequenzen:
+wizardExportAlignmentAdditionalOptionsHeading=Erweiterte Exportoptionen:
+wizardExportAlignmentElongateSeqHeading=Sequenzen auf einheitliche L�nge bringen mit:
+wizardExportAlignmentElongateSeqMissingData=Fehlende Daten ('?')"
+wizardExportAlignmentElongateSeqGap=L�cke ('-')
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java
index a10c491a2..390748340 100644
--- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java
+++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/Messages.java
@@ -14,15 +14,20 @@ import org.eclipse.osgi.util.NLS;
 
 
 /**
- * Messages and texts for the molecular plugin.
+ * Provides messages and texts for classes of the molecular plugin.
  *
  * @author Ben Stöver
  * @date 17.11.2016
  */
 public class Messages extends NLS {
     private static final String BUNDLE_NAME = "OSGI-INF/l10n/messages"; //$NON-NLS-1$
+
+
     public static String exportSequenceToFileHandlerIOErrorMessage;
     public static String exportSequenceToFileHandlerIOErrorTitle;
+    public static String exportSequenceToFileHandlerOverwriteTitle;
+    public static String exportSequenceToFileHandlerOverwriteText;
+
     public static String wizardExportAlignmentAppendExtensionButton;
     public static String wizardExportAlignmentBrowseButton;
     public static String wizardExportAlignmentDataLabel;
@@ -36,9 +41,17 @@ public class Messages extends NLS {
     public static String wizardExportAlignmentExportSingleReads;
     public static String wizardExportAlignmentFileDialogTitle;
     public static String wizardExportAlignmentFileLabel;
+    public static String wizardExportAlignmentOptionsDescription;
+    public static String wizardExportAlignmentOptionsTitle;
     public static String wizardExportAlignmentTitle;
     public static String wizardExportAlignmentWarningFileNameStartsDot;
     public static String wizardExportAlignmentwarningMissingExtension;
+    public static String wizardExportAlignmentWarningFileExists;
+    public static String wizardExportAlignmentExportedSeqHeading;
+    public static String wizardExportAlignmentAdditionalOptionsHeading;
+    public static String wizardExportAlignmentElongateSeqHeading;
+    public static String wizardExportAlignmentElongateSeqMissingData;
+    public static String wizardExportAlignmentElongateSeqGap;
 
 
     static {
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java
index b7e633de3..928cf8e43 100644
--- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java
+++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/handler/ExportSequenceToFileHandler.java
@@ -84,15 +84,20 @@ public class ExportSequenceToFileHandler extends AbstractHandler {
 
                 // Write document:
                 File file = new File(wizard.getModel().getFileName());
-                try {
-                    writer.writeDocument(document, file, parameters);
-                }
-                catch (IOException e) {
-                    e.printStackTrace();
-                    MessagingUtils.errorDialog(Messages.exportSequenceToFileHandlerIOErrorTitle, this,
-                            String.format(Messages.exportSequenceToFileHandlerIOErrorMessage,
-                                    file.getAbsolutePath()), TaxeditorMolecularPlugin.PLUGIN_ID, e, false);
+                if (!file.exists() || MessagingUtils.confirmDialog(Messages.exportSequenceToFileHandlerOverwriteTitle, String.format(
+                        Messages.exportSequenceToFileHandlerOverwriteText, file.getAbsolutePath()))) {
+
+                    try {
+                        writer.writeDocument(document, file, parameters);
+                    }
+                    catch (IOException e) {
+                        e.printStackTrace();
+                        MessagingUtils.errorDialog(Messages.exportSequenceToFileHandlerIOErrorTitle, this,
+                                String.format(Messages.exportSequenceToFileHandlerIOErrorMessage,
+                                        file.getAbsolutePath()), TaxeditorMolecularPlugin.PLUGIN_ID, e, false);
+                    }
                 }
+
             }
         }
         return null;
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java
index 3385676d3..ce55ed271 100644
--- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java
+++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentFileFormatPage.java
@@ -125,7 +125,7 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
             }
         });
         FormData fd_btnBrowse = new FormData();
-        fd_btnBrowse.bottom = new FormAttachment(100, -150);
+        fd_btnBrowse.bottom = new FormAttachment(fileTextField, 43, SWT.BOTTOM);
         fd_btnBrowse.top = new FormAttachment(fileTextField, 13);
         fd_btnBrowse.left = new FormAttachment(100, -128);
         fd_btnBrowse.right = new FormAttachment(100, -10);
@@ -134,7 +134,7 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
 
         formatComboBox = new Combo(container, SWT.READ_ONLY);
         fd_lblSelectTheExport.top = new FormAttachment(formatComboBox, 23);
-        for (JPhyloIOFormatInfo formatInfo : ExportSingleReadAlignmentWizardModel.FORMAT_NAMES_TO_INFO_MAP.values()) {
+        for (JPhyloIOFormatInfo formatInfo : ExportSingleReadAlignmentWizardModel.FORMATS) {
             formatComboBox.add(formatInfo.getFormatName());
         }
         FormData fd_formatComboBox = new FormData();
@@ -142,7 +142,7 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
         fd_formatComboBox.left = new FormAttachment(0, 10);
         fd_formatComboBox.right = new FormAttachment(100, -10);
         formatComboBox.setLayoutData(fd_formatComboBox);
-        final ISWTObservableValue formatObservable = SWTObservables.observeSelection(formatComboBox);  // ViewerProperties.singleSelection().observe(formatComboBox); falls ein ComboViewer verwendet wird. (Dann kann direkt FormatInfo verwendet werden.)
+        final ISWTObservableValue formatObservable = SWTObservables.observeSingleSelectionIndex(formatComboBox);  // ViewerProperties.singleSelection().observe(formatComboBox); falls ein ComboViewer verwendet wird. (Dann kann direkt FormatInfo verwendet werden.)
         dbc.bindValue(formatObservable, getWizard().getModel().getFormatInfoObservable());
         formatComboBox.select(0);  // Must happen after the component has been bound to the model.
 
@@ -155,10 +155,10 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
             }
         });
         FormData fd_btnNewButton = new FormData();
-        fd_btnNewButton.bottom = new FormAttachment(100, -150);
-        fd_btnNewButton.top = new FormAttachment(fileTextField, 13);
-        fd_btnNewButton.left = new FormAttachment(btnBrowse, -276, SWT.LEFT);
+        fd_btnNewButton.left = new FormAttachment(btnBrowse, -264, SWT.LEFT);
+        fd_btnNewButton.bottom = new FormAttachment(fileTextField, 43, SWT.BOTTOM);
         fd_btnNewButton.right = new FormAttachment(btnBrowse, -6);
+        fd_btnNewButton.top = new FormAttachment(fileTextField, 13);
         appendExtensionButton.setLayoutData(fd_btnNewButton);
         appendExtensionButton.setText(Messages.wizardExportAlignmentAppendExtensionButton);
 
@@ -166,15 +166,21 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
             @Override
             protected IStatus validate() {
                 String fileName = (String)fileNameObservable.getValue();
+                Integer index = (Integer)formatObservable.getValue();  // If formatObservable.getValue() is not called from within this method, it is not called on modifications of the according combo anymore. (Would be interesting to know why.)
                 if ((fileName == null) || fileName.isEmpty()) {
                     return ValidationStatus.error(Messages.wizardExportAlignmentErrorMissingFileName);
                 }
-                else if (!getSelectedFormat().createFileFilter(TestStrategy.EXTENSION).accept(new File(fileName))) {
+                else if (!ExportSingleReadAlignmentWizardModel.FORMATS.get(index).createFileFilter(TestStrategy.EXTENSION).accept(
+                        new File(fileName))) {
+
                     return ValidationStatus.warning(Messages.wizardExportAlignmentwarningMissingExtension);
                 }
                 else if (fileName.charAt(0) == ExtensionFileFilter.EXTENSION_SEPARATOR) {
                     return ValidationStatus.warning(Messages.wizardExportAlignmentWarningFileNameStartsDot);
                 }
+                else if (new File(fileName).exists()) {
+                    return ValidationStatus.warning(Messages.wizardExportAlignmentWarningFileExists);
+                }
                 else {
                     return ValidationStatus.ok();
                 }
@@ -184,6 +190,6 @@ public class ExportSingleReadAlignmentFileFormatPage extends AbstractExportSingl
 
 
     private JPhyloIOFormatInfo getSelectedFormat() {
-        return ExportSingleReadAlignmentWizardModel.FORMAT_NAMES_TO_INFO_MAP.get(formatComboBox.getText());
+        return ExportSingleReadAlignmentWizardModel.FORMATS.get(formatComboBox.getSelectionIndex());
     }
 }
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java
index 806523951..704ac9ce7 100644
--- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java
+++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentOptionsPage.java
@@ -52,8 +52,8 @@ public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleRe
      */
     public ExportSingleReadAlignmentOptionsPage() {
         super("ExportSingleReadAlignmentOptions");  //TODO Which pageName should be used here? Any conventions? //$NON-NLS-1$
-        setTitle("Export options");
-        setDescription("Specify additional export parameters.");
+        setTitle(Messages.wizardExportAlignmentOptionsTitle);
+        setDescription(Messages.wizardExportAlignmentOptionsDescription);
     }
 
 
@@ -110,21 +110,21 @@ public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleRe
         consensusSequenceLabelTextField.setLayoutData(fd_consensusSequenceNameTextField);
         final ISWTObservableValue consensusSequenceLabelObservable = SWTObservables.observeText(consensusSequenceLabelTextField, SWT.Modify);
         dbc.bindValue(consensusSequenceLabelObservable, getWizard().getModel().getConsensusSequenceLabelObservable());
-        consensusSequenceLabelTextField.setText("Consensus");
+        consensusSequenceLabelTextField.setText("Consensus"); //$NON-NLS-1$
 
         Label lblSpecifyTheSequences = new Label(container, SWT.NONE);
         FormData fd_lblSpecifyTheSequences = new FormData();
         fd_lblSpecifyTheSequences.top = new FormAttachment(0, 10);
         fd_lblSpecifyTheSequences.left = new FormAttachment(0, 10);
         lblSpecifyTheSequences.setLayoutData(fd_lblSpecifyTheSequences);
-        lblSpecifyTheSequences.setText("Specify the sequences to be exported:");
+        lblSpecifyTheSequences.setText(Messages.wizardExportAlignmentExportedSeqHeading);
 
         Label lblSpecifyAdditionalExport = new Label(container, SWT.NONE);
         FormData fd_lblSpecifyAdditionalExport = new FormData();
         fd_lblSpecifyAdditionalExport.top = new FormAttachment(consensusSequenceLabelTextField, 24);
         fd_lblSpecifyAdditionalExport.left = new FormAttachment(exportSingleReadsCB, 0, SWT.LEFT);
         lblSpecifyAdditionalExport.setLayoutData(fd_lblSpecifyAdditionalExport);
-        lblSpecifyAdditionalExport.setText("Specify additional export options:");
+        lblSpecifyAdditionalExport.setText(Messages.wizardExportAlignmentAdditionalOptionsHeading);
 
         elongateSequecesCheckBox = new Button(container, SWT.CHECK);
         elongateSequecesCheckBox.addSelectionListener(new SelectionAdapter() {
@@ -138,7 +138,7 @@ public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleRe
         fd_btnElongateSequecesTo.left = new FormAttachment(exportSingleReadsCB, 0, SWT.LEFT);
         fd_btnElongateSequecesTo.top = new FormAttachment(lblSpecifyAdditionalExport, 12);
         elongateSequecesCheckBox.setLayoutData(fd_btnElongateSequecesTo);
-        elongateSequecesCheckBox.setText("Elongate sequences to have equal length with:");
+        elongateSequecesCheckBox.setText(Messages.wizardExportAlignmentElongateSeqHeading);
         dbc.bindValue(SWTObservables.observeSelection(elongateSequecesCheckBox), getWizard().getModel().getElongateSequencesObservable());
 
         missingDataRadioButton = new Button(container, SWT.RADIO);
@@ -146,7 +146,7 @@ public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleRe
         fd_missingDataRadioButton.top = new FormAttachment(elongateSequecesCheckBox, 6);
         missingDataRadioButton.setLayoutData(fd_missingDataRadioButton);
         missingDataRadioButton.setEnabled(false);
-        missingDataRadioButton.setText("Missing data ('?')");
+        missingDataRadioButton.setText(Messages.wizardExportAlignmentElongateSeqMissingData);
 
         gapRadioButton = new Button(container, SWT.RADIO);
         fd_missingDataRadioButton.left = new FormAttachment(gapRadioButton, 80);
@@ -156,7 +156,7 @@ public class ExportSingleReadAlignmentOptionsPage extends AbstractExportSingleRe
         gapRadioButton.setLayoutData(fd_gapRadioButton);
         gapRadioButton.setEnabled(false);
         gapRadioButton.setSelection(true);
-        gapRadioButton.setText("Gap ('-')");
+        gapRadioButton.setText(Messages.wizardExportAlignmentElongateSeqGap);
         dbc.bindValue(SWTObservables.observeSelection(gapRadioButton), getWizard().getModel().getUseGapTokenObservable());
 
         setPageComplete(true);  // Allow to finish the wizard in the previous page.
diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java
index 45c644c99..21f5b48bd 100644
--- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java
+++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/io/wizard/ExportSingleReadAlignmentWizardModel.java
@@ -14,9 +14,9 @@ import info.bioinfweb.jphyloio.events.type.EventContentType;
 import info.bioinfweb.jphyloio.factory.JPhyloIOReaderWriterFactory;
 import info.bioinfweb.jphyloio.formatinfo.JPhyloIOFormatInfo;
 
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.List;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.observable.value.WritableValue;
@@ -31,10 +31,10 @@ import org.eclipse.core.databinding.observable.value.WritableValue;
  */
 public class ExportSingleReadAlignmentWizardModel {
     protected static final JPhyloIOReaderWriterFactory READER_WRITER_FACTORY = new JPhyloIOReaderWriterFactory();
-    protected static final Map<String, JPhyloIOFormatInfo> FORMAT_NAMES_TO_INFO_MAP = createFormatInfoList();
+    protected static final List<JPhyloIOFormatInfo> FORMATS = createFormatInfoList();
 
 
-    private IObservableValue formatInfo = new WritableValue(null, String.class);
+    private IObservableValue formatInfo = new WritableValue(0, Integer.class);
     private IObservableValue fileName = new WritableValue(null, String.class);
     private IObservableValue exportSingleReads = new WritableValue(true, Boolean.class);
     private IObservableValue exportConsensusSequence = new WritableValue(true, Boolean.class);
@@ -43,15 +43,15 @@ public class ExportSingleReadAlignmentWizardModel {
     private IObservableValue useGapToken = new WritableValue(true, Boolean.class);
 
 
-    private static Map<String, JPhyloIOFormatInfo> createFormatInfoList() {
-        Map<String, JPhyloIOFormatInfo> result = new TreeMap<String, JPhyloIOFormatInfo>();
+    private static List<JPhyloIOFormatInfo> createFormatInfoList() {
+        List<JPhyloIOFormatInfo> result = new ArrayList<JPhyloIOFormatInfo>();
         for (String formatID : READER_WRITER_FACTORY.getFormatIDsSet()) {
             JPhyloIOFormatInfo info = READER_WRITER_FACTORY.getFormatInfo(formatID);
             if (info.isElementModeled(EventContentType.ALIGNMENT, false)) {  // Check if the current format allows to write alignments.
-                result.put(info.getFormatName(), info);
+                result.add(info);
             }
         }
-        return Collections.unmodifiableMap(result);
+        return Collections.unmodifiableList(result);
     }
 
 
@@ -66,7 +66,7 @@ public class ExportSingleReadAlignmentWizardModel {
      * @return the format info
      */
     public JPhyloIOFormatInfo getFormatInfo() {
-        return FORMAT_NAMES_TO_INFO_MAP.get(formatInfo.getValue());
+        return FORMATS.get((Integer)formatInfo.getValue());
     }
 
 
@@ -133,6 +133,4 @@ public class ExportSingleReadAlignmentWizardModel {
     protected IObservableValue getUseGapTokenObservable() {
         return useGapToken;
     }
-
-
 }
