BufferedWriter и имя и продолжительность печати, введенные пользователем на JTextArea - PullRequest
0 голосов
/ 15 ноября 2018

Эта функция сообщает, что при нажатии кнопки «Создать отчет» будет сгенерирован текстовый файл. Он будет иметь заголовок из label1, дата и время, а также имя и длительность действия, которые были введены пользователем в jTextArea в форме «имя-активности, длительность, родитель + имя-активности, длительность, родитель», здесь разделитель равен +

else if(str.equals("Generate Report"))
    {
            try {
                FileWriter fw = new FileWriter("D:\\Report.txt");
                BufferedWriter buffer = new BufferedWriter(fw);
                String title="Title: "+lb1.getText();
                DateFormat dateFormat = new SimpleDateFormat("MM/dd/YYYY HH:mm:ss");
                Date date = new Date();
                buffer.write(title);
                buffer.newLine();
                buffer.write("\nDate and Time of Creation: "+dateFormat.format(date));

                buffer.newLine();
                //ENTER YOUR CODE HERE TO PRINT ALL ACTIVITY NAMES & DURATION 



                buffer.write("\nList of activities & their duration: " + ));

                buffer.close();
            }
            catch (Exception e) {
                System.out.println(e);
            }
    }

Node.java // этот класс видит имя и продолжительность действия, а также родителей для каждого узла, введенного пользователем

import java.util.ArrayList;

public class Node {

private String activityName;
private int duration;
private ArrayList<String> parents = new ArrayList<String>();
private boolean end;

public Node() {
    this.activityName = "ExampleActivity";
    this.duration = 1;
    this.parents.add("null");
    this.end = false;
}
public Node(String activityName, int duration, ArrayList<String> parents) {
    this.activityName = activityName;
    this.duration = duration;
    this.parents = (ArrayList<String>) parents.clone();
    this.end = false;
}
public String getActivityName() {
    return activityName;
}
public void setActivityName(String activityName) {
    this.activityName = activityName;
}
public int getDuration() {
    return duration;
}
public void setDuration(int duration) {
    this.duration = duration;
}
public ArrayList<String> getParents() {
    return parents;
}
public void setParents(ArrayList<String> parents) {
    for(int i=0;i<parents.size();i++) {
        this.parents.add(parents.get(i));
    }
}
public boolean getEnd() {
    return end;
}
public void setEnd( ArrayList<Node> nodes  ){
    for( Node node : nodes ) {
        if( node.parents.contains( this.activityName ) ) return;
    }
    this.end = true;
}
@Override
public String toString() {
    return "Node [activityName=" + activityName + ", duration=" + duration
            + ", parents=" + parents + ", end=" + end + "]";
}

}

NodeBuilder.java // Этот класс строит каждый узел

  import java.util.ArrayList;
  import java.util.Scanner;

public class NodeBuilder {
    ArrayList<Node> nodes = new ArrayList<Node>();

ArrayList<String> parents = new ArrayList<String>();

public void add(String input) {

        //Receive user node input
        String activityName;
                    int duration;

        //Setting up new Scanner and delimiter
        Scanner s = new Scanner(input);
        s.useDelimiter(",");

        //Set node variables with user input
        if(s.hasNext()) {
            activityName = s.next();
            //System.out.println(activityName);
        } else
            activityName = "Activity " + "not entered";

        if(s.hasNext()) {
            duration = s.nextInt();
            //System.out.println(duration);
        } else
            duration = 0;


        while (s.hasNext()) {
            parents.add(s.next());
        }

        Node myNode = new Node(activityName, duration, parents);
        nodes.add(myNode);
        parents.clear();
        s.close();
static boolean hasKids(Node node, ArrayList<Node> nodes) {
    for(int i=0;i<nodes.size();i++) {
        if(nodes.get(i).getParents().contains(node.getActivityName())) return true;
    }
    return false;
}

}

Требуемый вывод для текстового файла: https://i.stack.imgur.com/gQBwR.png

...