Merge branch 'features/pca_jaxb_datasetrefs_JAL-3171_JAL-3063_JAL-1767' into develop
[jalview.git] / src / jalview / schemes / ColourSchemeLoader.java
index 8660f3e..481f809 100644 (file)
@@ -1,13 +1,36 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.schemes;
 
-import jalview.binding.JalviewUserColours;
+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
 {
@@ -30,14 +53,16 @@ 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,
        * B, Z, X and Gap
@@ -46,12 +71,12 @@ public class ColourSchemeLoader
       newColours = new Color[24];
       Color[] lowerCase = new Color[23];
       boolean caseSensitive = false;
-  
+
       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();
@@ -64,9 +89,9 @@ public class ColourSchemeLoader
         {
           continue;
         }
-  
-        Color color = new Color(Integer.parseInt(jucs.getColour(i)
-                .getRGB(), 16));
+
+        Color color = new Color(
+                Integer.parseInt(jucs.getColour().get(i).getRGB(), 16));
         if (name.toLowerCase().equals(name))
         {
           caseSensitive = true;
@@ -77,7 +102,7 @@ public class ColourSchemeLoader
           newColours[index] = color;
         }
       }
-  
+
       /*
        * instantiate the colour scheme
        */
@@ -92,19 +117,19 @@ public class ColourSchemeLoader
       // Could be old Jalview Archive format
       try
       {
-        InputStreamReader in = new InputStreamReader(new FileInputStream(
-                file), "UTF-8");
-  
+        InputStreamReader in = new InputStreamReader(
+                new FileInputStream(file), "UTF-8");
+
         jalview.binding.JalviewUserColours jucs = new jalview.binding.JalviewUserColours();
-  
-        jucs = JalviewUserColours.unmarshal(in);
-  
+
+        jucs = jalview.binding.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));
+          newColours[i] = new Color(
+                  Integer.parseInt(jucs.getColour(i).getRGB(), 16));
         }
         ucs = new UserColourScheme(newColours);
         ucs.setName(jucs.getSchemeName());
@@ -112,13 +137,13 @@ public class ColourSchemeLoader
       {
         ex2.printStackTrace();
       }
-  
+
       if (newColours == null)
       {
         System.out.println("Error loading User ColourFile\n" + ex);
       }
     }
-  
+
     return ucs;
   }