JAL-3691 automatic insertion of Locale.ROOT to toUpperCase() and toLowerCase() and...
[jalview.git] / src / jalview / schemes / ColourSchemeLoader.java
index 9f08688..061ccd4 100644 (file)
  */
 package jalview.schemes;
 
-import jalview.binding.JalviewUserColours;
+import java.util.Locale;
+
+import jalview.xml.binding.jalview.JalviewUserColours;
 
 import java.awt.Color;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 
-import org.exolab.castor.xml.Unmarshaller;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
 
 public class ColourSchemeLoader
 {
@@ -51,12 +56,14 @@ public class ColourSchemeLoader
       InputStreamReader in = new InputStreamReader(
               new FileInputStream(file), "UTF-8");
 
-      jalview.schemabinding.version2.JalviewUserColours jucs = new jalview.schemabinding.version2.JalviewUserColours();
-
-      org.exolab.castor.xml.Unmarshaller unmar = new org.exolab.castor.xml.Unmarshaller(
-              jucs);
-      jucs = (jalview.schemabinding.version2.JalviewUserColours) unmar
-              .unmarshal(in);
+      JAXBContext jc = JAXBContext
+              .newInstance("jalview.xml.binding.jalview");
+      javax.xml.bind.Unmarshaller um = jc.createUnmarshaller();
+      XMLStreamReader streamReader = XMLInputFactory.newInstance()
+              .createXMLStreamReader(in);
+      JAXBElement<JalviewUserColours> jbe = um.unmarshal(streamReader,
+              JalviewUserColours.class);
+      JalviewUserColours jucs = jbe.getValue();
 
       /*
        * non-case-sensitive colours are for 20 amino acid codes,
@@ -69,9 +76,9 @@ public class ColourSchemeLoader
 
       String name;
       int index;
-      for (int i = 0; i < jucs.getColourCount(); i++)
+      for (int i = 0; i < jucs.getColour().size(); i++)
       {
-        name = jucs.getColour(i).getName();
+        name = jucs.getColour().get(i).getName();
         if (ResidueProperties.aa3Hash.containsKey(name))
         {
           index = ResidueProperties.aa3Hash.get(name).intValue();
@@ -86,8 +93,8 @@ public class ColourSchemeLoader
         }
 
         Color color = new Color(
-                Integer.parseInt(jucs.getColour(i).getRGB(), 16));
-        if (name.toLowerCase().equals(name))
+                Integer.parseInt(jucs.getColour().get(i).getRGB(), 16));
+        if (name.toLowerCase(Locale.ROOT).equals(name))
         {
           caseSensitive = true;
           lowerCase[index] = color;
@@ -109,34 +116,9 @@ public class ColourSchemeLoader
       }
     } catch (Exception ex)
     {
-      // Could be old Jalview Archive format
-      try
-      {
-        InputStreamReader in = new InputStreamReader(
-                new FileInputStream(file), "UTF-8");
-
-        jalview.binding.JalviewUserColours jucs = new jalview.binding.JalviewUserColours();
-
-        jucs = JalviewUserColours.unmarshal(in);
-
-        newColours = new Color[jucs.getColourCount()];
-
-        for (int i = 0; i < 24; i++)
-        {
-          newColours[i] = new Color(
-                  Integer.parseInt(jucs.getColour(i).getRGB(), 16));
-        }
-        ucs = new UserColourScheme(newColours);
-        ucs.setName(jucs.getSchemeName());
-      } catch (Exception ex2)
-      {
-        ex2.printStackTrace();
-      }
-
-      if (newColours == null)
-      {
-        System.out.println("Error loading User ColourFile\n" + ex);
-      }
+      // used to try to parse a V1 Castor generated colours file
+      System.err.println("Failed to read colour scheme from " + filePath
+              + " : " + ex.toString());
     }
 
     return ucs;