X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FColourSchemeLoader.java;h=f80669dc74b9ec294fd62ad794c4cab9a6efcc49;hb=58735c979dbb573eb12d57e33ef7d6e3f3a82c8e;hp=8660f3e8d540b93ea79c4ce98ad7bcffc3ea165b;hpb=136c0793b90b72b928c4d77dc109dd5c644e00d3;p=jalview.git diff --git a/src/jalview/schemes/ColourSchemeLoader.java b/src/jalview/schemes/ColourSchemeLoader.java index 8660f3e..f80669d 100644 --- a/src/jalview/schemes/ColourSchemeLoader.java +++ b/src/jalview/schemes/ColourSchemeLoader.java @@ -1,13 +1,38 @@ +/* + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' 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 { @@ -30,14 +55,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 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 +73,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,10 +91,10 @@ public class ColourSchemeLoader { continue; } - - Color color = new Color(Integer.parseInt(jucs.getColour(i) - .getRGB(), 16)); - if (name.toLowerCase().equals(name)) + + Color color = new Color( + Integer.parseInt(jucs.getColour().get(i).getRGB(), 16)); + if (name.toLowerCase(Locale.ROOT).equals(name)) { caseSensitive = true; lowerCase[index] = color; @@ -77,7 +104,7 @@ public class ColourSchemeLoader newColours[index] = color; } } - + /* * instantiate the colour scheme */ @@ -89,36 +116,11 @@ 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 + jalview.bin.Console.errPrintln("Failed to read colour scheme from " + filePath + + " : " + ex.toString()); } - + return ucs; }