{"action":"created","comment":{"url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/comments/48107022","id":48107022,"diff_hunk":"@@ -0,0 +1,775 @@\n+package ru.unn.agile.MarksAccounting.viewmodel;\n+\n+import ru.unn.agile.MarksAccounting.model.*;\n+import javax.swing.*;\n+import javax.swing.table.DefaultTableModel;\n+import java.io.File;\n+import java.io.FileReader;\n+import java.io.FileWriter;\n+import java.io.IOException;\n+import java.text.DateFormat;\n+import java.text.ParseException;\n+import java.text.SimpleDateFormat;\n+import java.util.ArrayList;\n+import java.util.Date;\n+import java.util.GregorianCalendar;\n+import java.util.Locale;\n+\n+public class ViewModel {\n+    private File currentFile;\n+    private String currentGroup;\n+    private String currentSubject;\n+\n+    private TableOfMarks tableOfMarks;\n+    private DefaultTableModel tableModel;\n+\n+    private boolean dialogIsActive;\n+\n+    private DialogType dialogType;\n+    private String dialogGroup;\n+    private String dialogStudent;\n+    private String dialogSubject;\n+    private String dialogDate;\n+    private String dialogInputTextBox;\n+\n+    private boolean dialogGroupBoxVisible;\n+    private boolean dialogStudentBoxVisible;\n+    private boolean dialogSubjectBoxVisible;\n+    private boolean dialogDateTextBoxVisible;\n+    private boolean dialogInputTextBoxVisible;\n+\n+    public boolean isDialogInputTextBoxVisible() {\n+        return dialogInputTextBoxVisible;\n+    }\n+\n+    public boolean isDialogGroupBoxVisible() {\n+        return dialogGroupBoxVisible;\n+    }\n+\n+    public boolean isDialogStudentBoxVisible() {\n+        return dialogStudentBoxVisible;\n+    }\n+\n+    public boolean isDialogSubjectBoxVisible() {\n+        return dialogSubjectBoxVisible;\n+    }\n+\n+    public boolean isDialogDateTextBoxVisible() {\n+        return dialogDateTextBoxVisible;\n+    }\n+\n+    public void activateDialog() {\n+        dialogIsActive = true;\n+    }\n+\n+    public void returnedToMainForm() {\n+        dialogIsActive = false;\n+    }\n+\n+    public ComboBoxModel<String> getGroupComboBoxModel() {\n+        return new JComboBox<>(this.getGroups()).getModel();\n+    }\n+\n+    public ComboBoxModel<String> getSubjectComboBoxModel() {\n+        return new JComboBox<>(this.getSubjects()).getModel();\n+    }\n+\n+    public ComboBoxModel<String> getStudentComboBoxModel() {\n+        return new JComboBox<>(this.getStudentsForCB()).getModel();\n+    }\n+\n+    public TableOfMarks getTableOfMarks() {\n+        return tableOfMarks;\n+    }\n+\n+    public void setDialogGroup(final String dialogGroup) {\n+        this.dialogGroup = dialogGroup;\n+    }\n+\n+    public void setDialogStudent(final String dialogStudent) {\n+        this.dialogStudent = dialogStudent;\n+    }\n+\n+    public void setDialogSubject(final String dialogSubject) {\n+        this.dialogSubject = dialogSubject;\n+    }\n+\n+    public void setDialogDate(final String dialogDate) {\n+        this.dialogDate = dialogDate;\n+    }\n+\n+    public void setCurrentGroup(final String currentGroup) {\n+        this.currentGroup = currentGroup;\n+    }\n+\n+    public void setCurrentSubject(final String currentSubject) {\n+        this.currentSubject = currentSubject;\n+    }\n+\n+    public void setDialogType(final DialogType dialogType) {\n+        this.dialogType = dialogType;\n+        setDialogFields();\n+    }\n+\n+    private void setDialogFields() {\n+        switch (dialogType) {\n+            case ADD_GROUP:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = false;\n+                dialogStudentBoxVisible = false;\n+                dialogSubjectBoxVisible = false;\n+                dialogInputTextBoxVisible = true;\n+                break;\n+            case ADD_STUDENT:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = false;\n+                dialogSubjectBoxVisible = false;\n+                dialogInputTextBoxVisible = true;\n+                break;\n+            case ADD_SUBJECT:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = false;\n+                dialogSubjectBoxVisible = false;\n+                dialogInputTextBoxVisible = true;\n+                break;\n+            case ADD_MARK:\n+                dialogDateTextBoxVisible = true;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = true;\n+                dialogSubjectBoxVisible = true;\n+                dialogInputTextBoxVisible = true;\n+                break;\n+            case DELETE_GROUP:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = false;\n+                dialogSubjectBoxVisible = false;\n+                dialogInputTextBoxVisible = false;\n+                break;\n+            case DELETE_STUDENT:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = true;\n+                dialogSubjectBoxVisible = false;\n+                dialogInputTextBoxVisible = false;\n+                break;\n+            case DELETE_SUBJECT:\n+                dialogDateTextBoxVisible = false;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = false;\n+                dialogSubjectBoxVisible = true;\n+                dialogInputTextBoxVisible = false;\n+                break;\n+            case DELETE_MARK:\n+                dialogDateTextBoxVisible = true;\n+                dialogGroupBoxVisible = true;\n+                dialogStudentBoxVisible = true;\n+                dialogSubjectBoxVisible = true;\n+                dialogInputTextBoxVisible = false;\n+                break;\n+            default:\n+                setAllInvisible();\n+                break;\n+        }\n+    }\n+\n+    public void setTableOfMarks(final TableOfMarks tableOfMarks) {\n+        this.tableOfMarks = tableOfMarks;\n+    }\n+\n+    private void setAllInvisible() {\n+        dialogDateTextBoxVisible = false;\n+        dialogGroupBoxVisible = false;\n+        dialogStudentBoxVisible = false;\n+        dialogSubjectBoxVisible = false;\n+        dialogInputTextBoxVisible = false;\n+    }\n+\n+    public void setDialogInputTextBox(final String dialogInputTextBox) {\n+        this.dialogInputTextBox = dialogInputTextBox;\n+    }\n+\n+    public DefaultTableModel getTableModel() {\n+        changeTableModel();\n+        return tableModel;\n+    }\n+\n+    private void changeTableModel() {\n+        Student[] students = this.getStudents();\n+        GregorianCalendar[] dates = this.getDates(students);\n+\n+        if (students.length != 0) {\n+            tableModel = new DefaultTableModel(students.length + 1, dates.length + 1);\n+            tableModel.setValueAt(\"Students\", 0, 0);\n+            for (int i = 1; i < students.length + 1; i++) {\n+                tableModel.setValueAt(students[i - 1], i, 0);\n+            }\n+            for (int i = 1; i < dates.length + 1; i++) {\n+                tableModel.setValueAt(formatDate(dates[i - 1]), 0, i);\n+            }\n+            for (int i = 1; i < students.length + 1; i++) {\n+                for (int j = 1; j < dates.length + 1; j++) {\n+                    try {\n+                        tableModel.setValueAt(students[i - 1].getMark(currentSubject,\n+                                dates[j - 1]).toString(), i, j);\n+                    } catch (MarkDoesNotExistException e) {\n+                        tableModel.setValueAt(\"\", i, j);\n+                    }\n+                }\n+            }\n+            tableModel.fireTableStructureChanged();\n+            tableModel.fireTableDataChanged();\n+        }\n+    }\n+\n+    private Student[] getStudents() {\n+        String temp;\n+        if (dialogIsActive) {\n+            temp = dialogGroup;\n+        } else {\n+            temp = currentGroup;\n+        }\n+        try {\n+            Object[] studentsArray = tableOfMarks.getStudents(new Group(temp)).toArray();\n+            Student[] result = new Student[studentsArray.length];\n+            for (int i = 0; i < studentsArray.length; i++) {\n+                result[i] = (Student) studentsArray[i];\n+            }\n+            return result;\n+        } catch (GroupDoesNotExistException e) {\n+            return new Student[0];\n+        }\n+    }\n+\n+    private String[] getStudentsForCB() {\n+        Student[] students = this.getStudents();\n+        String[] result = new String[students.length];\n+        for (int i = 0; i < students.length; i++) {\n+            result[i] = students[i].getName();\n+        }\n+        return result;\n+    }\n+\n+    private GregorianCalendar[] getDates(final Student[] students) {\n+        ArrayList<GregorianCalendar> temp = formTempCalendar(students);\n+        GregorianCalendar[] result = new GregorianCalendar[temp.size()];\n+        for (int i = 0; i < result.length; i++) {\n+            result[i] = temp.get(i);\n+        }\n+        return result;\n+    }\n+\n+    private ArrayList<GregorianCalendar> formTempCalendar(final Student[] students) {\n+        ArrayList<GregorianCalendar> temp = new ArrayList<GregorianCalendar>();\n+        int size = -1;\n+        for (int i = 1; i < students.length; i++) {\n+            int k = 0;\n+            for (int j = 0; j < students[i].getMarks().size(); j++) {\n+                if (size == -1) {\n+                    temp.add(students[i].getMarks().get(j).getDate());\n+                    size = 1;\n+                } else {\n+                    while (k < temp.size()\n+                            && temp.get(k).before(students[i].getMarks().get(j).getDate())) {\n+                        k++;\n+                    }\n+                    if (k == temp.size()\n+                            || !temp.get(k).equals(students[i].getMarks().get(j).getDate())) {\n+                        temp.add(students[i].getMarks().get(j).getDate());\n+                    }\n+                }\n+            }\n+        }\n+        return temp;\n+    }\n+\n+    public ViewModel() {\n+        currentGroup = \"\";\n+        currentSubject = \"\";\n+        tableOfMarks = new TableOfMarks();\n+        tableModel = new DefaultTableModel(0, 0);\n+        dialogIsActive = false;\n+    }\n+\n+    public boolean change() {\n+        if (\"@Mark\".equals(dialogInputTextBox) || \"@Group\".equals(dialogInputTextBox)\n+                || \"@Subjects\".equals(dialogInputTextBox)\n+                || \"@Student\".equals(dialogInputTextBox)) {\n+            return false;\n+        }\n+        switch (dialogType) {\n+            case ADD_GROUP:\n+                if (!inputIsEmpty()) {\n+                    return addGroup();\n+                }\n+                break;\n+            case ADD_STUDENT:\n+                if (!inputIsEmpty()) {\n+                    return addStudent();\n+                }\n+                break;\n+            case ADD_SUBJECT:\n+                if (!inputIsEmpty()) {\n+                    return addSubject();\n+                }\n+                break;\n+            case ADD_MARK:\n+                if (!inputIsEmpty()) {\n+                    return addMark();\n+                }\n+                break;\n+            case DELETE_GROUP:\n+                return deleteGroup();\n+            case DELETE_STUDENT:\n+                return deleteStudent();\n+            case DELETE_SUBJECT:\n+                return deleteSubject();\n+            case DELETE_MARK:\n+                return deleteMark();\n+            default:\n+                return false;\n+        }\n+        return false;\n+    }\n+\n+    private boolean addGroup() {\n+        try {\n+            tableOfMarks.addGroup(new Group(dialogInputTextBox));\n+            return true;\n+        } catch (GroupAlreadyExistsException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean addStudent() {\n+        try {\n+            tableOfMarks.addStudent(new Group(dialogGroup),\n+                    new Student(dialogInputTextBox));\n+            return true;\n+        } catch (NullPointerException e) {\n+            return false;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (StudentAlreadyExistsException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean addSubject() {\n+        try {\n+            tableOfMarks.addAcademicSubject(new Group(dialogGroup),\n+                    dialogInputTextBox);\n+            return true;\n+        } catch (NullPointerException e) {\n+            return false;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (SubjectAlreadyExistsException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean addMark() {\n+        for (int i = 0; i < dialogInputTextBox.length(); i++) {\n+            if (dialogInputTextBox.charAt(i) < '0' || dialogInputTextBox.charAt(i) > '9') {\n+                return false;\n+            }\n+        }\n+        int tempMark;\n+        try {\n+            tempMark = Integer.parseInt(dialogInputTextBox);\n+        } catch (NumberFormatException e) {\n+            return false;\n+        }\n+        GregorianCalendar tempDate = parseDate(dialogDate);\n+        if (tempDate.equals(new GregorianCalendar(0, 0, 0))) {\n+            return false;\n+        }\n+        try {\n+            tableOfMarks.addNewMark(new Mark(tempMark, dialogSubject, tempDate),\n+                    new Student(dialogStudent), new Group(dialogGroup));\n+            return true;\n+        } catch (AcademicSubjectDoesNotExistException e) {\n+            return false;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (StudentDoesNotExistException e) {\n+            return false;\n+        } catch (NoMarkCorrectionException e) {\n+            return false;\n+        } catch (MarkIsNotPositiveException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean deleteGroup() {\n+        try {\n+            tableOfMarks.deleteGroup(new Group(dialogGroup));\n+            return true;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean deleteStudent() {\n+        try {\n+            tableOfMarks.deleteStudent(new Group(dialogGroup), new Student(dialogStudent));\n+            return true;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (StudentDoesNotExistException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean deleteSubject() {\n+        try {\n+            tableOfMarks.deleteAcademicSubject(new Group(dialogGroup), dialogSubject);\n+            return true;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (AcademicSubjectDoesNotExistException e) {\n+            return false;\n+        }\n+    }\n+\n+    private boolean deleteMark() {\n+        GregorianCalendar tempDate = parseDate(dialogDate);\n+        if (tempDate.equals(new GregorianCalendar(0, 0, 0))) {\n+            return false;\n+        }\n+        try {\n+            tableOfMarks.deleteMark(new Group(dialogGroup), new Student(dialogStudent),\n+                    dialogSubject, tempDate);\n+            return true;\n+        } catch (AcademicSubjectDoesNotExistException e) {\n+            return false;\n+        } catch (GroupDoesNotExistException e) {\n+            return false;\n+        } catch (StudentDoesNotExistException e) {\n+            return false;\n+        } catch (MarkDoesNotExistException e) {\n+            return false;\n+        }\n+    }\n+\n+    public GregorianCalendar parseDate(final String strDate) {\n+        DateFormat dateFormat = new SimpleDateFormat(\"dd-MM-yyyy\", Locale.ENGLISH);\n+        Date date;\n+        try {\n+            date = dateFormat.parse(strDate);\n+        } catch (ParseException e) {\n+            return new GregorianCalendar(0, 0, 0);\n+        }\n+        GregorianCalendar tempDate = new GregorianCalendar();\n+        tempDate.setTime(date);\n+        return tempDate;\n+    }\n+\n+    private boolean inputIsEmpty() {\n+        char[] temp = dialogInputTextBox.toCharArray();\n+        for (int i = 0; i < temp.length; i++) {\n+            if (temp[i] != ' ') {\n+                return false;\n+            }\n+        }\n+        return true;\n+    }\n+\n+    private int getNumberOfGroups() {\n+        return tableOfMarks.getGroups().size();\n+    }\n+\n+    private String[] getGroups() {\n+        String[] result = new String[getNumberOfGroups()];\n+        for (int i = 0; i < this.getNumberOfGroups(); i++) {\n+            result[i] = tableOfMarks.getGroups().get(i).getNumber();\n+        }\n+        return result;\n+    }\n+\n+    private String[] getSubjects() {\n+        String[] result = new String[getNumberOfSubjects()];\n+        String temp;\n+        if (dialogIsActive) {\n+            temp = dialogGroup;\n+        } else {\n+            temp = currentGroup;\n+        }\n+        for (int i = 0; i < this.getNumberOfSubjects(); i++) {\n+            result[i] = tableOfMarks.getAcademicSubjects(new Group(temp)).get(i);\n+        }\n+        return result;\n+    }\n+\n+    private int getNumberOfSubjects() {\n+        try {\n+            if (dialogIsActive) {\n+                return tableOfMarks.getAcademicSubjects(new Group(dialogGroup)).size();\n+            }\n+            return tableOfMarks.getAcademicSubjects(new Group(currentGroup)).size();\n+        } catch (GroupDoesNotExistException e) {\n+            return 0;\n+        }\n+    }\n+\n+    public void save() {\n+        try {\n+            if (currentFile == null) {\n+                saveAs();\n+            } else {\n+                FileWriter fw = new FileWriter(currentFile);\n+                if (!writeFile(fw)) {\n+                    throw new IOException();\n+                }\n+                fw.close();\n+            }\n+        } catch (IOException e) {\n+            JOptionPane.showMessageDialog(null, \"Can't save file!\");\n+        }\n+    }\n+\n+    public void saveAs() {\n+        try {\n+            JFileChooser fileChooser = new JFileChooser();\n+            if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {\n+                currentFile = fileChooser.getSelectedFile();\n+                if (!currentFile.exists()) {\n+                    currentFile.createNewFile();\n+                }\n+                FileWriter fw = new FileWriter(currentFile);\n+                if (!writeFile(fw)) {\n+                    throw new IOException();\n+                }\n+                fw.close();\n+            }\n+        } catch (IOException e) {\n+            JOptionPane.showMessageDialog(null, \"Can't save file!\");\n+        }\n+    }\n+\n+    public boolean writeFile(final FileWriter fw) {\n+        try {\n+            ArrayList<Group> tempGroups = tableOfMarks.getGroups();\n+            for (int i = 0; i < tempGroups.size(); i++) {\n+                fw.write(\"@Group\\n\");\n+                fw.write(tempGroups.get(i).getNumber());\n+                fw.write(\"\\n\");\n+                if (!writeSubjects(fw, tempGroups.get(i))) {\n+                    return false;\n+                }\n+                if (!writeStudents(fw, tempGroups.get(i))) {\n+                    return false;\n+                }","path":"code/eremeeva-alexandra/ViewModel/src/main/java/ru/unn/agile/MarksAccounting/viewmodel/ViewModel.java","position":565,"original_position":565,"commit_id":"259e1ecf3ddce906e08ed3a121b08c90d275d0db","original_commit_id":"259e1ecf3ddce906e08ed3a121b08c90d275d0db","user":{"login":"gdmit","id":4019831,"avatar_url":"https://avatars.githubusercontent.com/u/4019831?v=3","gravatar_id":"","url":"https://api.github.com/users/gdmit","html_url":"https://github.com/gdmit","followers_url":"https://api.github.com/users/gdmit/followers","following_url":"https://api.github.com/users/gdmit/following{/other_user}","gists_url":"https://api.github.com/users/gdmit/gists{/gist_id}","starred_url":"https://api.github.com/users/gdmit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdmit/subscriptions","organizations_url":"https://api.github.com/users/gdmit/orgs","repos_url":"https://api.github.com/users/gdmit/repos","events_url":"https://api.github.com/users/gdmit/events{/privacy}","received_events_url":"https://api.github.com/users/gdmit/received_events","type":"User","site_admin":false},"body":"Две одинаковые проверки?","created_at":"2015-12-20T19:16:45Z","updated_at":"2015-12-20T19:16:45Z","html_url":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162#discussion_r48107022","pull_request_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162","_links":{"self":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/comments/48107022"},"html":{"href":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162#discussion_r48107022"},"pull_request":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162"}}},"pull_request":{"url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162","id":53750532,"html_url":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162","diff_url":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162.diff","patch_url":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162.patch","issue_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/162","number":162,"state":"open","locked":false,"title":"Еремеева - Лабораторная работа #2","user":{"login":"eremeeva-alexandra","id":14943415,"avatar_url":"https://avatars.githubusercontent.com/u/14943415?v=3","gravatar_id":"","url":"https://api.github.com/users/eremeeva-alexandra","html_url":"https://github.com/eremeeva-alexandra","followers_url":"https://api.github.com/users/eremeeva-alexandra/followers","following_url":"https://api.github.com/users/eremeeva-alexandra/following{/other_user}","gists_url":"https://api.github.com/users/eremeeva-alexandra/gists{/gist_id}","starred_url":"https://api.github.com/users/eremeeva-alexandra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eremeeva-alexandra/subscriptions","organizations_url":"https://api.github.com/users/eremeeva-alexandra/orgs","repos_url":"https://api.github.com/users/eremeeva-alexandra/repos","events_url":"https://api.github.com/users/eremeeva-alexandra/events{/privacy}","received_events_url":"https://api.github.com/users/eremeeva-alexandra/received_events","type":"User","site_admin":false},"body":null,"created_at":"2015-12-15T19:33:40Z","updated_at":"2015-12-20T19:16:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3215f6ea818ecf0c3c90104539d776bf98ab73c2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162/commits","review_comments_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162/comments","review_comment_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/comments{/number}","comments_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/162/comments","statuses_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/statuses/259e1ecf3ddce906e08ed3a121b08c90d275d0db","head":{"label":"eremeeva-alexandra:eremeeva-alexandra-lab2","ref":"eremeeva-alexandra-lab2","sha":"259e1ecf3ddce906e08ed3a121b08c90d275d0db","user":{"login":"eremeeva-alexandra","id":14943415,"avatar_url":"https://avatars.githubusercontent.com/u/14943415?v=3","gravatar_id":"","url":"https://api.github.com/users/eremeeva-alexandra","html_url":"https://github.com/eremeeva-alexandra","followers_url":"https://api.github.com/users/eremeeva-alexandra/followers","following_url":"https://api.github.com/users/eremeeva-alexandra/following{/other_user}","gists_url":"https://api.github.com/users/eremeeva-alexandra/gists{/gist_id}","starred_url":"https://api.github.com/users/eremeeva-alexandra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eremeeva-alexandra/subscriptions","organizations_url":"https://api.github.com/users/eremeeva-alexandra/orgs","repos_url":"https://api.github.com/users/eremeeva-alexandra/repos","events_url":"https://api.github.com/users/eremeeva-alexandra/events{/privacy}","received_events_url":"https://api.github.com/users/eremeeva-alexandra/received_events","type":"User","site_admin":false},"repo":{"id":44915680,"name":"agile-course-practice","full_name":"eremeeva-alexandra/agile-course-practice","owner":{"login":"eremeeva-alexandra","id":14943415,"avatar_url":"https://avatars.githubusercontent.com/u/14943415?v=3","gravatar_id":"","url":"https://api.github.com/users/eremeeva-alexandra","html_url":"https://github.com/eremeeva-alexandra","followers_url":"https://api.github.com/users/eremeeva-alexandra/followers","following_url":"https://api.github.com/users/eremeeva-alexandra/following{/other_user}","gists_url":"https://api.github.com/users/eremeeva-alexandra/gists{/gist_id}","starred_url":"https://api.github.com/users/eremeeva-alexandra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eremeeva-alexandra/subscriptions","organizations_url":"https://api.github.com/users/eremeeva-alexandra/orgs","repos_url":"https://api.github.com/users/eremeeva-alexandra/repos","events_url":"https://api.github.com/users/eremeeva-alexandra/events{/privacy}","received_events_url":"https://api.github.com/users/eremeeva-alexandra/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/eremeeva-alexandra/agile-course-practice","description":"Проект-шаблон для выполнения лабораторных работ по курсу Agile Development","fork":true,"url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice","forks_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/forks","keys_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/teams","hooks_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/hooks","issue_events_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/issues/events{/number}","events_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/events","assignees_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/assignees{/user}","branches_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/branches{/branch}","tags_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/tags","blobs_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/git/refs{/sha}","trees_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/statuses/{sha}","languages_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/languages","stargazers_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/stargazers","contributors_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/contributors","subscribers_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/subscribers","subscription_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/subscription","commits_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/commits{/sha}","git_commits_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/git/commits{/sha}","comments_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/comments{/number}","issue_comment_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/issues/comments{/number}","contents_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/contents/{+path}","compare_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/merges","archive_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/downloads","issues_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/issues{/number}","pulls_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/pulls{/number}","milestones_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/milestones{/number}","notifications_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/labels{/name}","releases_url":"https://api.github.com/repos/eremeeva-alexandra/agile-course-practice/releases{/id}","created_at":"2015-10-25T15:23:50Z","updated_at":"2015-10-25T15:23:50Z","pushed_at":"2015-12-16T08:42:02Z","git_url":"git://github.com/eremeeva-alexandra/agile-course-practice.git","ssh_url":"git@github.com:eremeeva-alexandra/agile-course-practice.git","clone_url":"https://github.com/eremeeva-alexandra/agile-course-practice.git","svn_url":"https://github.com/eremeeva-alexandra/agile-course-practice","homepage":"","size":1557,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"UNN-VMK-Software:master","ref":"master","sha":"cc64728bd2d6ce1fddbc6aea1404a69cf4664869","user":{"login":"UNN-VMK-Software","id":5463209,"avatar_url":"https://avatars.githubusercontent.com/u/5463209?v=3","gravatar_id":"","url":"https://api.github.com/users/UNN-VMK-Software","html_url":"https://github.com/UNN-VMK-Software","followers_url":"https://api.github.com/users/UNN-VMK-Software/followers","following_url":"https://api.github.com/users/UNN-VMK-Software/following{/other_user}","gists_url":"https://api.github.com/users/UNN-VMK-Software/gists{/gist_id}","starred_url":"https://api.github.com/users/UNN-VMK-Software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UNN-VMK-Software/subscriptions","organizations_url":"https://api.github.com/users/UNN-VMK-Software/orgs","repos_url":"https://api.github.com/users/UNN-VMK-Software/repos","events_url":"https://api.github.com/users/UNN-VMK-Software/events{/privacy}","received_events_url":"https://api.github.com/users/UNN-VMK-Software/received_events","type":"Organization","site_admin":false},"repo":{"id":44518750,"name":"agile-course-practice","full_name":"UNN-VMK-Software/agile-course-practice","owner":{"login":"UNN-VMK-Software","id":5463209,"avatar_url":"https://avatars.githubusercontent.com/u/5463209?v=3","gravatar_id":"","url":"https://api.github.com/users/UNN-VMK-Software","html_url":"https://github.com/UNN-VMK-Software","followers_url":"https://api.github.com/users/UNN-VMK-Software/followers","following_url":"https://api.github.com/users/UNN-VMK-Software/following{/other_user}","gists_url":"https://api.github.com/users/UNN-VMK-Software/gists{/gist_id}","starred_url":"https://api.github.com/users/UNN-VMK-Software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UNN-VMK-Software/subscriptions","organizations_url":"https://api.github.com/users/UNN-VMK-Software/orgs","repos_url":"https://api.github.com/users/UNN-VMK-Software/repos","events_url":"https://api.github.com/users/UNN-VMK-Software/events{/privacy}","received_events_url":"https://api.github.com/users/UNN-VMK-Software/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/UNN-VMK-Software/agile-course-practice","description":"Проект-шаблон для выполнения лабораторных работ по курсу Agile Development","fork":false,"url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice","forks_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/forks","keys_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/keys{/key_id}","collaborators_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/teams","hooks_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/hooks","issue_events_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/events{/number}","events_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/events","assignees_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/assignees{/user}","branches_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/branches{/branch}","tags_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/tags","blobs_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/git/refs{/sha}","trees_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/git/trees{/sha}","statuses_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/statuses/{sha}","languages_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/languages","stargazers_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/stargazers","contributors_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/contributors","subscribers_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/subscribers","subscription_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/subscription","commits_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/commits{/sha}","git_commits_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/git/commits{/sha}","comments_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/comments{/number}","issue_comment_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/comments{/number}","contents_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/contents/{+path}","compare_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/compare/{base}...{head}","merges_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/merges","archive_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/downloads","issues_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues{/number}","pulls_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls{/number}","milestones_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/milestones{/number}","notifications_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/labels{/name}","releases_url":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/releases{/id}","created_at":"2015-10-19T07:42:22Z","updated_at":"2015-10-29T19:46:12Z","pushed_at":"2015-12-20T19:13:08Z","git_url":"git://github.com/UNN-VMK-Software/agile-course-practice.git","ssh_url":"git@github.com:UNN-VMK-Software/agile-course-practice.git","clone_url":"https://github.com/UNN-VMK-Software/agile-course-practice.git","svn_url":"https://github.com/UNN-VMK-Software/agile-course-practice","homepage":"","size":5977,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":45,"mirror_url":null,"open_issues_count":20,"forks":45,"open_issues":20,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162"},"html":{"href":"https://github.com/UNN-VMK-Software/agile-course-practice/pull/162"},"issue":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/162"},"comments":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/issues/162/comments"},"review_comments":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162/comments"},"review_comment":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/pulls/162/commits"},"statuses":{"href":"https://api.github.com/repos/UNN-VMK-Software/agile-course-practice/statuses/259e1ecf3ddce906e08ed3a121b08c90d275d0db"}}}}