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 }