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 }