FileNode.java

package edu.udel.cis.vsl.tass.ast.impl;

import edu.udel.cis.vsl.tass.ast.IF.ASTNodeIF;
import edu.udel.cis.vsl.tass.ast.IF.FileNodeIF;

import java.util.NoSuchElementException;
import java.util.List;
import java.util.ArrayList;

import java.io.File;

public class FileNode extends ASTNode implements FileNodeIF {

    private File file;

    private boolean isSystem;

    private List<String> fileContents;

    public FileNode(long id) {
        super(id);
    }
        
    public FileNode(long id, File file, boolean isSystem, String source) {
        super(id);

        this.file = file;
        this.isSystem = isSystem;
		setContents(source);
    }

    public void setFileName(String file) {
        this.file = new File(file);
    }

    public void setFile(File file) {
        this.file=file;
    }
    
    public void setIsSystem(boolean isSystem) {
        this.isSystem = isSystem;
    }

    public void setContents(String source) {
		this.fileContents = new ArrayList<String>();
		String[] lines = source.split("\n");
		for (int i=0;i<lines.length;i++) {
			this.fileContents.add(lines[i]);
		}
    }

    public File getFile() {
        return file;
    }

    public boolean isSystem() {
        return isSystem;
    }

    public List<String> getContents() {
        return fileContents;
    }

    @Override
    public ASTNodeIF child(int index) throws NoSuchElementException {
        throw new NoSuchElementException("Node " + id()
                                         + " does not have a child with index " + index + ".");
    }

    @Override
    public void setChild(int i, ASTNodeIF child) throws NoSuchElementException {
        throw new NoSuchElementException("Node " + id()
                                         + " does not have a child with index " + i + ".");
    }

    @Override
    public int numChildren() {
        return 0;
    }

    @Override
    protected String nodeType() {
        return "File";
    }
}