X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FRnamlFile.java;h=2948c92b5234f930d133cd5a844e7ddc047a94b5;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=7b89909b4509c65858c07c54e66b2a5035ed38cd;hpb=8af5dc25549fb2ba801ae889d44744a46dacf04e;p=jalview.git diff --git a/src/jalview/io/RnamlFile.java b/src/jalview/io/RnamlFile.java index 7b89909..2948c92 100644 --- a/src/jalview/io/RnamlFile.java +++ b/src/jalview/io/RnamlFile.java @@ -1,33 +1,39 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 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. + * 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 . + * 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.io; +import jalview.analysis.SecStrConsensus.SimpleBP; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.Annotation; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; +import jalview.util.MessageManager; + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; -import jalview.analysis.SecStrConsensus.SimpleBP; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; +import com.stevesoft.pat.Regex; import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax; import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed; @@ -94,24 +100,29 @@ public class RnamlFile extends AlignFile _parse(); } catch (ExceptionPermissionDenied pdx) { - errormessage = "Couldn't access datasource (" + pdx.getMessage() - + ")"; + errormessage = MessageManager.formatMessage( + "exception.rnaml_couldnt_access_datasource", + new String[] { pdx.getMessage() }); throw new IOException(pdx); } catch (ExceptionLoadingFailed lf) { - errormessage = "Couldn't process data as RNAML file (" - + lf.getMessage() + ")"; + errormessage = MessageManager.formatMessage( + "exception.ranml_couldnt_process_data", + new String[] { lf.getMessage() }); throw new IOException(lf); } catch (ExceptionFileFormatOrSyntax iff) { - errormessage = "Invalid RNAML file (" + iff.getMessage() + ")"; + errormessage = MessageManager.formatMessage( + "exception.ranml_invalid_file", + new String[] { iff.getMessage() }); throw new IOException(iff); } catch (Exception x) { error = true; - errormessage = "Problem parsing data as RNAML (" + x.getMessage() - + ")"; - throw new IOException("Couldn't parse the datasource as RNAML", x); + errormessage = MessageManager.formatMessage( + "exception.ranml_problem_parsing_data", + new String[] { x.getMessage() }); + throw new IOException(errormessage, x); } } @@ -138,6 +149,14 @@ public class RnamlFile extends AlignFile int end = seq.length(); id = current.getName(); + if (id == null || id.trim().length() == 0) + { + id = safeName(getDataName()); + if (result.size() > 1) + { + id += "." + i; + } + } seqs[i] = new Sequence(id, seq, begin, end); seqs[i].setEnd(seqs[i].findPosition(seqs[i].getLength())); @@ -156,8 +175,11 @@ public class RnamlFile extends AlignFile annot[k]).charAt(0), 0f); } - AlignmentAnnotation align = new AlignmentAnnotation("Sec. str.", - current.getID(), ann); + AlignmentAnnotation align = new AlignmentAnnotation( + "Secondary Structure", + current.getID().trim().length() > 0 ? "Secondary Structure for " + + current.getID() + : "", ann); seqs[i].addAlignmentAnnotation(align); seqs[i].setRNA(result.get(i)); @@ -203,13 +225,18 @@ public class RnamlFile extends AlignFile private String safeName(String dataName) { int b = 0; - while ((b = dataName.indexOf("/")) > -1 && b < dataName.length()) + if ((b = dataName.lastIndexOf(".")) > 0) { - dataName = dataName.substring(b + 1).trim(); - + dataName = dataName.substring(0, b - 1); + } + b = 0; + Regex m = new Regex("[\\/]?([-A-Za-z0-9]+)\\.?"); + String mm = dataName; + while (m.searchFrom(dataName, b)) + { + mm = m.stringMatched(); + b = m.matchedTo(); } - int e = (dataName.length() - dataName.indexOf(".")) + 1; - dataName = dataName.substring(1, e).trim(); - return dataName; + return mm; } }