001    package toolbus.tifs;
002    
003    import java.util.ArrayList;
004    import java.util.Iterator;
005    import java.util.List;
006    
007    import aterm.ATerm;
008    import aterm.ATermAppl;
009    import aterm.ATermInt;
010    import aterm.ATermList;
011    
012    public class Tif{
013            private final ATermAppl representation;
014            private final List<Process> processList;
015            
016            public Tif(ATerm t){
017                    representation = (ATermAppl) t;
018                    
019                    processList = new ArrayList<Process>();
020                    initProcessList();
021            }
022            
023            public int getVersion(){
024                    ATermAppl versionTerm = (ATermAppl) representation.getArgument(0);
025                    return ((ATermInt) versionTerm.getArgument(0)).getInt();
026            }
027            
028            public String getPackageName(){
029                    ATermAppl pkgTerm = (ATermAppl) representation.getArgument(1);
030                    return ((ATermAppl) pkgTerm.getArgument(0)).getAFun().getName();
031            }
032            
033            public String getToolName(){
034                    ATermAppl toolTerm = (ATermAppl) representation.getArgument(2);
035                    return ((ATermAppl) toolTerm.getArgument(0)).getAFun().getName();
036            }
037            
038            private void initProcessList(){
039                    ATermList iter = (ATermList) representation.getArgument(3);
040                    while(!iter.isEmpty()){
041                            processList.add(new Process(iter.getFirst()));
042                            iter = iter.getNext();
043                    }
044            }
045            
046            public Iterator<Process> fetchProcessIterator(){
047                    return processList.iterator();
048            }
049            
050            public String toString(){
051                    Iterator<Process> iter;
052                    StringBuilder buf = new StringBuilder();
053                    buf.append("tifs");
054                    buf.append('(');
055                    buf.append("version");
056                    buf.append('(');
057                    buf.append(getVersion());
058                    buf.append(')');
059                    buf.append(',');
060                    buf.append("package");
061                    buf.append('(');
062                    buf.append('"');
063                    buf.append(getPackageName());
064                    buf.append('"');
065                    buf.append(')');
066                    buf.append(',');
067                    buf.append("tool");
068                    buf.append('(');
069                    buf.append('"');
070                    buf.append(getToolName());
071                    buf.append('"');
072                    buf.append(')');
073                    buf.append(',');
074                    buf.append('[');
075                    iter = fetchProcessIterator();
076                    while(iter.hasNext()){
077                            Process process = iter.next();
078                            buf.append(process);
079                            if(iter.hasNext()){
080                                    buf.append(',');
081                            }
082                    }
083                    buf.append(']');
084                    buf.append(')');
085                    
086                    return buf.toString();
087            }
088            
089    }