Changeset 381

Show
Ignore:
Timestamp:
07/25/10 14:49:26 (2 years ago)
Author:
ke
Message:

Further steps towards loading saved sessions.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • kahina/trunk/src/org/kahina/core/KahinaInstance.java

    r380 r381  
    88import java.io.ObjectOutputStream; 
    99import java.util.Set; 
    10 import java.util.zip.ZipException
     10import java.util.zip.ZipEntry
    1111import java.util.zip.ZipFile; 
    1212 
     
    2727import org.kahina.core.gui.KahinaViewRegistry; 
    2828import org.kahina.core.gui.event.KahinaConsoleLineEvent; 
     29import org.kahina.core.gui.event.KahinaSelectionEvent; 
    2930import org.kahina.core.gui.event.KahinaUpdateEvent; 
    3031import org.kahina.core.util.FileUtilities; 
     
    3738public abstract class KahinaInstance<S extends KahinaState, G extends KahinaGUI, B extends KahinaBridge> implements KahinaListener 
    3839{ 
     40        private static final boolean VERBOSE = true; 
     41         
    3942        protected S state; 
    4043        protected G gui; 
     
    135138        { 
    136139                ZipFile zipFile = null; 
     140                ProgressMonitorWrapper monitor = null; 
    137141                try 
    138142                { 
    139143                        zipFile = new ZipFile(file); 
    140                         ObjectInputStream in = new ObjectInputStream(zipFile.getInputStream(zipFile.getEntry("state"))); 
     144                        ZipEntry entry = zipFile.getEntry("state"); 
     145                        if (VERBOSE) 
     146                        { 
     147                                System.err.println(entry); 
     148                        } 
     149                        ObjectInputStream in = new ObjectInputStream(zipFile.getInputStream(entry)); 
    141150                        state = castToStateType(in.readObject()); 
    142151                        in.close(); 
    143152                        File directory = FileUtilities.createTemporaryDirectory(); 
    144                         FileUtilities.unzipToDirectory(zipFile, directory, "steps/"); 
    145                         // TODO load steps into magazine 
     153                        monitor = gui.createProgressMonitorWrapper("Loading session", null, 0, zipFile.size()); 
     154                        FileUtilities.unzipToDirectory(zipFile, directory, "steps/", monitor); 
     155                        KahinaRunner.getDataManager().load(directory); 
     156                        KahinaRunner.processEvent(new KahinaSelectionEvent(state.getSelectedStepID())); 
    146157                } catch (Exception e) 
    147158                { 
     
    154165                                try 
    155166                                { 
     167                                        monitor.close(); 
    156168                                        zipFile.close(); 
    157169                                } catch (IOException e) 
  • kahina/trunk/src/org/kahina/core/KahinaState.java

    r373 r381  
    77import java.util.Set; 
    88 
     9import org.kahina.core.control.KahinaListener; 
    910import org.kahina.core.data.text.KahinaLineReference; 
    1011import org.kahina.core.data.text.KahinaTextModel; 
     12import org.kahina.core.event.KahinaEvent; 
    1113import org.kahina.core.event.KahinaMessageEvent; 
     14import org.kahina.core.gui.event.KahinaSelectionEvent; 
    1215 
    1316/** 
     
    2124 */ 
    2225 
    23 public class KahinaState implements Serializable 
     26public class KahinaState implements Serializable, KahinaListener 
    2427{    
    2528    /** 
     
    3235    protected Map<Integer,Set<KahinaLineReference>> consoleLines; 
    3336     
    34     public KahinaState(KahinaInstance<?, ?, ?> kahina) 
     37    private int selectedStepID = -1; 
     38     
     39    public KahinaState() 
    3540    { 
    3641        consoleMessages = new KahinaTextModel(); 
    3742        consoleLines = new HashMap<Integer,Set<KahinaLineReference>>(); 
     43        KahinaRunner.getControl().registerListener("select", this); 
    3844    } 
    3945     
    40     public void consoleMessage(int stepID, String message) 
     46    public void processEvent(KahinaEvent event) 
     47    { 
     48        if (event instanceof KahinaSelectionEvent) 
     49        { 
     50                processSelectionEvent((KahinaSelectionEvent) event); 
     51        } 
     52    } 
     53     
     54    private void processSelectionEvent(KahinaSelectionEvent event) 
     55        { 
     56                selectedStepID = event.getSelectedStep(); 
     57        } 
     58     
     59    public int getSelectedStepID() 
     60    { 
     61        return selectedStepID; 
     62    } 
     63 
     64        public void consoleMessage(int stepID, String message) 
    4165    { 
    4266        int lineID = consoleMessages.text.addLine(message); 
  • kahina/trunk/src/org/kahina/core/data/MagazineDataManager.java

    r371 r381  
    3535                return defaultStore.persistSteps(); 
    3636        } 
     37         
     38        @Override 
     39        public void load(File directory) 
     40        { 
     41                defaultStore = MagazineDataStore.load(directory); 
     42        } 
    3743 
    3844} 
  • kahina/trunk/src/org/kahina/core/data/MagazineDataStore.java

    r375 r381  
    2424                        throw new KahinaException("I/O error creating magazine data store.", e); 
    2525                } 
     26        } 
     27         
     28        public MagazineDataStore(ObjectMagazine<KahinaObject> magazine) 
     29        { 
     30                this.magazine = magazine; 
    2631        } 
    2732 
     
    5560        } 
    5661 
     62        public static MagazineDataStore load(File directory) 
     63        { 
     64                return new MagazineDataStore(ObjectMagazine.load(directory, KahinaObject.class)); 
     65        } 
     66 
    5767} 
  • kahina/trunk/src/org/kahina/core/io/magazine/ObjectMagazine.java

    r376 r381  
    170170        } 
    171171 
    172         public static <S> ObjectMagazine<S> load(File folder
     172        public static <S> ObjectMagazine<S> load(File folder, Class<S> objectType
    173173        { 
    174174                Properties properties = readPropertiesFile(folder); 
  • kahina/trunk/src/org/kahina/core/util/FileUtilities.java

    r380 r381  
    146146         * @param directory 
    147147         * @param prefix 
     148         * @param monitor  
    148149         * @throws IOException 
    149150         */ 
    150         public static void unzipToDirectory(ZipFile zipFile, File directory, String prefix) throws IOException 
     151        public static void unzipToDirectory(ZipFile zipFile, File directory, String prefix, ProgressMonitorWrapper monitor) throws IOException 
    151152        { 
    152153                int length = prefix.length(); 
     
    175176                                } 
    176177                        } 
     178                        if (monitor != null) 
     179                        { 
     180                                monitor.increment(); 
     181                        } 
    177182                } 
    178183        } 
  • kahina/trunk/src/org/kahina/lp/LogicProgrammingState.java

    r373 r381  
    3939    protected List<KahinaBreakpoint> failPoints; 
    4040     
    41     public LogicProgrammingState(KahinaInstance<? extends LogicProgrammingState, ?, ?> kahina
     41    public LogicProgrammingState(
    4242    { 
    43         super(kahina); 
     43        super(); 
    4444        stepTree = new KahinaMemTree(); 
    4545        secondaryStepTree = new KahinaMemTree(); 
  • kahina/trunk/src/org/kahina/tralesld/TraleSLDInstance.java

    r370 r381  
    5353        protected TraleSLDState createState() 
    5454        { 
    55                 return new TraleSLDState(this); 
     55                return new TraleSLDState(); 
    5656        } 
    5757 
  • kahina/trunk/src/org/kahina/tralesld/TraleSLDState.java

    r363 r381  
    99public class TraleSLDState extends LogicProgrammingState 
    1010{ 
     11        /** 
     12         *  
     13         */ 
     14        private static final long serialVersionUID = -6388044339949017641L; 
     15 
    1116        KahinaChart chart; 
    1217 
     
    1520        HashMap<Integer, Integer> nodeToEdge; 
    1621 
    17         public TraleSLDState(TraleSLDInstance kahina
     22        public TraleSLDState(
    1823        { 
    19                 super(kahina); 
     24                super(); 
    2025                chart = new KahinaMemChart(); 
    2126                edgeToNode = new HashMap<Integer, Integer>(); 
  • kahina/trunk/src/org/kahina/tralesld/bridge/TraleSLDBridge.java

    r380 r381  
    1515 
    1616import org.kahina.core.KahinaRunner; 
    17 import org.kahina.core.data.KahinaDataHandlingMethod; 
    1817import org.kahina.core.data.chart.KahinaChart; 
    1918import org.kahina.core.gui.event.KahinaChartUpdateEvent; 
  • kahina/trunk/src/org/kahina/tulipa/TulipaInstance.java

    r363 r381  
    3434    protected TulipaState createState() 
    3535    { 
    36         return new TulipaState(this); 
     36        return new TulipaState(); 
    3737    } 
    3838 
  • kahina/trunk/src/org/kahina/tulipa/TulipaState.java

    r363 r381  
    1111    TulipaGrammar grammar; 
    1212     
    13     public TulipaState(TulipaInstance kahina
     13    public TulipaState(
    1414    { 
    15         super(kahina); 
     15        super(); 
    1616        dag = new KahinaMemDAG(); 
    1717        grammar = new TulipaGrammar();