001    /*
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * ACL Lab, School of Computer Science, Montreal, QC
005     * Date: 2002-8-27
006     * Time: 21:48:13
007     */
008    package EVolve.util;
009    
010    import EVolve.Scene;
011    import java.util.*;
012    import java.io.*;
013    
014    
015    public class PredefinedVisualization {
016    
017        private boolean translated;
018        private String name;
019        private String filename;
020        private ArrayList vizInfoList;
021        private int currentIndex;
022        private boolean specific;
023    
024    
025        public PredefinedVisualization(String configFile,String name) {
026            translated = false;
027            filename = configFile;
028            this.name = name;
029            vizInfoList = new ArrayList();
030            currentIndex = -1;
031            specific = false;
032        }
033    
034        public String getName() {
035            return name;
036        }
037    
038        public void setName(String name) {
039            this.name = name;
040        }
041    
042        public String getFilename() {
043            return filename;
044        }
045    
046        public void setFilename(String filename) {
047            this.filename = filename;
048        }
049    
050        public boolean isTranslated() {
051            return translated & (!specific);
052        }
053    
054        public void setTranslated(boolean translated) {
055            this.translated = translated;
056        }
057    
058        public VizInfo getVizInfo(int index) {
059            return (VizInfo)vizInfoList.get(index);
060        }
061    
062        public void translateVizInfo() {
063            String nextLine;
064            vizInfoList.clear();
065            currentIndex = -1;
066            try {
067                RandomAccessFile file = new RandomAccessFile(filename,"r");
068                file.readLine(); // skip version number
069                file.readLine().trim(); // skip visualization name
070                String dataFile = file.readLine(); //skip data source file name, if any
071                String selFile = file.readLine(); //skip selection file name, if any
072                if (dataFile.indexOf(';') == -1 ) {
073                    // a specific configuration
074                    specific = true;
075                }
076                VisualizationSerializer.v().loadDataAndSelection(dataFile, selFile);
077                nextLine = file.readLine();
078                while (nextLine != null) {
079                    VizInfo vizInfo = new VizInfo();
080                    vizInfo.createFactory(nextLine.trim());
081                    vizInfo.createSubjectDefinition(file.readLine().trim());
082                    String[] dimensionDefs = new String[3];
083                    for (int i=0; i<dimensionDefs.length; i++) {
084                        dimensionDefs[i] = file.readLine().trim();
085                    }
086                    vizInfo.createDimension(dimensionDefs);
087                    vizInfo.createPredictor(file.readLine().trim());
088                    vizInfo.createInterval(file.readLine().trim());
089                    vizInfo.createTitle(file.readLine().trim());
090                    vizInfo.createWindowPosition(file.readLine().trim(),file.readLine().trim(),
091                                                 file.readLine().trim(),file.readLine().trim());
092                    vizInfo.createOptions(file.readLine().trim());
093                    // one visualizatin setting translation ends, try next if there is any
094                    vizInfoList.add(vizInfoList.size(),vizInfo);
095                    nextLine = file.readLine();
096                }
097                file.close();
098                setTranslated(true);
099            } catch (IOException e) {}
100            catch (Exception e) {
101                Scene.showErrorMessage("Error occurred when trying to translate visualization configuration!");
102            }
103        }
104    
105        public boolean hasNext() {
106            if (currentIndex == vizInfoList.size() -1) return false;
107            return true;
108        }
109    
110        public VizInfo getNextVizInfo() {
111            return (VizInfo)vizInfoList.get(++currentIndex);
112        }
113    
114        public void reset() {
115            currentIndex = -1;
116        }
117    
118        public boolean isSpecific() {
119            return specific;
120        }
121    }