Merge branch 'LibrAlign' of https://dev.e-taxonomy.eu/git/taxeditor into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.molecular / src / main / java / eu / etaxonomy / taxeditor / molecular / editor / AlignmentEditor.java
index 90b98375553efb432e3050ef541784546a5b1426..12b1d8e5a1301ce91b1f558a23c80a490e2e2d83 100644 (file)
@@ -134,7 +134,7 @@ public class AlignmentEditor extends EditorPart {
 
 
     private MultipleAlignmentsContainer alignmentsContainer = null;
-    private final Map<Integer, SingleReadAlignment> cdmMap = new TreeMap<Integer, SingleReadAlignment>();  //TODO Move this to ContigSequenceDataProvider
+    private final Map<String, SingleReadAlignment> cdmMap = new TreeMap<String, SingleReadAlignment>();  //TODO Move this to ContigSequenceDataProvider
     private boolean dirty = false;
 
     public AlignmentEditor()
@@ -275,12 +275,12 @@ public class AlignmentEditor extends EditorPart {
     }
 
 
-    public boolean hasPherogram(int sequenceID) {
+    public boolean hasPherogram(String sequenceID) {
         return getReadsArea().getDataAreas().getSequenceAreas(sequenceID).size() > PHEROGRAM_AREA_INDEX;
     }
 
 
-    public PherogramArea getPherogramArea(int sequenceID) {
+    public PherogramArea getPherogramArea(String sequenceID) {
         if (hasPherogram(sequenceID)) {
             return (PherogramArea)getReadsArea().getDataAreas().getSequenceAreas(sequenceID).get(PHEROGRAM_AREA_INDEX);
         }
@@ -307,7 +307,7 @@ public class AlignmentEditor extends EditorPart {
 
                        // Add test consensus sequence:
                        AlignmentModel consensusModel = getEditableConsensusArea().getAlignmentModel();
-                       int id = consensusModel.addSequence(CONSENSUS_NAME);
+                       String id = consensusModel.addSequence(CONSENSUS_NAME);
                        Collection<Object> tokens = new ArrayList<Object>();  // First save tokens in a collection to avoid GUI updated for each token.
                        tokens.add(consensusModel.getTokenSet().tokenByRepresentation("A"));
                        tokens.add(consensusModel.getTokenSet().tokenByRepresentation("C"));
@@ -332,7 +332,7 @@ public class AlignmentEditor extends EditorPart {
                                if (pherogramInfo.getPherogram() != null) {
                                    uri = MediaUtils.getFirstMediaRepresentationPart(pherogramInfo.getPherogram()).getUri();
                                }
-                               int id = addRead(DerivateLabelProvider.getDerivateText(pherogramInfo, conversationHolder),
+                               String id = addRead(DerivateLabelProvider.getDerivateText(pherogramInfo, conversationHolder),
                                                uri,
                                                singleReadAlignment.isReverseComplement(),
                                                singleReadAlignment.getEditedSequence(),
@@ -350,7 +350,7 @@ public class AlignmentEditor extends EditorPart {
 
                // Set consensus sequence:
                AlignmentModel consensusProvider = getEditableConsensusArea().getAlignmentModel();
-               int id = consensusProvider.addSequence(CONSENSUS_NAME);
+               String id = consensusProvider.addSequence(CONSENSUS_NAME);
                consensusProvider.insertTokensAt(id, 0, AlignmentModelUtils.charSequenceToTokenList(
                                sequenceNode.getConsensusSequence().getString(), consensusProvider.getTokenSet()));
                //TODO Can the consensus sequence also be null? / Should it be created here, if nothing is in the DB?
@@ -439,9 +439,9 @@ public class AlignmentEditor extends EditorPart {
                // Write single reads:
                stringProvider.setUnderlyingModel(getReadsArea().getAlignmentModel());
                sequenceNode.getSingleReadAlignments().retainAll(cdmMap.values());  // Remove all reads that are not in the alignment anymore.
-               Iterator<Integer> iterator = getReadsArea().getAlignmentModel().sequenceIDIterator();
+               Iterator<String> iterator = getReadsArea().getAlignmentModel().sequenceIDIterator();
                while (iterator.hasNext()) {
-                       int id = iterator.next();
+                       String id = iterator.next();
                        SingleReadAlignment singleRead = cdmMap.get(id);
                        if (singleRead == null) {
                            throw new InternalError("Creating new reads from AlignmentEditor not implemented.");
@@ -587,7 +587,7 @@ public class AlignmentEditor extends EditorPart {
        SelectionModel selection = getReadsArea().getSelection();
        AlignmentModel<?> model = getReadsArea().getAlignmentModel();
        for (int row = selection.getFirstRow(); row < selection.getFirstRow() + selection.getCursorHeight(); row++) {
-                       int sequenceID = getReadsArea().getSequenceOrder().idByIndex(row);
+               String sequenceID = getReadsArea().getSequenceOrder().idByIndex(row);
                        PherogramArea area = getPherogramArea(sequenceID);
                        PherogramAreaModel pherogramAlignmentModel = area.getModel();
                        AlignmentModelUtils.reverseComplement(model, sequenceID,
@@ -608,7 +608,7 @@ public class AlignmentEditor extends EditorPart {
     public <T> void createConsensusSequence() {
         ConsensusSequenceArea area = getConsensusHintDataArea();
         AlignmentModel<T> model = (AlignmentModel<T>)getEditableConsensusArea().getAlignmentModel();
-        int sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
+        String sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
         int length = getReadsArea().getAlignmentModel().getMaxSequenceLength();
 
         Collection<T> tokens = new ArrayList<T>(length);
@@ -630,7 +630,7 @@ public class AlignmentEditor extends EditorPart {
         ConsensusSequenceArea area = getConsensusHintDataArea();
         AlignmentModel<T> model = (AlignmentModel<T>)getEditableConsensusArea().getAlignmentModel();
         TokenSet<T> tokenSet = model.getTokenSet();
-        int sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
+        String sequenceID = model.sequenceIDIterator().next();  // There is always one sequence contained.
         int currentConsensusLength = model.getSequenceLength(sequenceID);
         int overallLength = getReadsArea().getAlignmentModel().getMaxSequenceLength();
 
@@ -670,9 +670,7 @@ public class AlignmentEditor extends EditorPart {
 
        private String newReadName() {
                int index = 1;
-               while (getReadsArea().getAlignmentModel().sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index)
-                               != AlignmentModel.NO_SEQUENCE_FOUND) {
-
+               while (getReadsArea().getAlignmentModel().sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index) != null) {
                        index++;
                }
                return DEFAULT_READ_NAME_PREFIX + index;
@@ -701,7 +699,7 @@ public class AlignmentEditor extends EditorPart {
      * @throws IOException if an error occurred when trying to read the pherogram file
      * @throws UnsupportedChromatogramFormatException if the format of the pherogram file is not supported
      */
-    public int addRead(String name, URI pherogramURI, boolean reverseComplemented, String editedSequence,
+    public String addRead(String name, URI pherogramURI, boolean reverseComplemented, String editedSequence,
             Integer firstSeqPos, Integer leftCutPos, Integer rightCutPos, SingleReadAlignment.Shift[] shifts)
             throws IOException, UnsupportedChromatogramFormatException {
 
@@ -716,7 +714,7 @@ public class AlignmentEditor extends EditorPart {
 
         // Create sequence:
                provider.addSequence(name);
-               int id = provider.sequenceIDByName(name);
+               String id = provider.sequenceIDByName(name);
 
                // Set edited sequence:
                Collection<Object> tokens = null;  // First save tokens in a collection to avoid GUI updated for each token.