package cryptohelper.data;

public class MappaPosizioni {

    private MappaPosCarattere[] mappa;

    public MappaPosizioni() {
        mappa = new MappaPosCarattere[512];
    }

    public String executeMossa(Mossa mossa, String testoLavoro) {
        throw new UnsupportedOperationException();
    }

    public void inizializza(String testoCifrato) {
        testoCifrato = testoCifrato.toUpperCase(); //trasforma tutti i carratteri in caratteri minuscoli
        for (int i = 0; i < testoCifrato.length(); i++) {
            if (testoCifrato.charAt(i) >= 'A' || testoCifrato.charAt(i) <= 'Z')
                addPos(testoCifrato.charAt(i), i);
        }
    }
    
    public Mossa createMossaUndo(char ch2){
        char ch1 = mappa[(int)ch2].getCarattere();
        mappa[(int)ch2].setIsUpercase(true);
        return new Mossa(ch1, ch2);
    }

   // public char get

    //map(char c) {
        //to-do
 //   }

    public MappaPosCarattere[] getMappa() {
        return mappa;
    }

    public void setMappa(MappaPosCarattere[] mappa) {
        this.mappa = mappa;
    }

    private void addPos(char ch1, int pos) {
        boolean exists = false;
        for (int i = 'A'; i <= 'Z'; i++) {
            if (mappa[i] != null && mappa[i].getCarattere() == ch1) {
                mappa[i].addPosizione(pos);
                exists = true;
            }
        }
        if (!exists) {
            MappaPosCarattere temp = new MappaPosCarattere(ch1);
            mappa[ch1] = temp;
            mappa[ch1].addPosizione(pos);
        }
    }

    @Override
    public String toString() {
        StringBuilder a = new StringBuilder();
        for (int i = 'A'; i <= 'Z'; i++) {
            if (this.mappa[i] != null)
                a.append(mappa[i].toString()).append("\n");
        }
        return a.toString();
    }

}

@@ -128,55 +128,65 @@
 oni(
-) %7B%0D%0A        mappa = new MappaPosCarattere%5B512%5D
+String testoCifrato) %7B%0D%0A        inizializza(testoCifrato)
 ;%0D%0A 
@@ -260,24 +260,26 @@
 oro) %7B%0D%0A
+%0D%0A
         
 throw ne
@@ -274,50 +274,76 @@
     
-throw new UnsupportedOperationException();
+return null;%0D%0A    %7D%0D%0A%0D%0A    private void updateMappa(Mossa mossa) %7B%0D%0A
 %0D%0A  
@@ -393,32 +393,77 @@
 estoCifrato) %7B%0D%0A
+        mappa = new MappaPosCarattere%5B256%5D;%0D%0A
         testoCif
@@ -690,16 +690,18 @@
  %3C= 'Z')
+ %7B
 %0D%0A      
@@ -742,24 +742,39 @@
 At(i), i);%0D%0A
+            %7D%0D%0A
         %7D%0D%0A 
@@ -779,20 +779,16 @@
 %0A    %7D%0D%0A
-    
 %0D%0A    pu
@@ -823,19 +823,86 @@
 har ch2)
+ 
 %7B%0D%0A
+        //System.out.println(%22createMossaUndoUppercase %22 + ch2);%0D%0A
         
@@ -919,24 +919,25 @@
  mappa%5B(int)
+ 
 ch2%5D.getCara
@@ -942,24 +942,62 @@
 rattere();%0D%0A
+        if ((ch1 - 32) == ch2) %7B%0D%0A    
         mapp
@@ -1003,16 +1003,17 @@
 pa%5B(int)
+ 
 ch2%5D.set
@@ -1029,16 +1029,29 @@
 e(true);
+//%0D%0A        %7D
 %0D%0A      
@@ -1094,82 +1094,8 @@
 %0D%0A%0D%0A
-   // public char get%0D%0A%0D%0A    //map(char c) %7B%0D%0A        //to-do%0D%0A //   %7D%0D%0A%0D%0A
     
@@ -1919,16 +1919,18 @@
 != null)
+ %7B
 %0D%0A      
@@ -1948,16 +1948,80 @@
 .append(
+%22Carattere immutabile = %22).append((char) i).append(%22, %22).append(
 mappa%5Bi%5D
@@ -2044,24 +2044,39 @@
 end(%22%5Cn%22);%0D%0A
+            %7D%0D%0A
         %7D%0D%0A 

Revert "Merge origin/master"