Merge branch 'release/5.42.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / ListComponent.java
old mode 100755 (executable)
new mode 100644 (file)
index 9f07fa4..196ba6f
@@ -8,7 +8,6 @@
 */
 package eu.etaxonomy.taxeditor.preference;
 
-
 import java.awt.Toolkit;
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -16,10 +15,11 @@ import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Iterator;
 
 import javax.swing.event.DocumentEvent;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.eclipse.equinox.internal.p2.ui.misc.StringMatcher;
 import org.eclipse.jface.fieldassist.ComboContentAdapter;
 import org.eclipse.jface.fieldassist.ContentProposalAdapter;
@@ -41,20 +41,18 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.List;
 import org.eclipse.swt.widgets.Text;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
-
 /**
  * @author k.luther
  * @date 20.04.2017
- *
  */
 public class ListComponent implements ModifyListener
                       {
@@ -71,19 +69,16 @@ public class ListComponent implements ModifyListener
     CdmPreferencePage preferencePage;
     CdmPreference providerListPreference;
     String providerList;
-    String[] items;
-
+    java.util.List<String> items;
 
     public CdmPreference getProviderListPreference() {
         return providerListPreference;
     }
 
-
     public void setProviderListPreference(CdmPreference providerListPreference) {
         this.providerListPreference = providerListPreference;
     }
 
-
     public ListComponent(Composite parent, int style, boolean isAdmin, CdmPreferencePage parentPage) {
         this.isAdmin= isAdmin;
         this.preferencePage = parentPage;
@@ -123,7 +118,6 @@ public class ListComponent implements ModifyListener
             for (String providerString : providerArray){
                 if (!StringUtils.isBlank(providerString)){
                     list.add(providerString);
-
                 }
             }
         }
@@ -138,12 +132,10 @@ public class ListComponent implements ModifyListener
         dataList.horizontalAlignment = GridData.FILL;
         dataList.horizontalSpan = 3;
 
-
 //        dataList.grabExcessVerticalSpace = true;
 
         list.setLayoutData(dataList);
 
-
         providerURI = new Combo(parent, SWT.BORDER);
 
         URL url;
@@ -172,31 +164,18 @@ public class ListComponent implements ModifyListener
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
-
-        JSONArray jsonResponseArray;
+        java.util.List<BiocaseProvideConfig> listProvider = null;
+        ObjectMapper mapper = new ObjectMapper();
         try {
-            jsonResponseArray =new JSONArray(response);
-
-            int i = 0;
-            String service_url = null;
-            JSONArray dataSets = null;
-            items = new String[jsonResponseArray.length()];
-            while (i<jsonResponseArray.length()){
-                JSONObject object = jsonResponseArray.getJSONObject(i);
-                service_url = (String) object.get("service_url");
-                dataSets = (JSONArray) object.get("datasets");
-                if (service_url != null){
-                    providerURI.add(service_url);
-                    items[i] = service_url;
-                }
-                i++;
-            }
-
-        } catch (JSONException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            listProvider = mapper.readValue(response, new TypeReference<java.util.List<BiocaseProvideConfig>>(){});
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        items = new ArrayList<>();
+        for (BiocaseProvideConfig conf: listProvider) {
+            items.add(conf.getService_url());
+            providerURI.add(conf.getService_url());
         }
-
 
         GridData dataProviderUri = new GridData();
         dataProviderUri.horizontalAlignment = GridData.FILL;
@@ -228,14 +207,10 @@ public class ListComponent implements ModifyListener
 //        // additionally, configure the comboViewer arbitrary
 //        AutoCompleteField field = new AutoCompleteField(comboViewer.getCombo(), new ComboContentAdapter(), proposals);
 
-
-
-
         //providerURI.addModifyListener(this);
         labelException = new Label(parent, SWT.NULL);
         labelException.setText("");
 
-
         labelException.setLayoutData(dataProviderUri);
 
         Button addButton = new Button(parent, SWT.NULL);
@@ -248,23 +223,22 @@ public class ListComponent implements ModifyListener
         removeButton.addMouseListener(new RemoveListener());
     }
 
-
-    /**
-     * @return
-     */
     IContentProposalProvider getProposalProvider() {
         return new IContentProposalProvider() {
             @Override
             public IContentProposal[] getProposals(String contents, int position) {
                 //String[] items = getStringItems();
-                if (contents.length() == 0 || items.length == 0) {
+                if (contents.length() == 0 || items.isEmpty()) {
                     return new IContentProposal[0];
                 }
                 StringMatcher matcher = new StringMatcher("*" + contents + "*", true, false); //$NON-NLS-1$ //$NON-NLS-2$
-                ArrayList<String> matches = new ArrayList<String>();
-                for (int i = 0; i < items.length; i++) {
-                    if (matcher.match(items[i])) {
-                        matches.add(items[i]);
+                java.util.List<String> matches = new ArrayList<>();
+                Iterator<String> itemsIterator = items.iterator();
+                String nextItem = null;
+                while (itemsIterator.hasNext()) {
+                    nextItem = itemsIterator.next();
+                    if (matcher.match(nextItem) ) {
+                        matches.add(nextItem);
                     }
                 }